函式呼叫Function Calling
也常被稱為:Function Calling、工具呼叫、Tool Calling
一句話解釋
讓模型判斷該呼叫哪個外部函式、並整理出正確參數的機制。
運作方式
你先告訴模型有哪些函式可用
每個函式附上名稱、用途說明、需要哪些參數。模型不會執行這些函式,只讀說明。
模型判斷該不該呼叫
根據使用者的問題,模型決定這次回答需不需要呼叫函式,還是直接用自己的知識回答就夠。
模型整理出呼叫請求
如果需要呼叫,模型會輸出一份結構化資料:呼叫哪個函式、參數填什麼值。這一步模型只是「填表單」,不是真的執行。
你的程式碼負責實際執行
收到呼叫請求後,由你的程式碼真正呼叫該函式(查資料庫、打 API、算數學),把結果傳回給模型。
模型根據結果組成最終回答
拿到函式回傳的結果後,模型用自然語言把它整理成使用者看得懂的回答。
為什麼需要它
沒有 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 一樣能用,只是每家平台的函式描述格式各自不同。
相關術語
更新於 .全部術語