在使用 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 決定使用工具時,它會回傳一個助手訊息,其內容列表中包含多個區塊。這與您先前使用的純文字簡單回應相比,是一個重大的變化。

一個多區塊訊息通常包含:
- 文字區塊 - 人類可讀的文字,說明 Claude 正在做什麼(例如「我可以幫您查詢目前的時間。讓我為您查找這項資訊」)
- ToolUse 區塊 - 告知您的程式碼應呼叫哪個工具以及使用哪些參數的指示
ToolUse 區塊包含:
- 用於追蹤工具呼叫的 ID
- 要呼叫的函式名稱(例如「get_current_datetime」)
- 根據您的 JSON 結構描述格式化的輸入參數
- 類型指定「tool_use」
處理包含多區塊內容的訊息歷史
這是關鍵部分:Claude 不會儲存對話歷史,因此您必須手動管理它。在處理工具回應時,您需要保留整個內容結構,包括所有區塊。
您不能只提取文字,而需要附加完整的回應內容:
python
messages.append({
"role": "assistant",
"content": response.content
})這樣可以同時保留文字區塊和工具使用區塊,為未來的 API 呼叫維持完整的對話上下文。
完整流程
工具使用流程遵循以下模式:

- 將包含工具結構描述的使用者訊息傳送給 Claude
- 接收多區塊助手訊息(文字 + 工具使用)
- 提取工具呼叫資訊並執行該函式
- 將工具結果連同完整的訊息歷史傳送回 Claude
- 接收 Claude 的最終回應
每個步驟都需要仔細處理訊息結構,以維持對話的連續性。關鍵的洞察是,啟用工具的對話涉及更複雜的訊息格式,但維持完整訊息歷史的基本原則保持不變。
更新輔助函式
如果您一直在使用像 add_user_message 和 add_assistant_message 這樣的輔助函式,您需要更新它們以處理多區塊內容。目前的版本可能只支援單一文字區塊,但現在它們需要能夠容納包含工具使用區塊的更複雜內容結構。