載入中

在使用 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 呼叫時維持對話上下文至關重要。

完整的工具使用流程

工具使用流程遵循以下模式:

  1. 將使用者訊息與工具結構描述一起傳送給 Claude
  2. 接收包含文字區塊和工具使用區塊的助手訊息
  3. 提取工具資訊並執行實際的函式
  4. 將工具結果連同完整的對話歷史一起傳送回 Claude
  5. 接收 Claude 的最終回應

每個步驟都需要仔細處理訊息結構,以確保 Claude 擁有提供準確回應所需的完整上下文。

更新輔助函式

如果您一直在使用像 add_user_message() 和 add_assistant_message() 這樣的輔助函式,您需要更新它們以處理多區塊內容。目前的版本可能只支援單一文字區塊,但現在它們需要能夠容納包含工具使用區塊的更複雜內容結構。

這種多區塊訊息處理對於建構能夠無縫整合 Claude 工具能力同時維持適當對話流程的強健應用程式至關重要。