工具使用 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

工具使用

使用AnthropicClaude模型時,您可以指定模型可用來回應訊息的工具。例如,您可以指定工具,取得廣播台上最熱門的歌曲。如果使用者傳遞訊息 WZPZ 上最熱門的歌曲是什麼?,模型會判斷您指定的工具可協助回答問題。在其回應中,模型會請求您代其執行工具。然後,執行工具並將工具結果傳遞給模型,然後產生原始訊息的回應。如需詳細資訊,請參閱 Anthropic Claude 文件中的工具使用 (函數呼叫)

提示

我們建議您使用 Converse API 將工具使用整合至您的應用程式。如需詳細資訊,請參閱使用工具來完成 Amazon Bedrock 模型回應

您可以在 tools 欄位中指定要提供給模型的工具。下列範例適用於在廣播台上取得最熱門歌曲的工具。

[ { "name": "top_song", "description": "Get the most popular song played on a radio station.", "input_schema": { "type": "object", "properties": { "sign": { "type": "string", "description": "The call sign for the radio station for which you want the most popular song. Example calls signs are WZPZ and WKRP." } }, "required": [ "sign" ] } } ]

當模型需要工具來產生訊息的回應時,它會在訊息content欄位中傳回所請求工具的相關資訊,以及工具的輸入。它也會將回應的停止原因設定為 tool_use

{ "id": "msg_bdrk_01USsY5m3XRUF4FCppHP8KBx", "type": "message", "role": "assistant", "model": "claude-3-sonnet-20240229", "stop_sequence": null, "usage": { "input_tokens": 375, "output_tokens": 36 }, "content": [ { "type": "tool_use", "id": "toolu_bdrk_01SnXQc6YVWD8Dom5jz7KhHy", "name": "top_song", "input": { "sign": "WZPZ" } } ], "stop_reason": "tool_use" }

在程式碼中,您可以代表工具呼叫工具。然後,在使用者訊息中將工具結果 (tool_result) 傳遞給模型。

{ "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_bdrk_01SnXQc6YVWD8Dom5jz7KhHy", "content": "Elemental Hotel" } ] }

在其回應中,模型會使用工具結果來產生原始訊息的回應。

{ "id": "msg_bdrk_012AaqvTiKuUSc6WadhUkDLP", "type": "message", "role": "assistant", "model": "claude-3-sonnet-20240229", "content": [ { "type": "text", "text": "According to the tool, the most popular song played on radio station WZPZ is \"Elemental Hotel\"." } ], "stop_reason": "end_turn" }

精細工具串流

精細工具串流是 Claude Sonnet 4、 和 Claude Opus 4 提供的AnthropicClaude模型功能。透過精細工具串流,Claude開發人員可以串流工具使用參數,而無需緩衝或 JSON 驗證,從而減少開始接收大型參數的延遲。

注意

使用精細工具串流時,您可能會收到無效或部分 JSON 輸入。請務必在程式碼中考慮這些邊緣案例。

若要使用此功能,只要將 標頭新增至fine-grained-tool-streaming-2025-05-14工具使用請求即可。

以下是如何指定精細工具串流標頭的範例:

{ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "anthropic_beta": ["fine-grained-tool-streaming-2025-05-14"], "messages": [ { "role": "user", "content": "Can you write a long poem and make a file called poem.txt?" } ], "tools": [ { "name": "make_file", "description": "Write text to a file", "input_schema": { "type": "object", "properties": { "filename": { "type": "string", "description": "The filename to write text to" }, "lines_of_text": { "type": "array", "description": "An array of lines of text to write to the file" } }, "required": [ "filename", "lines_of_text" ] } } ] }

在此範例中,精細工具串流可讓 Claude 將長詩的行串流到工具呼叫中,make_file而不進行緩衝,以驗證lines_of_text參數是否為有效的 JSON。這表示您可以在參數串流到達時看到它,而不必等待整個參數進行緩衝和驗證。

使用精細工具串流時,工具使用區塊會更快地開始串流,而且通常更長且文字休息時間更少。這是因為區塊行為的差異。

例如,沒有精細串流 (15 秒延遲):

Chunk 1: '{"' Chunk 2: 'query": "Ty' Chunk 3: 'peScri' Chunk 4: 'pt 5.0 5.1 ' Chunk 5: '5.2 5' Chunk 6: '.3' Chunk 8: ' new f' Chunk 9: 'eatur' ...

使用精細串流 (3 秒延遲):

Chunk 1: '{"query": "TypeScript 5.0 5.1 5.2 5.3' Chunk 2: ' new features comparison'
注意

由於精細串流在沒有緩衝或 JSON 驗證的情況下傳送參數,因此無法保證產生的串流會在有效的 JSON 字串中完成。特別是,如果max_tokens達到停止原因,串流可能會透過參數中途結束,並且可能不完整。您通常必須撰寫特定的支援來處理 max_tokens 到達的時間。

電腦使用 (Beta 版)

電腦使用是 Claude 3.5 Sonnet v2、Claude Sonnet 4、 Claude 3.7 Sonnet和 4 提供的AnthropicClaude模型功能 Claude Opus (測試版)。透過電腦使用, Claude可協助您透過基本的 GUI 動作自動化任務。

警告

電腦使用功能會以「Beta Service」的形式提供給您,如 AWS 服務條款所定義。它受您與 AWS 和 AWS 服務條款以及適用模型 EULA 的協議約束。請注意,電腦使用 API 會產生與標準 API 功能或聊天介面不同的唯一風險。使用電腦使用 API 與網際網路互動時,這些風險會提高。為了將風險降至最低,請考慮採取預防措施,例如:

  • 操作電腦會在專用虛擬機器或容器中使用功能,並將權限降至最低,以防止直接系統攻擊或意外。

  • 為避免資訊遭竊,請避免讓電腦使用 API 存取敏感帳戶或資料。

  • 限制電腦使用 APIs對必要網域的網際網路存取,以減少對惡意內容的暴露。

  • 為了確保適當的監督,請讓人類參與敏感任務 (例如做出可能有有意義的實際後果的決策),以及需要明確同意的任何事項 (例如接受 Cookie、執行金融交易,或同意服務條款)。

您啟用Claude查看或存取的任何內容都可能會覆寫指示,或導致Claude發生錯誤或執行意外動作。採取適當的預防措施,例如Claude隔離敏感表面是必要的,包括避免與提示注入相關的風險。在啟用或請求啟用自有產品中電腦使用功能所需的許可之前,請通知最終使用者任何相關風險,並適時取得他們的同意。

電腦使用 API 提供數個預先定義的電腦使用工具供您使用。然後,您可以使用您的請求建立提示,例如「傳送一封電子郵件給 Ben,其中包含我上次會議的筆記」和螢幕擷取畫面 (視需要)。回應包含 JSON 格式tool_use的動作清單 (例如 scroll_down、lele_button_press、螢幕擷取畫面)。您的程式碼會執行電腦動作Claude,並提供顯示輸出的螢幕擷取畫面 (當要求時)。

自 Claude 3.5 v2 發行以來,工具參數已更新為接受多態工具類型;新增 tool.type 屬性來區分它們。 type是選用的;如果省略,則假設工具是自訂工具 (先前支援的唯一工具類型)。若要存取電腦使用,您必須使用 anthropic_beta 參數搭配對應的列舉,其值取決於使用的模型版本。如需詳細資訊,請參閱下表。

只有使用此參數和列舉提出的請求才能使用電腦使用工具。它可以指定如下:"anthropic_beta": ["computer-use-2025-01-24"]

模型 Beta 標頭

Claude Opus 4.1

Claude Opus 4

Claude Sonnet 4

Claude 3.7 Sonnet

computer-use-2025-01-24
Claude 3.5 Sonnet v2 computer-use-2024-10-22

如需詳細資訊,請參閱 Anthropic 文件中的電腦使用 (測試版)

以下是回應範例,假設請求包含具有 Firefox 圖示的桌面螢幕擷取畫面。

{ "id": "msg_123", "type": "message", "role": "assistant", "model": "anthropic.claude-3-5-sonnet-20241022-v2:0", "content": [ { "type": "text", "text": "I see the Firefox icon. Let me click on it and then navigate to a weather website." }, { "type": "tool_use", "id": "toolu_123", "name": "computer", "input": { "action": "mouse_move", "coordinate": [ 708, 736 ] } }, { "type": "tool_use", "id": "toolu_234", "name": "computer", "input": { "action": "left_click" } } ], "stop_reason": "tool_use", "stop_sequence": null, "usage": { "input_tokens": 3391, "output_tokens": 132 } }

Anthropic 定義的工具

Anthropic 提供一組工具,讓特定Claude模型有效地使用電腦。指定Anthropic已定義的工具時,不需要或不允許 descriptiontool_schema 欄位。已Anthropic定義的工具是由 定義Anthropic,但您必須明確評估工具的結果,並將 傳回tool_results給 Claude。如同任何工具,模型不會自動執行工具。每個Anthropic定義的工具都有針對特定模型 Claude 3.5 Sonnet(新) 和 最佳化的版本Claude 3.7 Sonnet:

模型

工具

備註

Claude Claude Opus 4.1

Claude Claude Opus 4

Claude Sonnet 4

{ "type": "text_editor_20250124", "name": "str_replace_based_edit_tool" }

更新現有str_replace_editor工具

Claude 3.7 Sonnet

{ "type": "computer_20250124", "name": "computer" }

包含新動作以更精確地控制

Claude 3.7 Sonnet

{ "type": "text_editor_20250124", "name": "str_replace_editor" }

與 20241022 版本相同的功能

Claude 3.5 Sonnet v2

{ "type": "bash_20250124", "name": "bash" }

與 20241022 版本相同的功能

Claude 3.5 Sonnet v2

{ "type": "text_editor_20241022", "name": "str_replace_editor" }

Claude 3.5 Sonnet v2

{ "type": "bash_20241022", "name": "bash" }

Claude 3.5 Sonnet v2

{ "type": "computer_20241022", "name": "computer" }

type 欄位識別工具及其參數以供驗證, name 欄位是公開給模型的工具名稱。

如果您想要提示模型使用其中一個工具,您可以依 name 欄位明確參考工具。name 欄位在工具清單中必須是唯一的;您無法在相同的 API 呼叫中定義與已Anthropic定義工具name相同的工具。

工具使用的成本考量

工具使用請求會根據下列因素定價:

  1. 傳送至模型的輸入字符總數 (包括在工具參數中)。

  2. 產生的輸出字符數量。

工具的價格與所有其他 Claude API 請求相同,但每個請求都包含額外的字符。工具使用的其他字符來自下列各項:

  • API 請求中的 tools 參數。例如,工具名稱、描述和結構描述。

  • API 請求和回應中的任何tool_use內容區塊。

  • API 請求中的任何tool_result內容區塊。

當您使用工具時,Anthropic模型會自動包含啟用工具使用的特殊系統提示。下表列出每個模型所需的工具使用字符的數量。此資料表會排除上述的其他字符。請注意,此表格假設至少提供一個工具。如果未提供任何工具,則無的工具選擇會使用 0 個額外的系統提示字符。

模型 工具選擇 工具使用系統提示字符計數

Claude Opus 4.1

Claude Opus 4

Claude Sonnet 4

Claude 3.7 Sonnet

Claude 3.5 Sonnet v2

autonone 346

Claude Opus 4.1

Claude Opus 4

Claude Sonnet 4

Claude 3.7 Sonnet

Claude 3.5 Sonnet v2

anytool 313

Claude 3.5 Sonnet

autonone 294

Claude 3.5 Sonnet

anytool 261

Claude 3 Opus

autonone 530

Claude 3 Opus

anytool 281

Claude 3 Sonnet

autonone 159

Claude 3 Sonnet

anytool 235

Claude 3 Haiku

autonone 264

Claude 3 Haiku

anytool 340