在建立訊息時,您可以設定Documentation Index
Fetch the complete documentation index at: https://docs.claude.com/llms.txt
Use this file to discover all available pages before exploring further.
"stream": true 來使用伺服器發送事件 (SSE) 逐步串流回應。
使用 SDK 進行串流
我們的 Python 和 TypeScript SDK 提供多種串流方式。Python SDK 支援同步和非同步串流。詳細資訊請參閱各 SDK 的文件。事件類型
每個伺服器發送事件都包含一個命名的事件類型和相關的 JSON 資料。每個事件都會使用 SSE 事件名稱(例如event: message_stop),並在其資料中包含匹配的事件 type。
每個串流使用以下事件流程:
message_start:包含一個具有空content的Message物件。- 一系列內容區塊,每個區塊都有一個
content_block_start、一個或多個content_block_delta事件,以及一個content_block_stop事件。每個內容區塊都會有一個index,對應於最終訊息content陣列中的索引。 - 一個或多個
message_delta事件,指示最終Message物件的頂層變更。 - 最後的
message_stop事件。
Ping 事件
事件串流也可能包含任意數量的ping 事件。
錯誤事件
我們可能偶爾在事件串流中發送錯誤。例如,在高使用量期間,您可能會收到overloaded_error,這通常對應於非串流情境中的 HTTP 529:
Example error
其他事件
根據我們的版本控制政策,我們可能會新增新的事件類型,您的程式碼應該優雅地處理未知的事件類型。內容區塊增量類型
每個content_block_delta 事件都包含一個類型的 delta,用於更新給定 index 處的 content 區塊。
文字增量
text 內容區塊增量看起來像:
Text delta
輸入 JSON 增量
tool_use 內容區塊的增量對應於區塊的 input 欄位的更新。為了支援最大粒度,增量是部分 JSON 字串,而最終的 tool_use.input 始終是一個物件。
您可以累積字串增量,並在收到 content_block_stop 事件後解析 JSON,方法是使用像 Pydantic 這樣的函式庫來進行部分 JSON 解析,或使用我們的 SDK,它們提供輔助工具來存取解析的增量值。
tool_use 內容區塊增量看起來像:
Input JSON delta
input 發出一個完整的鍵和值屬性。因此,在使用工具時,模型工作期間串流事件之間可能會有延遲。一旦累積了 input 鍵和值,我們會將它們作為多個 content_block_delta 事件發出,並使用分塊的部分 json,以便格式可以自動支援未來模型中更細的粒度。
思考增量
當使用延伸思考並啟用串流時,您將透過thinking_delta 事件接收思考內容。這些增量對應於 thinking 內容區塊的 thinking 欄位。
對於思考內容,會在 content_block_stop 事件之前發送特殊的 signature_delta 事件。此簽名用於驗證思考區塊的完整性。
典型的思考增量看起來像:
Thinking delta
Signature delta
完整的 HTTP 串流回應
我們強烈建議您在使用串流模式時使用我們的客戶端 SDK。但是,如果您正在建立直接的 API 整合,您將需要自己處理這些事件。 串流回應由以下組成:- 一個
message_start事件 - 可能有多個內容區塊,每個區塊包含:
- 一個
content_block_start事件 - 可能有多個
content_block_delta事件 - 一個
content_block_stop事件
- 一個
- 一個
message_delta事件 - 一個
message_stop事件
ping 事件。有關格式的更多詳細資訊,請參閱事件類型。
基本串流請求
Response
使用工具的串流請求
在此請求中,我們要求 Claude 使用工具告訴我們天氣。Response
使用延伸思考的串流請求
在此請求中,我們啟用延伸思考並使用串流來查看 Claude 的逐步推理。Response
使用網路搜尋工具的串流請求
在此請求中,我們要求 Claude 搜尋網路以獲取當前天氣資訊。Response
錯誤恢復
當串流請求因網路問題、逾時或其他錯誤而中斷時,您可以從中斷的地方恢復。這種方法可以避免重新處理整個回應。 基本的恢復策略包括:- 捕獲部分回應:保存在錯誤發生之前成功接收的所有內容
- 構建續接請求:建立一個新的 API 請求,將部分助理回應作為新助理訊息的開頭
- 恢復串流:從中斷的地方繼續接收回應的其餘部分
錯誤恢復最佳實務
- 使用 SDK 功能:利用 SDK 內建的訊息累積和錯誤處理功能
- 處理內容類型:注意訊息可能包含多個內容區塊(
text、tool_use、thinking)。工具使用和延伸思考區塊無法部分恢復。您可以從最近的文字區塊恢復串流。