Zilmac 部落格
← 返回技術實踐

2026 AI Agent 技術棧全面解析:GPT、Gemini、Claude、MCP、Function Calling 與 JSON Schema 如何協同工作?

Agent 技術棧 ·約 14 分鐘閱讀

開發者在 Mac 上把 GPT、Gemini、Claude 的工具呼叫與 MCP、JSON Schema 接到同一套 AI Agent 執行環境

2026 年再談 AI Agent,爭論點已經不是「選 GPT、Gemini 還是 Claude」。真正決定系統能否上線的,是模型如何透過 Function Calling 發出結構化請求、JSON Schema 如何約束參數、MCP 如何把工具與上下文插到執行環境。三者疊在一起,才構成可編排、可稽核、可替換模型的 Agent 技術棧。

本文面向正在把聊天機器人升級成可執行 Agent 的工程團隊:拆開各層職責、走完一次完整工具循環,並說明在雲端 Mac 上跑構建類工具時該如何切分邊界。成本側可對照 OpenRouter 上 Claude / GPT / Gemini 的呼叫成本;工作區隔離見 Agent 虛擬檔案系統;跨會話狀態見 Agent Memory 橫向評測。

3
模型層:GPT · Gemini · Claude,可替換推理引擎
1
契約層:Function Calling + JSON Schema
MCP
插槽層:工具、資源與提示詞的標準傳輸

先把棧拆開:模型不是全部

把 Agent 理解成「會說話的模型」會漏掉真正承載可靠性的三層:

  1. 推理引擎:GPT、Gemini、Claude 等,負責規劃、選工具、解釋結果。
  2. 呼叫契約:Function Calling(各家也稱 tool use)加上 JSON Schema,規定「能調什麼、參數長什麼樣」。
  3. 執行時插槽:Model Context Protocol(MCP) 把檔案系統、倉庫、瀏覽器、內部 API 以標準方式接到 Agent 主機。

2025–2026 年的共識是:模型可以換,契約與插槽應盡量穩定。業務程式不要綁死某一家 SDK 的私有函式名,而應圍繞「工具清單 + Schema + 執行沙箱」來設計。

GPT、Gemini、Claude 在 Agent 裡怎麼分工

三家都支援工具呼叫,差異主要在預設風格、多模態入口、長上下文與合規姿態,而不是「有沒有 function call」。

  • GPT 系列:工具循環文件成熟,OpenAI Function Calling 與 Responses / Chat Completions 生態最大,適合作為預設編排器或閘道後端。
  • Gemini:多模態與長上下文強,官方 Function Calling 適合文件、截圖、倉庫樹同時進上下文的 Agent。
  • Claude:工具使用與電腦/程式碼場景口碑穩,Anthropic tool use 適合高風險改程式碼、需要更謹慎拒絕越權呼叫的路徑。

生產上更常見的是路由而不是單模型信仰:規劃用強推理模型,大批量結構化抽取用便宜模型,敏感寫操作固定走帶人工確認的模型檔。路由與帳單拆解見 多模型呼叫成本對照。

工程師在工作台上把 GPT、Gemini、Claude 的工具呼叫與 MCP 伺服器接到同一套 Agent 執行環境
典型結構:使用者意圖 → 模型規劃 → JSON Schema 校驗的工具呼叫 → MCP / 本地執行器 → 觀察結果回寫上下文

Function Calling:模型與世界的合法介面

Function Calling 的本質不是「模型自己執行函式」,而是模型輸出一份符合約定的呼叫意圖,由宿主程式決定是否執行。正確拆分是:

  • 模型:選擇工具名、填充參數、根據觀察繼續規劃。
  • 宿主:鑑權、限流、校驗、實際 I/O、把結果編回訊息列表。

各家 JSON 欄位名略有差異(tools / function / input_schema),但循環相同:宣告工具 → 模型回傳 tool call → 執行 → tool result → 再推理。不要讓模型直接拼 shell 字串當「工具」;那會繞過 Schema,把注入風險交給提示詞。

工程底線

  • 工具名穩定、語意單一:一個工具只做一類副作用。
  • 寫操作與讀操作分開,寫操作預設需要確認或沙箱。
  • 工具結果寫回時保留 call_id,便於稽核與重試。

JSON Schema:工具的型別系統

JSON Schema 在 Agent 棧裡扮演的是編譯期型別 + 執行時校驗。模型再聰明,也應先過 Schema:缺必填欄位、列舉越界、額外屬性,都應在進業務邏輯前失敗,並讓模型看到校驗錯誤後重試。

建議把每個工具的 parameters / input_schema 寫成一份可版本化的 Schema(見 JSON Schema),而不是散落在提示詞裡的「請傳入 repo 和 branch」。

必須寫進 Schema 的約束

  • type、required、additionalProperties: false:減少幻覺欄位。
  • 路徑、URL、列舉用 pattern / enum,不要用自由文字冒充識別碼。
  • 大欄位(日誌、diff)不要塞進參數;改為「寫入工作區檔案 + 回傳路徑」,與 VFS 按需讀取一致。
  • 版本號放 Schema 或工具名後綴(deploy_v2),避免新舊 Agent 共用一份模糊契約。

校驗應發生在模型輸出之後、真實副作用之前。只靠「提示詞裡寫 JSON」無法構成生產控制。

MCP:工具與上下文的通用插槽

MCP 解決的是 Function Calling 之上的發現與傳輸問題:工具不一定寫死在應用程式裡,而可以由 MCP Server 動態列出 tools、resources、prompts。主機(Claude Code、IDE Agent、自建 orchestrator)透過標準協定連線多個 Server。

和「每個模型廠商各寫一套外掛」相比,MCP 的價值是:

  • 工具可插拔:Git、瀏覽器、內部工單系統各跑一個 Server,Agent 主機只維護連線與權限。
  • 上下文可引用:資源 URI 讓大檔不必整段塞進 prompt。
  • 與模型解耦:同一套 MCP 工具清單可餵給 GPT、Gemini 或 Claude 的 Function Calling 層。

落地時仍要把 MCP 工具對應成帶 JSON Schema 的 function 宣告,並在主機側做路徑白名單。MCP 不是安全邊界本身,它是標準插頭;沙箱、金鑰與稽核仍在宿主。

一次完整循環:從意圖到工具結果

以「根據失敗的 iOS 構建日誌提修復 PR」為例,協同順序通常是:

  1. 使用者給出意圖;主機注入系統策略(禁止碰憑證、禁止生產金鑰)。
  2. 模型閱讀工具清單(來自靜態註冊或 MCP list_tools)。
  3. 發出 fetch_ci_log 的 Function Call,參數經 JSON Schema 校驗。
  4. 執行器在沙箱或 雲端 Mac 上取日誌,超長內容落入 VFS 檔案。
  5. 工具結果回寫;模型再呼叫 apply_patch,寫操作走確認或唯讀 diff 預覽。
  6. 若需要記憶「上次 Profile 過期」,寫入 Memory 層而不是塞進 Schema 參數。見 Memory 選型。

任何一步失敗都應結構化錯誤(校驗失敗、權限拒絕、逾時)而不是一段自然語言,否則模型難以正確重試。

對照表與選型

層 負責什麼 不負責什麼 2026 常見選擇
GPT / Gemini / Claude 規劃、選工具、解釋觀察 真實 I/O、鑑權 按任務路由,保留切換能力
Function Calling 把意圖變成帶 id 的工具請求 定義業務權限模型 各廠商 tool use,主機統一適配
JSON Schema 參數形狀、必填、列舉 執行時副作用 版本化 Schema,執行前校驗
MCP 發現工具/資源、標準傳輸 替代沙箱與金鑰保管 每類系統一個 Server + 主機策略

生產落地:校驗、權限、失敗回退

把上述層接上之後,上線前至少要過四道關:

  • Schema 對抗測試:故意缺欄位、多欄位、錯誤列舉,確認宿主拒絕且模型能根據錯誤改參數。
  • 越權工具:清單裡沒有的工具名、過期 MCP Server、偽造 call_id 必須失敗。
  • 副作用隔離:構建、簽署、部署與對話行程分離;Agent 預設拿不到生產憑證。
  • 可觀測性:每次 tool call 記錄工具名、Schema 版本、耗時、成功/校驗失敗/權限失敗。

OWASP 將過度授權與提示注入列為 LLM 應用核心風險,因此「模型說要調就調」不能作為策略。OWASP LLM Top 10 可作為稽核清單錨點。

在雲端 Mac 上跑 Agent 工具鏈

對 iOS / 跨平台團隊,MCP 裡經常會出現 xcodebuild、模擬器、憑證相關工具。這些工具綁定 macOS 與 Apple 工具鏈,不適合塞進普通 Linux 函式沙箱。

務實切分:

  1. 對話與規劃:任意雲上的 GPT / Gemini / Claude。
  2. 倉庫讀寫:VFS / MCP filesystem,路徑白名單。
  3. 真實構建與真機:Zilmac 雲端 Mac 上的受控 MCP Server 或 CI 任務,金鑰留在構建機。

這樣模型棧可以換,Schema 與 MCP 清單保持穩定,Apple 側副作用始終落在可回收的雲端 Mac 會話裡,而不是開發者筆電。

常見問題

Function Calling 和 MCP 是不是重複了?

不重複。Function Calling 是模型輸出工具請求的方式;MCP 是主機發現並連線工具/資源的協定。落地時 MCP 的每個 tool 仍會對應成一次 Function Calling 宣告。

必須三家模型都接嗎?

不必。先選一家把契約與 MCP 跑穩,再用同一套 Schema 做第二家路由。為「評測而接三家」只會放大未校驗的工具面。

JSON Schema 能不能只寫在系統提示詞裡?

不能當作唯一控制。提示詞可輔助模型填參,但拒絕非法參數必須發生在宿主校驗器。否則注入或模型漂移會直接打到後端。

自建 Agent 怎樣避免鎖死某一家 API?

內部統一「工具名 + JSON Schema + 執行結果」結構,對 GPT / Gemini / Claude 只做適配層。MCP Server 對主機暴露同一清單,計費與故障切換放在閘道。

模型可以換,構建機不能含糊

把 GPT、Gemini、Claude 接到同一套 Function Calling 與 MCP 契約之後,真正卡住 iOS 交付的仍是 Apple 工具鏈。Zilmac 雲端 Mac 適合作為受控執行端:Agent 在 Schema 約束下發任務,簽署與 xcodebuild 在隔離的 macOS 上完成。

無需自備實體 Mac,即可給 Agent 接上可稽核的構建插槽。 — 查看雲 Mac 方案

限時優惠

Zilmac

雲端 Mac、遠端開發與 Mac VPS,為 iOS 與跨平台團隊補齊 Apple 工具鏈。

返回首頁
限時優惠 點擊查看套餐