在使用 Claude 的工具功能時,您會遇到一種與之前看到的簡單文字回應不同的新型回應結構。Claude 現在不再只是回傳單一文字區塊,而是可以回傳包含文字和工具使用資訊的多區塊訊息。
發出啟用工具的 API 呼叫
為了讓 Claude 能夠使用工具,您需要在 API 呼叫中包含 tools 參數。以下是如何構建請求:
python
messages = []
messages.append({
"role": "user",
"content": "What is the exact time, formatted as HH:MM:SS?"
})
response = client.messages.create(
model=model,
max_tokens=1000,
messages=messages,
tools=[get_current_datetime_schema],
)tools 參數接受一個 JSON 結構描述(schema)列表,用於描述 Claude 可以呼叫的可用函式。
理解多區塊訊息
當 Claude 決定使用工具時,它會回傳一個在內容列表中包含多個區塊的助手訊息。這與您之前使用的簡單純文字回應相比是一個重大的變化。

多區塊訊息通常包含:
- 文字區塊(Text Block) - 說明 Claude 正在做什麼的人類可讀文字(例如「我可以幫您查詢目前的時間。讓我為您查找這項資訊」)
- 工具使用區塊(ToolUse Block) - 告訴您的程式碼應呼叫哪個工具以及使用什麼參數的指示
ToolUse 區塊包含:
- 用於追蹤工具呼叫的 ID
- 要呼叫的函式名稱(例如「get_current_datetime」)
- 以字典格式呈現的輸入參數
- 類型指定「tool_use」
使用多區塊訊息管理對話歷史
請記住,Claude 不會儲存對話歷史——您需要手動管理它。在處理工具回應時,您必須保留整個內容結構,包括所有區塊。
以下是如何正確地將多區塊助手訊息附加到您的對話歷史中:
messages.append({
"role": "assistant",
"content": response.content
})這會保留文字區塊和工具使用區塊,這對於在您進行後續 API 呼叫時維持對話上下文至關重要。
完整的工具使用流程

工具使用流程遵循以下模式:
- 將使用者訊息與工具結構描述一起傳送給 Claude
- 接收包含文字區塊和工具使用區塊的助手訊息
- 提取工具資訊並執行實際的函式
- 將工具結果連同完整的對話歷史一起傳送回 Claude
- 接收 Claude 的最終回應
每個步驟都需要仔細處理訊息結構,以確保 Claude 擁有提供準確回應所需的完整上下文。
更新輔助函式
如果您一直在使用像 add_user_message() 和 add_assistant_message() 這樣的輔助函式,您需要更新它們以處理多區塊內容。目前的版本可能只支援單一文字區塊,但現在它們需要能夠容納包含工具使用區塊的更複雜內容結構。
這種多區塊訊息處理對於建構能夠無縫整合 Claude 工具能力同時維持適當對話流程的強健應用程式至關重要。