~/tools / Structured Output Schema Checker
Structured Output Schema Checker — 依據 OpenAI、Anthropic 與 Gemini 的限制檢查 JSON Schema
依據 OpenAI、Anthropic 與 Gemini 文件載明的結構化輸出限制來檢查 JSON Schema。在把 schema 送到 API 之前,先看出哪些關鍵字會被拒絕、被忽略或文件未載明。資料不會離開你的瀏覽器。
規則已於 2026-10-23 對照各廠商的文件確認。
未檢查:巢狀深度、長 enum 的限制,以及廠商沒有在文件中載明的一切內容。廠商會變更這些規則,請對照最新的文件確認。
所有處理都在你的瀏覽器中進行,schema 不會被上傳。
AI API 可以強制模型的回覆符合某個 JSON Schema,但每家廠商只支援 JSON Schema 的一部分,而且支援的範圍各不相同。在某一家能用的 schema,可能被另一家拒絕,或雖然被接受,其中部分規則卻被悄悄丟掉。本工具會讀取你的 schema,並依據各廠商文件所載明的內容逐項檢查:例如 additionalProperties 必須設為 false 這類必要規則、不支援的關鍵字、雖被接受但不會強制執行的關鍵字,以及已公布的大小限制。檢查結果分成三種,讓你分得出哪些是文件載明的錯誤,哪些只是文件沒有列出的關鍵字。這些規則是在工具下方所示的日期,對照各廠商的文件確認過的。
使用情境
- 在把 schema 當作結構化輸出請求送出之前先檢查,不必等到收到 400 錯誤才發現問題
- 找出哪些關鍵字必須從 schema 中移出,改放到你自己的驗證程式碼裡
- 比較 OpenAI、Anthropic 與 Gemini 對同一份 schema 各自接受什麼
使用方法
- 貼上你打算送出的 JSON Schema,或載入範例。
- 查看每家廠商的結果。不接受表示文件載明這份 schema 會失敗或必須修改。已忽略表示該關鍵字會被接受但不會強制執行。文件未載明表示該關鍵字不在廠商的支援關鍵字清單中。
- 請修正標示為不接受的項目,其餘部分再用實際的請求確認。
FAQ
結果沒有問題,是否代表 API 一定會接受我的 schema?
不是。本工具檢查的是廠商在文件中載明的規則,它不會呼叫任何 API,而且文件也未涵蓋所有情況,所以 schema 仍有可能被拒絕。請把沒有問題的結果理解為「沒有已知問題」,並用實際的請求測試。
不接受、已忽略與文件未載明各代表什麼?
不接受:文件載明該關鍵字不受支援,或必須遵守某項規則,例如 additionalProperties 必須為 false。已忽略:文件載明該關鍵字會被接受但不會強制執行,所以模型可能違反它。文件未載明:該關鍵字不在廠商的支援關鍵字清單中,因此可能被拒絕或被忽略,文件並未說明是哪一種。
為什麼 OpenAI 要求每個屬性都必須列入 required?
在 strict 模式下,OpenAI 要求所有屬性都列在 required 中,且 additionalProperties 必須為 false。若要讓某個欄位變成選填,文件的做法是搭配 null 使用聯集型別,例如把 type 設為 ["string", "null"]。
我的 schema 用了 minimum、maxLength 之類的關鍵字,該怎麼辦?
Anthropic 不支援數值限制與字串長度限制,Gemini 則不會強制執行長度限制。請把它們從 schema 中移除,改在 description 欄位中說明限制,並在收到回覆後自行檢查數值。JSON Schema Validator 工具可以執行這項檢查。
本工具會檢查遞迴嗎?
會,針對 Anthropic 檢查,因為它的文件將遞迴 schema 列為不支援。OpenAI 與 Gemini 的文件載明支援遞迴 schema,所以不會標示。
哪些項目不在檢查範圍內?
巢狀深度、長 enum 的限制,以及廠商沒有在文件中載明的一切內容。本工具也不知道較新的模型,或檢查日期之後新增的功能,所以需要時請對照最新的文件確認。
我的 schema 會被傳送到伺服器嗎?
不會。檢查在你的瀏覽器中執行。