DeepSeek API 的 JSON 输出与 Function Calling 怎么用:参数、示例与 strict 模式

DeepSeek API 怎么让模型输出合法 JSON、怎么做 Function Calling(工具调用)?按官方 JSON Output 与 Tool Calls 文档(2026-10-24 查询)讲清参数、注意事项、完整调用流程和 strict 模式支持的 Schema,附常见坑。

NNathaniel bigo··原创首发·AI 辅助撰写
10 分钟读完
资料核对于 2026-10-24 · 依据官方文档与公开资料整理 其他 账号
本文根据 DeepSeek 官方 JSON Output 与 Tool Calls 文档整理,资料核对于 2026-10-24。Beta 功能可能变化,以官方文档为准。图为本站整理的示意图。

适用于谁

  • 想让模型输出可以直接 json.loads 的结果,写数据提取、分类、表单解析的开发者;
  • 想让模型调用自己的函数(查天气、查订单、查数据库)的人;
  • 在做 Agent,被「工具调用返回 400」卡住的人。

结论先说

  1. 两个模型都支持 JSON Output 和 Tool Calls(官方价格页功能表)。
  2. JSON Output 的做法:response_format 设为 {"type": "json_object"},提示词里必须有「json」字样并给出期望格式的样例,max_tokens 要够大。官方提醒:API 有概率返回空的 content,可以尝试修改提示词缓解。
  3. Tool Calls 的关键:模型不会真的执行函数。它只告诉你「要调哪个函数、参数是什么」,函数由你来写、你来执行,再把结果交回去。
  4. 带 tools 的思考模式:历史的 reasoning_content 必须完整回传,否则 400,见 /guides/deepseek-thinking-mode-reasoning-effort。

JSON Output 与 Tool Calls 怎么选

图:本站根据 DeepSeek 官方 JSON Output 与 Tool Calls 文档整理的示意图

一、JSON Output

要点(官方注意事项)

  • 设置 response_format={'type': 'json_object'};
  • 用户传入的 system 或 user 提示词里必须含有「json」字样,并给出希望输出的 JSON 格式样例,来指导模型输出合法 JSON;
  • 合理设置 max_tokens,防止 JSON 被中途截断;
  • 可能返回空 content,可以尝试修改提示词。

官方示例(Python)

python
import json
from openai import OpenAI

client = OpenAI(api_key="<你的 Key>", base_url="https://api.deepseek.com")

system_prompt = """
The user will provide some exam text. Please parse the "question" and "answer" and output them in JSON format.

EXAMPLE INPUT:
Which is the highest mountain in the world? Mount Everest.

EXAMPLE JSON OUTPUT:
{
    "question": "Which is the highest mountain in the world?",
    "answer": "Mount Everest"
}
"""
user_prompt = "Which is the longest river in the world? The Nile River."

response = client.chat.completions.create(
    model="deepseek-flash",
    messages=[{"role": "system", "content": system_prompt},
              {"role": "user", "content": user_prompt}],
    response_format={'type': 'json_object'},
)
print(json.loads(response.choices[0].message.content))

模型会输出 {"question": "Which is the longest river in the world?", "answer": "The Nile River"}。

实用建议

  • 解析前先判断 content 是否为空,为空就重试(可以换个说法再发一次);
  • 解析失败时记录原始返回,便于排查;
  • 字段多时在样例里把每个字段都写出来,比只写文字描述更稳。更通用的结构化输出做法见 /guides/llm-json-structured-output-reliable。

二、Function Calling(Tool Calls)

Function Calling 的 4 个来回

图:本站根据 DeepSeek 官方 Tool Calls 文档整理的示意图

官方示例的流程

官方示例以「获取天气」为例:

  1. 用户问「杭州现在天气怎么样」,你的请求里带上 tools(函数名 get_weather,参数 location);
  2. 模型返回 tool_calls,内容是调用 get_weather({location: 'Hangzhou'});
  3. 你自己执行 get_weather,把结果以 role: "tool" 的消息(带上 tool_call_id)追加到 messages,再请求一次;
  4. 模型返回自然语言,比如「杭州现在的气温是 24°C」。

官方特别注明:示例里 get_weather 的功能要由用户提供,模型本身不执行具体函数。

非思考模式下,官方示例这样关闭思考:extra_body={"thinking": {"type": "disabled"}}。思考模式下同样支持工具调用,模型可以在给出最终答案前多轮思考与调用工具;此时要把含 reasoning_content 的整条 message 追加回 messages(messages.append(response.choices[0].message))。

对话中间插入工具调用

有些 Agent 场景要把「不是模型生成的」工具调用及结果插入对话历史的中间。官方说明:Anthropic API 与 Responses API 支持,也支持在中间插入 system 消息;Chat Completion 接口不支持在中间插入工具调用,但支持插入 system 消息。

三、strict 模式(Beta)

strict 模式下,模型输出函数调用时会严格遵循你定义的 JSON Schema,确保输出符合定义。要使用它,需要:

  1. 把 base_url 设为 https://api.deepseek.com/beta 来开启 Beta;
  2. tools 列表里所有 function 都要设置 strict: true;
  3. 服务端会校验你的 Schema,不符合规范或包含不支持的类型会返回错误信息。

官方列出的 strict 模式支持的类型:object、string、number、integer、boolean、array、enum、anyOf。几条限制:

  • object:所有属性都要设为 required,且 additionalProperties 必须为 false;
  • string:支持 pattern 和 format(email、hostname、ipv4、ipv6、uuid),不支持 minLength、maxLength;
  • number / integer:支持 const、default、minimum、maximum、exclusiveMinimum、exclusiveMaximum、multipleOf;
  • array:不支持 minItems、maxItems;
  • 还支持 enum、anyOf,以及用 $def 与 $ref 复用和定义递归结构。

四、常见坑

现象原因与办法
解析 JSON 失败,内容被截断max_tokens 太小,调大
content 是空的官方说有概率发生;换个提示词重试
工具调用后第二次请求 400思考模式下没有完整回传 reasoning_content(带 tools 的请求,之后所有请求都要回传)
strict 报 Schema 错误检查是否用了不支持的参数(如 minLength)、是否缺 required 或 additionalProperties: false
想在 Chat Completion 里中途插入工具调用不支持,改用 Anthropic 或 Responses 接口

其他报错的含义见 /guides/deepseek-api-error-codes。

常见问题

Q:JSON Output 和 strict 工具调用是同一回事吗?

不是。前者约束的是回答文本的 JSON 合法性;后者约束的是函数调用的参数符合 Schema。

Q:Claude 的 tool use 能参考吗?

概念相同,本站有 /guides/claude-tool-use-basics;DeepSeek 的 Anthropic 兼容接口里 tools、tool_choice 大部分被支持(disable_parallel_tool_use 被忽略)。

Q:Python 完整入门在哪?

见 /guides/deepseek-api-python-quickstart。

想同时用 ChatGPT、Claude 等海外模型做对比?本站提供 AI 会员充值,ChatGPT 可看 Plus 充值。

参考资料

  • DeepSeek API 文档:JSON Output — https://api-docs.deepseek.com/zh-cn/guides/json_mode
  • DeepSeek API 文档:Tool Calls — https://api-docs.deepseek.com/zh-cn/guides/tool_calls
  • DeepSeek API 文档:思考模式 — https://api-docs.deepseek.com/zh-cn/guides/thinking_mode
  • DeepSeek API 文档:模型 & 价格 — https://api-docs.deepseek.com/zh-cn/quick_start/pricing
需要开通或续费?AI 会员充值与全部商品 →

Nathaniel 的更多内容

  1. 01

    DeepSeek 和 Claude 怎么选:按两家官方页面对照入口、套餐、API 规格与价格

    DeepSeek 和 Claude 怎么选?事实只用两家官方页面(2026-10-24 查询):使用入口与套餐、API 的上下文、最大输出、图片输入和每百万 token 价格对照,并按用途给出选择思路;不比较谁更强。

    Claude其他 AI 工具0
  2. 02

    DeepSeek 提示词怎么写:官方提示库的 13 类场景、官方文档里的硬性规则与可套用模板

    DeepSeek 提示词怎么写?本文按官方提示库的 13 类场景(2026-10-24 查询)和官方 API 文档里与提示词有关的规则(JSON 输出、多轮对话、system 提示词、前缀续写、思考模式参数),给出六项检查和可套用的模板。

    其他 AI 工具0
  3. 03

    DeepSeek R1 是什么、什么时候发布、现在还能用吗:从 R1 到 R1-0528 再到 V3.1、V4 的官方脉络

    DeepSeek R1 是什么时候发布的、现在还能用吗?按官方公告与更新日志(2026-10-24 查询)梳理:2025 年 1 月 20 日发布 R1,5 月 28 日更新 R1-0528,之后并入 V3.1 的思考模式;API 名 deepseek-reasoner 已预告停用。

    其他 AI 工具0
  4. 04

    DeepSeek V4 正式版有什么变化:从预览版到 V4 Pro 正式版,Agent、Responses API 与峰谷定价

    DeepSeek V4 正式版和预览版相比有什么变化?按官方公告与更新日志(2026-10-24 查询)梳理:4 月预览版规格、7 月 Flash 正式版、8 月 13 日 V4 Pro 正式版新增的 Agent 能力、Responses API、三档思考强度和峰谷定价。

    其他 AI 工具0
  5. 05

    DeepSeek V4.1 Flash 是什么:0731、V4.1、1017 三个版本的区别、结构与怎么调用

    DeepSeek V4.1 Flash 是什么?按官方公告与更新日志(2026-10-24 查询)梳理 0731、V4.1、1017 三个版本的区别、552B 参数 MoE 结构、原生多模态,以及 API 模型名 deepseek-flash。

    其他 AI 工具0
  6. 06

    DeepSeek 怎么注册、登录不了怎么办:验证码、微信与 Google 登录、环境异常和账号停用的官方说法

    DeepSeek 怎么注册、登录不了怎么办?按官方常见问题(2026-10-24 查询)逐项整理:收不到验证码、微信 / Google 登录的地区限制、「运行环境异常」、邮箱域名不支持、改绑手机号微信、改密码和账号停用申诉。

    其他 AI 工具0

同模型

  1. 01

    DeepSeek 手机 App 怎么下载和用:官方安装途径、系统要求与对话管理操作

    DeepSeek 手机 App 怎么下载、怎么用?按官方下载页、App Store 页面和官方常见问题(2026-10-24 查询)整理:iPhone 与 Android 的官方安装途径、iOS 15.0 要求、对话重命名置顶删除分享的操作,以及同步与登出。

    其他 AI 工具0
  2. 02

    DeepSeek 能识别图片吗、多模态现状如何:按官方更新日志梳理识图与「没有生图」的事实

    DeepSeek 能识别图片吗?为什么早期不支持多模态?按官方更新日志(2026-10-24 查询)梳理:2026 年 8 月出现视觉理解实验模型,9 月 V4.1 Flash 原生支持多模态,Pro 不支持;输出仍只有文本,没有生图。

    其他 AI 工具0
  3. 03

    DeepSeek 为什么涨价:官方三次价格调整的时间线、官方说明与现在的价格

    DeepSeek API 为什么涨价?只引官方公告与价格页(2026-10-24 查询):4 月 V4 定价、8 月 17 日起的峰谷定价、9 月 10 日 Flash 下调,附各时间点的价格表、官方给出的理由和现在怎么省钱。

    其他 AI 工具0
  4. 04

    DeepSeek 的 Responses API 与 Anthropic 兼容接口怎么用:Base URL、模型映射与不支持的参数

    DeepSeek 支持 Responses API 和 Anthropic 接口吗?支持。按官方文档(2026-10-24 查询)讲清两种格式的 Base URL、调用示例、claude 模型名映射,以及哪些参数不支持、会被静默忽略,帮你判断工具能不能接。

    其他 AI 工具0
  5. 05

    DeepSeek 接入 Cherry Studio 和 Chatbox:API Key 填写、模型列表与连通检测步骤

    怎么在 Cherry Studio、Chatbox 这类桌面客户端里用 DeepSeek?按两款软件官方文档(2026-10-24 查询)整理 API Key、API 地址、获取模型列表和检测连通的步骤,并对照 DeepSeek 官方说明提醒旧模型名与余额问题。

    其他 AI 工具0
  6. 06

    DeepSeek 接入 VS Code:用 Continue 或 Cline 扩展配置 DeepSeek API 的步骤

    怎么在 VS Code 里用 DeepSeek?按 Continue 和 Cline 两个扩展各自的官方文档(2026-10-24 查询),讲清安装、config.yaml 或设置界面里怎么填 DeepSeek 的 API Key 和模型名,并说明费用、隐私和权限的注意事项。

    其他 AI 工具0

同产品的其他教程

  1. 01

    DeepSeek 怎么接入 Cursor:Cursor 官方自带 Key 支持哪些服务商,以及用 Cline 扩展的做法

    DeepSeek 能接入 Cursor 吗?Cursor 官方「自带 Key」文档(2026-10-24 查询)列的服务商里没有 DeepSeek。本文说明官方写了什么,并给出在 Cursor 里装 Cline 扩展接 DeepSeek 的步骤。

    Cursor其他 AI 工具0
  2. 02

    DeepSeek 怎么接入 Codex:官方一键脚本与手动改 config.toml 的完整步骤

    DeepSeek 能接入 Codex 吗?能。DeepSeek API 原生支持 Responses API,官方提供了 Codex 一键配置脚本和手动配置方法(2026-10-24 查询)。本文按两家官方文档讲清脚本用法、config.toml 字段、联网搜索限制和切换后历史会话的问题。

    Codex其他 AI 工具0
  3. 03

    DeepSeek 上下文长度与最大输出是多少:1M 上下文、384K 输出,超限会怎样

    DeepSeek 上下文长度多少、最大输出多少?按官方价格页与模型列表接口(2026-10-24 查询):deepseek-flash 与 deepseek-v4-pro 的上下文都是 1M、最大输出 384K。本文说明 token 怎么换算、超限的后果、图片与缓存的相关数字。

    其他 AI 工具0
  4. 04

    DeepSeek API 思考模式怎么开:reasoning_effort 三档、reasoning_content 与 deepseek-reasoner 的现状

    DeepSeek API 怎么开关思考模式、reasoning_effort 的 low / high / max 怎么选、reasoning_content 要不要回传、deepseek-reasoner 还能不能用?按官方文档(2026-10-24 查询)整理。

    其他 AI 工具0
  5. 05

    DeepSeek API 报错 400、402、429 怎么办:官方错误码与常见触发原因对照

    DeepSeek API 返回 400、401、402、422、429、500、503 分别是什么意思、怎么处理?按官方错误码页、限速页和各功能文档(2026-10-24 查询)逐项整理,并列出文档里写明会触发 400 的几种情形和空行、超时的原因。

    其他 AI 工具0
  6. 06

    DeepSeek API 开放平台怎么充值、怎么查余额和用量:官方常见问题逐项整理

    DeepSeek 开放平台(platform.deepseek.com)怎么充值、怎么查余额、用量和账单、余额会不会过期、能不能退款开票?按官方常见问题和价格页(2026-10-24 查询)整理,并对照 402 报错和余额不对的情形。

    其他 AI 工具0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~