OpenClaw Skills #12 - Function Calling:讓 AI Agent 真正「動手做事」的關鍵機制

OpenClaw Skills #12 - Function Calling:讓 AI Agent 真正「動手做事」的關鍵機制

發布時間:2026-03-12 | 分類:OpenClaw Skills 深度研究
---

一、開場破題

你有沒有問過 ChatGPT「現在幾點?」,然後得到一個尷尬的回答:「我無法取得即時資訊。」
這就是純語言模型的天花板——它只會「說話」,不會「做事」。
Function Calling 正是打破這道牆的關鍵機制。它讓 LLM 不再只是一個文字生成器,而是一個能夠呼叫外部工具、查詢即時資料、執行操作的真正 AI Agent 核心引擎
2026 年,從 OpenAI 的 GPT-4o、Anthropic 的 Claude 3.5,到開源的 Mistral、LLaMA 3,幾乎所有主流 LLM 都已原生支援 Function Calling。這不是錦上添花的功能,而是 AI Agent 能否落地的根本條件。
---

二、概念精講

Function Calling 的核心概念很直觀:你告訴模型「有哪些工具可以用」,模型決定「何時呼叫哪個工具、帶什麼參數」,然後你執行並把結果還給模型。

技術架構圖


使用者輸入(User Query)
        |
        v
LLM 判斷:需要呼叫工具嗎?
        |
   是 --+-- 否
   |          |
   v          v
生成 Function Call   直接生成文字回答
(JSON 格式)
   |
   v
應用層執行實際函式
(查 DB / 打 API / 操作系統)
   |
   v
將 Function Result 回傳給 LLM
   |
   v
LLM 整合結果,生成最終回答

三個核心角色

1. Function Schema(函式描述)
你需要用 JSON Schema 格式描述每個函式:名稱、功能說明、參數型別與說明。模型靠這份描述判斷何時該用哪個工具。
2. Tool Call(模型決策)
當模型認為需要某個工具時,它不會直接輸出文字,而是輸出一個結構化的 JSON 物件,指定函式名稱與對應參數。
3. Tool Result(執行結果回饋)
應用層收到 Tool Call 後,執行對應函式,再把結果以特定訊息格式回傳給模型,讓模型整合進最終答案。

Parallel Function Calling(並行呼叫)

GPT-4o 與 Claude 3.5 支援在單次推理中同時發出多個 Function Call,大幅降低延遲。

單次 LLM 推理
        |
        v
[get_weather("台北")] + [get_stock_price("2330.TW")]
        |
    並行執行
        |
        v
  結果合併 -> 最終回答
---

三、實戰場景

場景一:智慧客服 Agent

電商平台的客服 Agent 需要查訂單狀態、修改配送地址、申請退款。透過 Function Calling,模型只需理解使用者意圖,實際操作由後端函式執行,做到真正的「全自動客服」。

場景二:財務分析助理

使用者問:「台積電最新一季的毛利率是多少,跟去年同期比較如何?」模型透過 Function Calling 依序呼叫兩次財報查詢函式,分別取得 2025Q4 與 2024Q4 的數據,自動計算並生成分析段落,全程無需人工介入。

場景三:程式碼除錯 Agent

開發者輸入一段有 bug 的 Python 程式。Agent 呼叫程式碼執行函式實際運行,取得錯誤訊息後,再分析原因並給出修正建議。這是「思考 -> 行動 -> 觀察」的 ReAct 模式核心實踐。
---

四、關鍵步驟

Step 1:定義 Function Schema

以天氣查詢函式為例,Schema 需包含函式名稱、用途說明、以及每個參數的型別與描述。required 欄位標明哪些參數是必填的。描述越清晰,模型呼叫準確率越高。

Step 2:呼叫 LLM 並傳入工具清單

在建立對話時,將工具清單以 tools 參數傳入,並設定 tool_choice="auto" 讓模型自行判斷是否需要呼叫工具。也可設定 "required" 強制呼叫,或 "none" 完全禁止。

Step 3:解析 Tool Call 並執行

收到模型回應後,檢查 message.tool_calls 是否存在。若存在,解析其中的函式名稱與參數(JSON 字串),呼叫你實作的對應函式取得真實結果。

Step 4:將結果回傳模型

將 assistant 訊息(含 tool_calls)與函式執行結果(role: "tool")一起加入對話歷程,再次呼叫 LLM,模型會生成整合後的自然語言回答。
整個流程形成「感知 -> 決策 -> 行動 -> 回饋」閉環,這正是 AI Agent 的核心運作模式。
---

五、常見誤區

誤區一:Function Description 寫得太模糊
模型完全靠 description 判斷何時呼叫工具。描述應精確說明「適用情境」與「不適用情境」,避免模型誤判。
誤區二:忘記處理模型不呼叫工具的情況
tool_choice="auto" 時模型可能直接回答,程式碼必須同時處理有無 tool_calls 兩種情境,否則出現 NoneType 錯誤。
誤區三:把敏感操作直接暴露為工具
若直接暴露刪除資料庫、發送郵件等高風險操作,一旦模型誤判後果難以收拾。高風險工具應加入 Human-in-the-Loop 確認機制。
誤區四:工具數量過多導致準確率下降
研究顯示工具超過 20 個時 Tool Selection 準確率明顯下滑。建議依場景動態注入工具子集,而非每次傳入所有工具。
---

六、延伸學習

  • Tool Use 進階:了解 Anthropic Claude Tool Use 與 OpenAI Function Calling 的設計差異
  • ReAct 模式:Function Calling 是 ReAct Agent 模式的技術基礎,值得深入研究
  • LangChain Tools:提供數十種現成工具封裝,可快速整合進 Agent
  • OpenAI Assistants API:在 Function Calling 之上封裝狀態管理,適合複雜多輪對話
  • MCP(Model Context Protocol):Anthropic 提出的標準化工具協議,正成為業界新標準
---

References