Vibe Coder
工具呼叫怎麼運作?用 Anthropic API 定義你的第一個 Tool
工具呼叫(Tool Use)的運作分四步:你先定義工具清單,AI 分析任務後決定要不要呼叫工具,你的程式執行工具並把結果回傳給 AI,AI 再根據結果繼續推理或給出最終答案。工具定義得越精確,AI 用起來就越準確。
工具呼叫怎麼運作?用 Anthropic API 定義你的第一個 Tool
工具是 AI 的手,你來設計它能做什麼。你定義了什麼工具,Agent 就只能做什麼事,工具設計得好,Agent 才能真正有用。這一篇帶你從原理到實作,學會怎麼定義一個 AI 真的會用對的工具。
你將學到什麼
Tool Use 運作原理
從你定義工具,到 AI 決定呼叫、你執行、AI 繼續推理的完整流程。
用 API 定義工具
input_schema 怎麼寫,AI 才不會傳錯參數。
五個工具設計原則
單一職責、描述精確、防禦性設計,每個都有反例對照。
常見問題排查
AI 不呼叫工具、傳錯參數、無限迴圈,各自的原因和解法。
Tool Use 的運作原理
工具呼叫的完整流程分成四步:
- 你定義工具清單:告訴 API 有哪些工具可以用,每個工具的名稱、說明、參數格式。
- AI 決定要不要用工具:Model 分析任務,如果需要外部資訊或動作,就輸出一個 tool_use 訊息,說明要呼叫哪個工具、傳什麼參數。
- 你執行工具並回傳結果:你的程式接收到 AI 的工具呼叫請求,執行對應的函式,把結果包成 tool_result 訊息回傳給 AI。
- AI 繼續完成任務:AI 看到工具結果後繼續推理,可能再呼叫另一個工具,或輸出最終答案。
用 Anthropic API 定義工具
一個工具定義包含名稱、說明,以及描述參數格式的 input_schema:
tools = [{
"name": "get_weather",
"description": "查詢指定城市的即時天氣資訊,回傳溫度和天氣描述",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名稱,英文,如 Taipei"
},
"units": {
"type": "string",
"enum": ["metric", "imperial"],
"description": "溫度單位,metric為攝氏"
}
},
"required": ["city"]
}
}]
定義好工具後,完整的呼叫流程長這樣:
response = client.messages.create(
model="claude-opus-4-6",
tools=tools,
messages=[{"role": "user",
"content": "台北現在天氣怎樣?"}]
)
# 如果 AI 決定呼叫工具
if response.stop_reason == "tool_use":
tool_call = response.content[0] # tool_use block
result = execute_tool(tool_call.name, tool_call.input)
工具設計五原則
| 原則 | 說明 | 反例 → 正例 |
|---|---|---|
| 單一職責 | 每個工具只做一件事 | do_everything() → search()、write()分開 |
| 描述精確 | description 要說清楚何時用 | 「搜尋資料」 → 「搜尋網路取得即時資訊,不能查詢私有資料」 |
| Schema 完整 | 必填和選填參數都要標清楚,有 enum 的要列出 | 「city: string」 → 加上 description 和 required |
| 防禦性設計 | 工具內部要有驗證和錯誤處理 | 直接執行系統指令 → 白名單過濾後執行 |
| 回傳要有意義 | 回傳給 AI 的內容要讓它能繼續推理 | 只回傳布林值 → 回傳包含說明的完整結果 |
多工具協作範例
多個工具組合起來,就能讓 AI 自主完成一連串任務,例如一個會搜尋、整理、寫檔的研究助理:
tools = [
{"name": "web_search",
"description": "搜尋網路取得最新資訊", ...},
{"name": "write_file",
"description": "把內容寫入指定檔案", ...},
{"name": "read_file",
"description": "讀取指定檔案的內容", ...},
]
# AI 會自主決定:先搜尋,整理內容,再寫入報告
Tool Use 常見問題排查
| 問題 | 原因 | 解法 |
|---|---|---|
| AI 不呼叫工具 | 任務描述讓 AI 覺得不需要工具,或 description 不夠清楚 | 在提示詞裡說明請使用工具完成任務,或加強 description |
| AI 傳錯參數 | input_schema 的 description 不夠具體 | 每個參數加清楚說明,有 enum 的一定要列出所有選項 |
| 工具呼叫無限迴圈 | Harness 沒有設最大迴圈次數 | 設定 max_iterations,超過就中斷並回傳錯誤 |
| tool_result 太長 | 工具回傳大量資料超出 context window | 在工具內部截斷或摘要,只回傳關鍵資訊 |
| AI 拒絕呼叫危險工具 | Claude 的安全機制擋住了可能危險的操作 | 調整工具描述讓意圖更清楚,或改用更安全的替代工具 |
工具設計檢查清單每個工具只做一件事,名稱清楚反映功能;description 說明何時用、何時不用;input_schema 每個參數都有 description,required 設定正確;工具內部有驗證和錯誤處理,不讓 AI 做危險操作;回傳格式包含足夠資訊讓 AI 繼續推理。
延伸學習
做出你的第一個 Skill
一場快閃直播的完整重製。從搞懂 Skill 的五個層級開始,帶你把一件你每天在做的重複工作,寫成一支 AI 真的會照做的 Skill ── 命名、description、輸入拆解、Workflow 訪談、Output 與 Checks,最後組成一份能通過格式檢查的 SKILL.md。
NT$ 999
HE301|Harness Engineering Architecture(12 小時)
兩天十二小時的架構課,處理的是「第一百次仍然成功」。從能力設計出發,逐層拆解知識、脈絡、記憶、規則、工具、工作流、評估與多代理八種架構,每一種都給治理方式與真實案例。12 章 114 課圖文講義、52 張對照表,附兩天的學員講義與投影片 PDF。課程於 2026 年 8 月 30 日實體開課,完整錄影將於課後上傳。
NT$ 12,999
常見問答
AI 為什麼有時候不呼叫工具?
通常是任務描述讓 AI 覺得不需要工具,或工具的 description 寫得不夠清楚。解法是在提示詞裡明確說明請使用工具完成任務,或加強工具的說明文字。
怎麼避免 AI 傳錯參數?
把 input_schema 裡每個參數的 description 寫具體,有固定選項的欄位一定要用 enum 列出所有選項,AI 才不會用猜的。
工具回傳的內容太長會怎樣?
超出 context window 會造成問題。解法是在工具內部先截斷或摘要,只回傳 AI 真正需要的關鍵資訊,不要整包資料原樣丟回去。
怎麼防止工具呼叫陷入無限迴圈?
在 Harness 裡設定 max_iterations,也就是最大迴圈次數,超過就中斷並回傳錯誤或目前的進度,避免任務一直卡住。

