Function Calling:讓 LLM 呼叫外部 API
RAG 讓 AI 能「讀資料」,但現實中更多工作需要它執行動作:查天氣、訂機票、查庫存、算匯率。這些都在外部系統裡,模型本身做不到。
Function Calling(函式呼叫) 解決這件事:你可以定義一些工具給模型,當它判斷需要時,會回傳「要呼叫哪個函式、參數是什麼」,由你的程式去執行。
為什麼需要 Function Calling?
LLM 訓練完的那一刻,知識就停止了。它不知道:
- 台北現在幾度
- 某支股票現在的價格
- 資料庫裡這個帳號的訂單狀態
但它可以呼叫你提供的函式拿到這些即時資訊,再據此回答。這讓 AI 從「只會聊天」變成「能做事的助理」。
運作原理:一次來回
Function Calling 不是模型自己跑程式,而是兩方配合:
- 使用者提問:「台北今天天氣如何?」
- 模型判斷需要天氣資料,回傳一個結構化請求:
{"function": "get_weather", "args": {"city": "Taipei"}}。 - 你的程式收到這個請求,去執行真正的 get_weather API,拿到結果(例如
28°C 晴)。 - 你把結果回給模型。
- 模型用真實資料組織成自然語言回答:「台北今天約 28 度,天氣晴朗。」
重點:模型只負責決定「要調哪個工具、參數多少」,實際執行是你的程式。
怎麼定義一個工具?
你需要用 JSON Schema 描述這個函式,讓模型知道有哪些參數、什麼類型:
1 | { |
完整實作(Python)
1 | import os, json |
實際應用場景
- 查即時資訊:天氣、股價、交通、匯率。
- 操作資料庫:查詢訂單、用戶資料後作答。
- 觸發動作:寄郵件、建立 ticket、發送通知。
- 計算器/程式碼執行:讓模型呼叫計算工具,避免算錯。
- 結合 RAG:RAG 給「讀」的能力,Function Calling 給「做」的能力,兩者常一起用。
注意事項
- 驗證參數:模型可能傳入錯誤或惡意參數,執行前務必檢查。
- 安全邊界:不要給模型能刪除資料、付款等高危工具的未經審查存取。
- 網路延遲:每次工具來回都是一次等待,多輪工具會變慢。
- 成本:每調一次工具就多一次請求,注意 token 累積。
小結
- Function Calling = 定義工具讓模型決定何時呼叫,你的程式負責實際執行。
- 流程:問 → 模型回傳工具請求 → 你執行 → 回結果 → 模型組織回答。
- 用 JSON Schema 描述函式參數。
- 結合 RAG 與 Agent,就能打造能「讀又能做」的完整助理。
學會單個工具後,下一篇我們玩更大的:用 Ollama 在自己的電腦本地部署大模型,完全離線、免費、隱私。
《AI 新時代》系列第 07 篇。上一篇:RAG · 下一篇預告:Local LLM