如果你讀過本系列前幾篇——JSON Schema、Function Calling 與 MCP 的技術演進、Structured Output 落地指南、Agent 呼叫鏈上的 JSON 資料流——會發現一個共同點:無論模型廠商、無論協議層,描述「該傳什麼形狀的資料」時,幾乎都在用 JSON Schema(或其子集)。
於是一個自然的問題浮出水面:JSON Schema 會不會成為 AI Agent 的「標準 Contract」——就像 OpenAPI 之於 REST、Protobuf 之於 gRPC 那樣,成為跨團隊、跨 IDE、跨雲廠商的預設握手語言?
本文從「Contract 到底指什麼」出發,梳理 2026 年生態裡的採納現狀、仍存在的裂縫,以及工程上該如何選型。結論先行:JSON Schema 已是 Agent I/O 邊界的事實標準,但不會是唯一一層契約——傳輸、鑑權、編排仍由 MCP、OpenAPI、各 Agent SDK 承擔。
Agent 裡的「Contract」指什麼
在軟體工程裡,Contract(契約)約定雙方交換資料的形狀、語義與錯誤處理方式。AI Agent 比普通 API 更復雜,因為「呼叫方」裡多了一個非確定性的大模型——它可能漏欄位、編引數、或在自然語言與結構化輸出之間搖擺。
因此 Agent 棧裡其實有多層契約,JSON Schema 主要落在payload 形狀這一層:
| 層級 | 契約內容 | 典型技術 |
|---|---|---|
| 模型 ↔ Host | 工具列表、tool_calls 引數、結構化回覆 | JSON Schema(parameters / response_format) |
| Host ↔ 工具提供者 | 工具發現、呼叫、結果回傳 | MCP(inputSchema 為 JSON Schema)、OpenAPI 包裝 |
| Host ↔ 業務系統 | 訂單、工單、審批等領域物件 | JSON Schema + 領域校驗規則 |
| Agent ↔ Agent | 任務委派、多 Agent 協作 | 新興協議(A2A 等)+ Schema 描述訊息體 |
| 傳輸與鑑權 | 誰可以調什麼、憑證如何傳遞 | OAuth、mTLS、MCP 能力協商(非 Schema 職責) |
說「JSON Schema 成為標準 Contract」,在實踐裡通常指:凡是模型與程式之間、程式與工具之間要交換結構化 JSON 的地方,預設用 JSON Schema 描述。傳輸怎麼連、誰有許可權調——那是上一層協議的事。
JSON Schema 已佔據的三條戰線
1. Tool / Function Calling 引數
OpenAI、Google Gemini、Anthropic Claude 的 Tools API 均用 JSON Schema 描述 parameters(或等價欄位)。模型讀 description 理解語義,宿主用同一 Schema 校驗 arguments 再執行——這與我們在資料流一文裡拆解的鏈路一致。
{
"name": "create_ticket",
"description": "在工單系統建立一條記錄",
"parameters": {
"type": "object",
"properties": {
"title": { "type": "string", "description": "工單標題" },
"priority": { "type": "string", "enum": ["low", "medium", "high"] }
},
"required": ["title"],
"additionalProperties": false
}
}
2. Structured Output(模型最終回覆)
當業務不要自然語言、只要 JSON 時,各廠商的 Structured Output / JSON Schema 模式在解碼階段約束 token,使輸出符合 Schema。詳見Structured Output 指南;Gemini 側可參考Gemini 結構化 JSON 教程。
3. MCP Tool 的 inputSchema
MCP 規範明確要求每個 Tool 提供 inputSchema,型別即 JSON Schema。Cursor、Claude Desktop 等 Host 把 MCP 工具對映為模型 API 的 Function Calling 格式時,Schema 往往原樣透傳或做輕微子集裁剪——這是「寫一次 Schema,IDE 與雲端模型共用」的基礎。
三條戰線覆蓋 Agent 生命週期裡幾乎所有結構化 JSON 邊界,這也是「標準 Contract」論點的核心證據。
競品與替代方案
| 方案 | 優勢 | 在 Agent 棧中的位置 |
|---|---|---|
| OpenAPI 3.x | HTTP 全棧描述、生態成熟、程式碼生成 | 描述 REST 後端;Agent 透過 MCP/OpenAPI-to-tools 介面卡消費,而非模型直接讀 OpenAPI |
| Protobuf / gRPC | 強型別、高效能、多語言 stub | 微服務內部 RPC;LLM 側仍需 JSON 檢視或 JSON Schema 橋接 |
| TypeScript + Zod / Pydantic | 開發者體驗好、與程式碼型別一體 | 宿主執行時校驗;常透過 zod-to-json-schema 等生成 Agent 契約 |
| 純 Prompt 模板 | 零依賴、原型快 | 不可版本化、不可 fail-fast,生產 Agent 已很少單獨依賴 |
| 廠商私有 DSL | 可針對自家模型最佳化 | 跨廠商遷移成本高,2024–2026 趨勢是收斂到 JSON Schema 子集 |
關鍵洞察:沒有一種格式能同時最優地服務「模型可讀」與「高效能 RPC」。JSON Schema 贏的是「模型 ↔ 程式」這一環;OpenAPI 與 Protobuf 繼續在各自領地存活,並透過轉換層與 Agent 對接。
為何 JSON Schema 在贏
- 與 LLM 訓練分佈對齊:JSON 在預訓練語料中海量存在,Schema 的
type、enum、description可被模型當作「軟型別提示」。 - 人類與機器雙可讀:產品、後端、Prompt 工程師能同讀一份 Schema,比二進位制 Protobuf 更適合協作與 Code Review。
- 校驗生態現成:ajv、jsonschema(Python)、各雲 API 內建校驗——Structured Output 之後仍建議二次校驗語義與業務規則。
- 廠商收斂:2023 各家用自定義 tool 格式;2024–2026 主流 API 檔案均以 JSON Schema 子集為 parameters / response 的規範表述。
- MCP 與 OpenAPI 的「向下相容」:MCP 選用 JSON Schema 而非發明新 DSL,降低工具作者學習成本;OpenAPI 3 的 Schema 元件可直接複用。
尚未統一的部分
「事實標準」不等於「完全統一」。生產 Agent 仍需處理以下裂縫:
- Schema 方言:OpenAI
strict: true對additionalProperties、required全量覆蓋要求嚴;Gemini、Anthropic 支援的組合型別、$ref深度各異。複雜 Schema 需按目標 API 做相容性測試。 - Draft 版本:生態仍混用 draft-07、2019-09、2020-12;
$defsvsdefinitions等差異會導致生成工具踩坑。 - 語義 vs 語法:Schema 保證「有 priority 欄位且為 string」,不保證「priority=high 是否符合 SLA 政策」——業務規則仍需程式碼或 JSON Logic 等擴充套件。
- 非 JSON 載荷:圖片、音訊、檔案 URI 等多模態 Tool 結果,Schema 只描述後設資料包裝,不替代 Blob 儲存契約。
- 編排與狀態:多步 Agent、Human-in-the-loop、子 Agent 委派——JSON Schema 不描述狀態機,LangGraph、Temporal 等另有一套 DSL。
這些限制說明:期待「一份 Schema 統治 Agent 全棧」不現實;期待「所有結構化 JSON 邊界預設 Schema 化」則已基本成立。
2026 生態訊號
| 訊號 | 含義 |
|---|---|
| MCP Server 數量爆發 + registry 出現 | 工具作者批次產出 inputSchema,Schema 成為可分享、可索引的「工具名片」 |
| 各雲 Structured Output GA | 「Prompt 裡寫 JSON 格式」讓位於 API 級 Schema 約束 |
| Agent SDK 內建 Schema registry | LangChain、Vercel AI SDK 等支援從 Zod/Pydantic 一鍵匯出 tools + response schema |
| 企業 Schema 治理 | 大型團隊把 Agent 工具 Schema 納入 Git、CI 校驗,與 OpenAPI 變更同等對待 |
| A2A / 多 Agent 協議萌芽 | 訊息信封用協議定義,payload 仍傾向 JSON + Schema |
若你正在評估技術債:現在投資 JSON Schema 技能與工具鏈,比在私有 JSON 格式上繼續堆 Prompt 更安全——即便未來出現「Agent Schema 2027」之類的 profile,也大機率是 JSON Schema 的超集或子集 profile,而非全新語言。
會成為「唯一」標準嗎?
分兩層回答:
會(高置信)——作為 Agent結構化 I/O的預設 Contract:Tool 引數、Structured Output、MCP inputSchema、OpenAPI 元件中的 request/response body。新工具、新模型 API 若不提供 JSON Schema 描述,反而顯得「不完整」。
不會(同樣重要)——作為 Agent全棧唯一契約:傳輸(stdio/SSE/HTTP)、鑑權、工具發現、多 Agent 編排、SLA 與配額,仍由 MCP、OpenAPI、各平臺策略覆蓋。JSON Schema 是棧中的「型別層」,不是「網路層」或「治理層」。
┌──────────────────────────────────────────────────┐
│ 治理 / 鑑權 / 審計(OAuth, RBAC, 日誌) │
├──────────────────────────────────────────────────┤
│ 編排 / 狀態(Agent 框架, 工作流引擎) │
├──────────────────────────────────────────────────┤
│ 連線 / 發現(MCP, OpenAPI, gRPC 閘道器) │
├──────────────────────────────────────────────────┤
│ ★ JSON Schema:工具引數 · 結構化輸出 · 訊息體 ★ │
├──────────────────────────────────────────────────┤
│ 執行體(HTTP, DB, 檔案, 瀏覽器自動化…) │
└──────────────────────────────────────────────────┘
落地建議
- 單一 Schema 源:用 Pydantic / Zod 定義領域模型,生成 JSON Schema 供 OpenAI、MCP、檔案共用,避免三份定義漂移。
- 按目標 API 做子集:為 OpenAI strict、Gemini 各維護一份「相容 Schema」或透過 CI 自動檢測不支援的關鍵字。
- description 當 Prompt 寫:
description直接影響模型是否誤呼叫;與欄位命名一樣值得 Review。 - Structured Output + 服務端二次校驗:解碼約束降低語法錯誤,業務規則仍用同一 Schema + 自定義 validator。
- 版本化與變更日誌:Schema 變更 = API 破壞性變更;Agent 客戶端應 pin Schema 版本或做向後相容。
- 本機先驗:上線前用 JSON 工具箱校驗 Schema 語法與樣例 payload,減少聯調輪次。
常見問題 FAQ
JSON Schema 和 OpenAPI 在 Agent 裡是什麼關係?
OpenAPI 描述 HTTP REST 服務的完整契約(路徑、方法、鑑權);JSON Schema 常作為 OpenAPI 元件描述 request/response body。Agent 側 Tool Calling 與 MCP 更直接消費 JSON Schema 子集;REST 服務仍用 OpenAPI,可透過 MCP Server 或適配層把 OpenAPI 對映為 Agent 工具。
各廠商支援的 JSON Schema 完全一樣嗎?
不完全一樣。OpenAI strict mode、Gemini responseJsonSchema、Anthropic 等均支援 JSON Schema 子集,對 $ref、oneOf、additionalProperties 等特性支援程度不同。生產環境應針對目標 API 做相容性測試,並避免過於複雜的 Schema。
能用 TypeScript / Zod 代替 JSON Schema 嗎?
在純 TypeScript 宿主內,Zod 等庫更適合執行時校驗與型別推導;但模型 API 與 MCP 協議層仍要求 JSON Schema(或可自動轉換的子集)。常見做法是 Zod → JSON Schema 程式碼生成,單一 Schema 源驅動型別與 Agent 契約。
JSON Schema 能描述 Agent 之間的協作協議嗎?
JSON Schema 擅長描述單次訊息或工具呼叫的資料結構,不擅長描述多 Agent 編排、會話狀態機或傳輸層。A2A、MCP 等協議在 Schema 之上定義發現、鑑權與訊息信封;Schema 是 payload 層的形狀約束。
沒有 JSON Schema 的 Agent 還能用嗎?
可以,小指令碼或原型仍可用 Prompt 約定 JSON 格式。但缺少可校驗契約時,解析失敗、欄位漂移與幻覺引數會在規模化時放大。Structured Output 與 Tool parameters 幾乎都已預設走 Schema。
如何驗證 Agent 用的 JSON Schema?
在 JSON 工具箱瀏覽器端本機校驗 Schema 語法,並用樣例 tool arguments 或模型輸出做結構匹配,資料不上傳伺服器。
總結與下一步
JSON Schema 正在成為 AI Agent 結構化 I/O 的標準 Contract——不是理論預測,而是 OpenAI、Google、Anthropic、MCP 與主流 Agent SDK 共同鋪就的事實軌道。它不會取代 OpenAPI 或 Protobuf 的全部職能,但在「模型與程式握手」這一環,替代方案的空間已急劇縮小。
下一步:選一條真實業務鏈路(例如「使用者意圖 → 結構化抽取 → 調工單 API」),用一份 JSON Schema 同時驅動 Structured Output 與 Tool parameters,並在 JSON 工具箱本機驗通後再接入 MCP。系列閱讀建議按演進順序:技術演進總覽 → Structured Output → 資料流 → 本文(Contract 判斷)。