載入中
載入中

內建工具

您可以建立自己的自訂工具,但有些功能已經足夠常見,Anthropic 直接提供預先建置好的版本。您不需要撰寫程式碼,也不需要自行架設沙盒環境。您只需宣告該工具,Anthropic 就會負責執行。

伺服器工具:由您宣告,由 Anthropic 執行

Anthropic 提供在其基礎設施上執行的伺服器工具(server tools)。這些工具並非由您執行——而是由 Anthropic 執行。這表示您不需要為這些呼叫建立代理迴圈(agent loop)。Claude 會自行呼叫工具,結果會在同一個回應中回傳。

主要的工具有:

  • 網路搜尋(Web search)——搜尋網際網路並回傳附有引用來源的結果
  • 程式碼執行(Code execution)——在沙盒中撰寫並執行 Python
  • 網頁擷取(Web fetch)——從 URL 擷取完整內容

一個檔案中的兩個伺服器工具

讓我們在一個檔案中看看其中兩個重要的工具:兩次 messages.create 呼叫,一次使用網路搜尋,另一次使用程式碼執行。

python
import anthropic

client = anthropic.Anthropic()

# 呼叫 1:網路搜尋 — Anthropic 在伺服器端執行搜尋
search_response = client.messages.create(
    model="claude-opus-5",
    max_tokens=1024,
    tools=[{"type": "web_search_20260209", "name": "web_search"}],
    messages=[
        {"role": "user", "content": "What is Anthropic's latest model release? Answer in one sentence."}
    ],
)

for block in search_response.content:
    if block.type == "server_tool_use":
        print(f"Tool call: {block.name} — {block.input}")
    elif block.type == "text":
        print(block.text)

# 呼叫 2:程式碼執行 — Claude 在沙箱中撰寫並執行 Python
code_response = client.messages.create(
    model="claude-opus-5",
    max_tokens=1024,
    tools=[{"type": "code_execution_20260120", "name": "code_execution"}],
    messages=[
        {"role": "user", "content": "Calculate the mean and standard deviation of [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"}
    ],
)

for block in code_response.content:
    if block.type == "server_tool_use":
        print(f"Tool call: {block.name} — {block.input}")
    elif block.type == "bash_code_execution_tool_result":
        print(f"stdout: {block.content.stdout}")
    elif block.type == "text":
        print(block.text)

請注意兩件事:

  1. 這裡沒有代理迴圈。 我們不需要根據 stop_reason 做切換,也不需要把工具結果再推送回去。Anthropic 會在伺服器端執行工具,回應中已經包含結果。
  2. 回應中有新的區塊類型。 工具呼叫有一個 server_tool_use 區塊,輸出則有一個程式碼執行工具結果區塊,再加上一般的 text 區塊。

執行它

對於網路搜尋,您會看到印出 Claude 的工具呼叫,接著是一句關於最新模型發布的答案,其中已經整合了搜尋引用來源。

對於程式碼執行,您會看到 Claude 實際撰寫的 Python 程式碼、沙盒執行後的 stdout 輸出,以及最終的文字答案。

我們不需要自行架設搜尋爬蟲,也不需要自行執行 Python 沙盒。我們只宣告了兩個工具,就免費獲得了這兩項功能。

另一個類別:客戶端工具

值得了解還有另一個類別存在。客戶端工具(Client tools)在您的程式碼執行的地方執行。Anthropic 發布這些工具的結構描述(schema)並訓練 Claude 使用它們,因此您不需要自行定義結構描述。以下是兩個範例:

  • 記憶(Memory)——Claude 在不同工作階段之間讀寫記憶
  • Bash——一個持續存在的 bash shell,讓 Claude 可以執行指令

Anthropic 文件中的內建工具表格,其中記憶與 bash 被列為客戶端工具,與網頁擷取、程式碼執行等伺服器工具並列

它們的形式與自訂工具相同,但結構描述已內建於 Claude 之中。您的程式碼仍然負責執行它們:對於記憶功能,有四個 SDK 提供了輔助函式,可處理 Claude 針對您提供的儲存空間所發出的記憶呼叫;而對於 bash,則是由您的應用程式自行執行該 shell。

為什麼這在正式環境中很重要

在正式環境的應用程式中,這是通往原本需要數週才能完成的功能的最短路徑。網路搜尋可以驅動一個事實查核端點,用來對照即時網路內容,驗證草稿中每一項數字與法規相關的主張。

一個提案審查應用程式,使用網路搜尋來對草稿提案中的法規與數字主張進行事實查核

不過有一點要提醒:某件事在網路上被驗證過,並不代表它就是真的。請務必再次檢查 Claude 的工作成果。

重點回顧

  • 伺服器工具——網路搜尋、程式碼執行、網頁擷取——都在您的 tools 陣列中宣告。由 Anthropic 負責執行。
  • 您會在同一個回應中取得結果,不需要代理迴圈。請留意 server_tool_use 以及工具結果區塊,它們會與一般的文字區塊並列出現。
  • 像記憶與 bash 這類客戶端工具,會在您的程式碼執行的地方執行。結構描述已內建於 Claude 之中,四個 SDK 提供了記憶功能的輔助函式,而對於 bash,則由您的程式碼負責執行該 shell。
  • 「由 Anthropic 代管」這個概念可以一路擴展到更高層次:受管理代理(managed agents)將這個概念套用到整個代理,而不僅僅是單一工具。