跳到主要內容
Foxyko

函式呼叫Function Calling

也常被稱為:Function Calling、工具呼叫、Tool Calling

一句話解釋

讓模型判斷該呼叫哪個外部函式、並整理出正確參數的機制。

運作方式

  1. 你先告訴模型有哪些函式可用

    每個函式附上名稱、用途說明、需要哪些參數。模型不會執行這些函式,只讀說明。

  2. 模型判斷該不該呼叫

    根據使用者的問題,模型決定這次回答需不需要呼叫函式,還是直接用自己的知識回答就夠。

  3. 模型整理出呼叫請求

    如果需要呼叫,模型會輸出一份結構化資料:呼叫哪個函式、參數填什麼值。這一步模型只是「填表單」,不是真的執行。

  4. 你的程式碼負責實際執行

    收到呼叫請求後,由你的程式碼真正呼叫該函式(查資料庫、打 API、算數學),把結果傳回給模型。

  5. 模型根據結果組成最終回答

    拿到函式回傳的結果後,模型用自然語言把它整理成使用者看得懂的回答。

為什麼需要它

沒有 Function Calling,模型只能用訓練資料回答。 它不知道今天的天氣、你資料庫裡的即時庫存、剛剛送出的訂單狀態。透過函式呼叫,模型能在回答前先去查最新資料。

回答格式變得可靠。 直接要求模型「用 JSON 格式回答」,有時會夾雜多餘的文字或格式跑掉。Function Calling 的參數輸出經過結構化驗證,格式穩定得多,適合接進既有系統。

這是 AI Agent 的基礎能力。 AI Agent 之所以能自己規劃步驟、連續完成任務,核心就是反覆進行「判斷該呼叫什麼、拿到結果、判斷下一步」這個循環。

實際會怎麼用

常見的應用情境:

  • 查詢即時資訊:股價、匯率、天氣、航班狀態,模型呼叫對應的查詢函式取得最新數值。
  • 操作內部系統:建立客服工單、查詢訂單狀態、更新資料庫欄位。
  • 執行計算:模型的數學能力不穩定,交給一個計算函式反而更準確。
  • 串接其他工具:搜尋網頁、讀取檔案、寄送通知,這些都不是模型本身的能力,而是透過函式呼叫外接進來的。

常見的坑

參數填錯但格式看起來沒問題。 模型可能把「訂單編號」填成一個看起來合理但實際不存在的值。函式呼叫本身不保證內容正確,執行前的驗證還是要做。

函式說明寫得模糊,模型判斷就不準。 函式名稱和參數說明就是模型唯一的依據,寫得越清楚、範例越明確,模型呼叫的準確率越高。

沒有處理「不該呼叫卻呼叫了」的狀況。 對敏感操作(刪除資料、送出付款)務必加一層人工確認或額外驗證,不要讓模型的判斷直接觸發不可逆的動作。

延伸閱讀:MCP 是什麼、AI Agent 完整指南、API 是什麼。

常見問題

Function Calling 和模型自己寫程式有什麼不同?
模型不會真的執行程式碼,它只負責判斷「該呼叫哪個函式」和「參數該填什麼」,回傳一份結構化的呼叫請求。實際執行函式、拿到結果,是你自己的程式碼在做的事,模型只看得到最後回傳的結果。
一次對話可以呼叫多個函式嗎?
可以,而且很常見。模型可能會先呼叫一個函式查資料,看到結果後再決定要不要呼叫下一個,或是同時發出多個呼叫請求。這正是 AI Agent 能完成多步驟工作的基礎。
Function Calling 和 MCP 是同一件事嗎?
不是,但關係很近。Function Calling 是模型「呼叫函式」這個能力本身,[MCP](/glossary/mcp/) 則是一套標準協定,用來統一描述有哪些函式可以呼叫、怎麼呼叫。沒有 MCP,Function Calling 一樣能用,只是每家平台的函式描述格式各自不同。

更新於 .全部術語