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 條評論

登入 後參與評論

還沒有評論,來搶沙發~