Skip to main content
通過 Claude 原生格式/v1/messages)呼叫時,響應結構與 OpenAI 相容格式完全不同:正文是按型別區分的 content 塊陣列,流式則用 Anthropic 的具名事件 SSE 協議。本頁講清兩種模式怎麼解析。
請求側(端點、anthropic-version 頭、x-api-key 鑑權、effort / thinking 引數)見 Claude API 基礎說明Claude Effort 思考指南。本頁只講響應側。示例用輕量模型 claude-haiku-4-5-20251001

非流式響應

頂層是一個 message 物件,正文在 content 陣列裡,按 type 區分塊:
取正文要遍歷 content 陣列——不能像 OpenAI 那樣直接取一個字串欄位:
stop_reason 取值:end_turn(正常結束)、max_tokens(被 max_tokens 截斷,正文可能為空,調大即可)、stop_sequencetool_use(要呼叫工具)。開啟思考後,content 數組裡會多出 type: "thinking" 的塊,排在 text 塊之前。

流式響應(具名事件 SSE)

Claude 流式用的是 Anthropic 事件協議:每條訊息有 event: 名稱 + data: 負載,需要按事件型別分發,而不是像 OpenAI 那樣每塊都同構。
事件流的固定順序與職責: 解析的核心是累加 content_block_delta 裡的 text_delta
事件型別在 event: 行和 data: 負載的 "type" 欄位裡都有,按任一個分發都行。用官方 anthropic SDK 時,把 base_url 指向 https://api.apiyi.com 即可,SDK 會自動處理事件流,無需手寫上面的迴圈。
開啟思考(adaptive thinking)時,會先出現 type: "thinking" 的內容塊,其增量是 thinking_delta,並在塊結束前出現一個 signature_delta(思考塊簽名)。展示思考時把 thinking_deltatext_delta 分流渲染即可。思考用法見 Claude Effort 思考指南

與 OpenAI 相容格式的關鍵差異

遷移最容易踩的兩點:① 正文是陣列不是字串,必須遍歷 contenttype=="text" 的塊;② 流式沒有 [DONE],要用 message_stop 事件判結束。

usage 與計費

  • 非流式:usage 隨結果返回,含 input_tokensoutput_tokenscache_creation_input_tokenscache_read_input_tokens
  • 流式:input_tokensmessage_start,最終 output_tokensmessage_delta,需兩處合併
  • 快取命中欄位(cache_read_input_tokens)的折扣與用法見 Claude 快取計費

相關連結