一句話定義

Function Calling(函式呼叫)是讓 AI 模型輸出一段結構化 JSON、指定「該呼叫哪個功能、帶什麼參數」的機制,模型只負責決定,執行交給你的程式。

30 秒看重點

  • 是什麼:Function Calling 是模型把「我想做這件事」寫成機器讀得懂的格式,交給外部程式去跑。
  • 為什麼重要:沒有它,AI 就只能講話;有了它,AI 才開始查資料、寄信、下單,變成會做事的東西。
  • 跟誰相關:串接 API 的工程師、評估 AI 導入的主管,還有每天用 ChatGPT 查即時資訊的一般使用者。
  • 最常見的誤解:以為模型自己會執行那個功能,其實模型從頭到尾沒碰過你的程式碼。
  • 記住這件事就夠了:模型只是填單的人,跑腿的還是你寫的程式,權限也是你給的。

Function Calling 到底是什麼?

Function Calling 是一種「模型填單、程式執行」的分工方式:你先用固定格式告訴模型有哪些功能可以用,模型判斷該用哪一個之後,回你一段包含功能名稱與參數的 JSON,實際去執行的是你的程式。

這套做法是 OpenAI 在 2023 年 6 月 13 日正式做成 API 功能的。當時的公告寫得很直白:開發者可以把函式描述給 gpt-4-0613gpt-3.5-turbo-0613,模型會自己判斷什麼時候該呼叫,並回傳符合函式簽名的 JSON。同一篇公告順便降價,gpt-3.5-turbo 便宜 25%,text-embedding-ada-002 直接砍 75%(那一年大家還在為降價尖叫 XD)。

Anthropic 的官方文件把這件事講得更狠一句:模型永遠不會自己執行任何東西,它只發出一個結構化的請求,程式碼跑完再把結果餵回對話裡。

生活比喻:你可以想像成速食店的點餐機。你按了「大薯加可樂去冰」,機器不會自己去炸薯條,它只印一張規格清楚的單子送進廚房,廚房才是真的在油鍋前面的人。Function Calling 就是這樣,模型是那台很會理解你在講什麼的點餐機,你的程式是廚房。單子填錯欄位,廚房也不收。

為什麼會有 Function Calling?

因為模型本身有兩個天生的缺陷,光靠生成文字補不起來。

問題一:它不能動手。 模型可以把「幫你寄一封信給客戶」寫得非常漂亮,但信不會寄出去。查今天匯率、查資料庫裡的訂單狀態也一樣,這些資料不在它的訓練資料裡,硬要它答,它就開始編,也就是我們常講的 AI 幻覺。

問題二:它講的是人話,你的程式要的是欄位。 早年大家的做法是讓模型自由回答,再用一堆字串比對硬挖出意圖,挖到懷疑人生。Anthropic 文件有一句話我覺得可以裱起來:如果你正在寫正規表達式從模型輸出裡挖出一個決定,那個決定本來就該是一次工具呼叫。

所以 Function Calling 做的事情很單純:把「決定」這件事從自由文字裡拉出來,變成一份有欄位、有型別、有必填檢查的表單。

Function Calling 是怎麼運作的?

運作邏輯是一個來回的迴圈:模型提出要求、你的程式執行、結果再送回模型,直到它不再要求為止。

以 Anthropic 官方文件描述的流程為例,實際上是這三步:

  1. 你先定義工具:一個工具定義只有三個部分,名稱、描述、以及用 JSON Schema 寫的輸入格式。描述寫得含糊,模型就會挑錯工具,這步看起來最不起眼,卻最容易翻車。
  2. 模型決定要呼叫誰:模型回應時會帶 stop_reason: "tool_use",內容裡是它挑好的工具名稱跟它自己填的參數。這時候你的程式接手,真的去查資料庫、真的去打那支 API。
  3. 把結果送回去:執行完的輸出包成 tool_result 再送一次請求,模型讀到結果才接著講人話。只要 stop_reason 還是 tool_use,這個迴圈就繼續轉。

名詞小教室JSON Schema 是一份描述「這份資料長什麼樣」的規格書,規定哪些欄位必填、型別是數字還是文字。就像掛號單上的格線,生日欄不能填「明天」。OpenAI 後來加的 strict 模式,就是靠這份規格書限制模型只能吐出合格式的內容。

順帶一提,工具不一定都跑在你家。Anthropic 把工具分成三種:你自己寫的、官方訂好規格但你來執行的(像 bash、text_editor),以及直接跑在官方伺服器上的(像 web_search、code_execution)。第三種你連 tool_result 都不用組,結果回來就已經是煮好的了。

Function Calling 跟 MCP 差在哪?

先講結論:Function Calling 是模型「怎麼開口要」,MCP 是這些要求「怎麼被搬到別的系統也能用」,兩個是上下游,不是二選一。

比較項目Function CallingMCP
解決什麼問題讓模型輸出結構化的呼叫意圖讓工具能被統一發現、呼叫、管理
存在形式各家 API 的參數格式建在 JSON-RPC 2.0 上的開放協定
綁定程度工具定義寫死在你的應用裡用戶端與伺服器分離,可跨模型重用
新增工具成本通常要改程式再重新部署掛一台伺服器,工具自己被發現
我會在什麼情況選它一兩個工具、只服務單一模型的小專案工具數量會長大、要跨廠商共用時

從這張表可以看出來,MCP 不是來取代 Function Calling 的,它是把「怎麼執行、怎麼被找到」這層抽出來變標準,模型那端該填的單子還是要填。所以你會看到 MCP 的三個核心原語裡有 Tools,也有 Function Calling 沒有的 Resources 跟 Prompts。

你會在哪些 AI 工具看到 Function Calling?

你在用的 AI 產品,只要它會「去查東西」,底下跑的多半就是這套。

  • ChatGPT、Claude 查即時資訊:你問今天的新聞,它跑去搜尋再回來回答,那次搜尋就是一次工具呼叫。
  • Gemini API 的三種模式:Google 讓你用 AUTO、ANY、NONE 控制模型的自由度。AUTO 是預設,模型自己決定要不要呼叫;ANY 是強迫它每次都得呼叫;NONE 則是暫時關掉,工具定義留著但不准用。
  • 各種 AI 代理產品:Agent 之所以能連續做完好幾個步驟,就是靠一次又一次的工具呼叫串起來的。

如果你是工程師,OpenAI、Anthropic、Google 三家的 API 都有各自的寫法,名字有的叫 function calling、有的叫 tool use,概念一樣。想比較模型的實力,柏克萊有個 BFCL(Berkeley Function Calling Leaderboard)專門評這件事,目前到 V4,用抽象語法樹的方式檢查模型呼叫得對不對,也一併看成本跟延遲,比看行銷簡報實在多了。

學 Function Calling 最常見的 3 個誤解

  1. 誤解一:模型會自己執行功能 — 真相是它連你的程式碼長怎樣都沒看過,它只看得到你給的規格跟你回傳的結果。執行、權限、出包,全都在你這邊。
  2. 誤解二:開了 strict 模式就不會亂講 — 真相是 strict 用限制解碼保證格式一定對,OpenAI 說 gpt-4o-2024-08-06 在複雜 JSON Schema 的遵循度可以到 100%,而舊的 gpt-4-0613 不到 40%。可是它管的是格式,不是內容。模型被逼著一定要填欄位時,反而更容易掰一個看起來很合理的數值出來(尤其是天氣、股價這種即時資料)。
  3. 誤解三:工具接上去就沒事了 — 真相是工具接得越多,被騙的面積越大。資安圈已經把它對到經典的混淆代理人問題:一份被動了手腳的網頁或文件,可能誘導 AI 去呼叫它本來不該碰的工具。你以為在給它工具,其實在給它鑰匙 給權限前先想清楚最壞會發生什麼。

想多了解 Function Calling,從哪開始?

「我不寫程式,也需要懂這個嗎?」我覺得懂一件事就夠了:AI 幫你做的每個動作背後都有人給過權限,出事的時候要問的是那個權限誰開的。

如果你會寫一點程式,最快的路是拿官方文件的範例照做一次,親手體驗「模型回一段 JSON、你自己去查、再塞回去」的迴圈。跑過一次就懂了,真的不難。


常見問題 FAQ

Function Calling 跟 AI 有什麼關係?

Function Calling 是 AI 模型與外部世界溝通的標準做法。模型本身只能生成文字,透過 Function Calling,它可以輸出結構化的呼叫請求,讓應用程式代替它查詢資料、執行動作,再把結果送回模型繼續回答。

為什麼 Function Calling 突然這麼紅?

因為 AI 代理在 2025 到 2026 年變成主流產品形態。OpenAI 在 2023 年 6 月推出這個功能時,它還只是連接外部 API 的便利工具;等到大家開始做能連續執行多步驟的 Agent,每一步都是一次工具呼叫,這個機制就從加分項變成基礎建設。

我不是工程師也需要懂 Function Calling 嗎?

不需要會寫,但知道原理有幫助。理解模型只是提出請求、實際執行的是應用程式之後,你會更清楚 AI 助理能做什麼、不能做什麼,也比較知道在授權它連接你的信箱或行事曆時,風險落在哪裡。

Function Calling 的中文翻譯有沒有統一?

台灣多數技術文件直接沿用英文原詞 Function Calling,中文則寫成函式呼叫。中國比較常用「函數調用」的說法。本站採用「函式呼叫」,因為 function 在台灣的程式教育慣譯就是函式,調用則是大陸用語。

學會 Function Calling 之後,下一個該學什麼?

建議往兩個方向走。想了解工具怎麼被標準化管理,就看 MCP;想知道這些呼叫串起來會變成什麼,就看 AI Agent。這三個詞合起來,大致就是 2026 年 AI 應用的骨架。


延伸閱讀


參考來源

  1. How tool use works|Claude Platform Docs — 工具定義的三個部分、stop_reason: "tool_use" 迴圈流程、模型不自行執行、三種工具執行位置。
  2. Function calling and other API updates|OpenAI — 2023 年 6 月 13 日推出時支援的模型與降價幅度。
  3. Function calling with the Gemini API|Google AI for Developers — AUTO、ANY、NONE 三種模式的行為差異。
  4. Berkeley Function Calling Leaderboard (BFCL) V4|Gorilla — 抽象語法樹評分方式與版本演進。
  5. MCP vs. Function Calling|Descope — 兩者的分工關係與 MCP 的協定基礎。

整理一下重點:Function Calling 真的就是一件事,模型負責填單、你的程式負責跑腿,中間那張單子長什麼樣,是你自己定的。

希望這一篇有讓你對 Function Calling 有比較具體的理解哩~如果發現事實錯誤、定義不準、或翻譯卡卡的,歡迎透過聯絡頁指正,看到我們會盡快修。

我們下篇文章見囉~

本條目由 Array 報報 AI 編輯部根據上方「參考來源」整理,文末已揭露 AI 生成 + 公開資料引用。