本文へスキップ

AI運用の判断と根拠を引く

トップへ戻る

構造化出力/スキーマ検証

用語・参照用語・参照公式仕様のみ公式仕様のみ現行現行として扱う

記事状態: 公開 · 最終確認: 2026-10-05

要点

構造化された出力やJSON データ形式の定義は、LLM出力を機械処理しやすい構造へ制約し、構文の読み取り/データ形式の定義 失敗を減らすための境界です。データ形式の定義適合を、内容の真偽、業務妥当性、認可、最新状態、副作用の安全性と同一視しません。

現在の判断

構造化された出力やJSON データ形式の定義は、LLM出力を機械処理しやすい構造へ制約し、構文の読み取り/データ形式の定義 失敗を減らすための境界です。データ形式の定義適合を、内容の真偽、業務妥当性、認可、最新状態、副作用の安全性と同一視しません。

どこまで当てはまるか

構造化出力/スキーマ検証

詳しく理解する

実行前に分けて確認する五つの条件

外部への変更・送信へ到達する前に、少なくとも次を分離します。

  • 構文/構文の読み取り: JSONとして読めるか。
  • プロバイダーのスキーマ適合性:プロバイダーの構造化出力モードが、対応するサブセットに従っているか。
  • 独立したスキーマ検証:アプリケーション側のバリデータにおいて、期待される方言/スキーマに適合するか。
  • 意味論的検証:ID、単位、時刻、金額、相互関係、および業務上の不変条件が正しいか。
  • 実行ゲート:身元/認可、最新バージョン、前提条件、同じ要求の再送で処理を重複させない仕組み、および必要な人による確認・承認を満たしているか。

前段PASSを後段PASSの代用にしません。

データ形式の規格・版と、提供元が対応する範囲

「JSON データ形式の定義対応」という表記だけでDraft 2020-12全機能が同一に使えるとは仮定しません。

OpenAIのstrict 構造化された出力は、JSON データ形式の定義のサブセットを使用します。公式ドキュメント自体が、標準のメタスキーマにはstrictモードに対応していない機能があることを示しています。

Geminiの構造化出力もJSON データ形式の定義のサブセットであり、大規模または深いスキーマは拒否される可能性があります。プロバイダー/モデル/APIのインターフェースごとに、サポートされているキーワードと複雑性の制限をフィクスチャで確認します。

スキーマには仕様の種類・バージョン、提供元・モデル・APIの改訂版、スキーマのハッシュを付ける。利用側の検証プログラムのバージョンも監査記録に残す。

形式への適合と業務上の意味は異なる

JSON データ形式の定義 Draft 2020-12において、formatのアサーション動作は語彙(vocabulary)や実装に依存します。emailやdate-timeなどがスキーマバリデータを通過したとしても、それによってメールボックスの実在、業務時間、タイムゾーンのポリシー、あるいは組織上の許可までが証明されるわけではありません。

ドメイン検証をスキーマ検証から分離します。

形式が正しくても内容が誤っている場合

制約付きデコーディング(constrained decoding)によってスキーマの妥当性が高くても、値そのものが誤っている場合があります。

例: - 存在する型のcustomer_idだが別顧客 - enum内のactionだが意図と違う - integerの金額だが通貨・桁が違う - ISO形式の日時だが、タイムゾーンや業務上の締め時間が異なる場合 - 必須フィールドを満たすために未知の値を生成する - ツールの引数は形式上正しいが、操作対象のバージョンが古い

運用指標は、スキーマの妥当性率だけでなく、意味的な正確性、実行の正確性、不適切な内容の受け入れ率を分離して管理します。

外部システムを変更するツール

ツールの引数がスキーマとして妥当であっても、そのまま実行することはありません。

実行直前に、主体、認可、リソースのバージョン、業務上の不変条件、重複防止/べき等性のためのキー、および確認要件を再検証します。LLMが生成した「authorized=true」や「confirmed=true」のようなフィールドを、権限の証明として使用することはありません。

データ形式の変更と互換性

スキーマの変更は、バージョン管理された取り決めとして扱う。項目名を保ったまま意味・単位・Nullを許す条件を変えないようにする。データを生成する側と利用する側の互換性を確かめる試験用データを用意する。

プロバイダー側の構造化出力のサブセットやAPIのインターフェースが変更された場合も、同じスキーマを用いて再試験を行います。

OPERATING CHECK

各プロバイダー、モデル、バージョンにおいて、不正な形式のJSON、フィールドの不足または過剰、型や列挙型の誤り、サポートされていないキーワード、深いネスト、拒絶、切り捨て、スキーマには適合するが意味的に誤っているエラー、古いID、単位・タイムゾーン・通貨の誤り、権限のないツール呼び出し、重複実行、スキーマバージョンの不一致を試験します。

解析の妥当性、スキーマの妥当性、意味的な正確性、実行の正確性、不適切な内容の受け入れ、拒絶/エラーを、個別の指標として記録します。

実装・運用

本項は、2026-10-05時点のJSON データ形式の定義 Draft 2020-12、OpenAIおよびGeminiの公式な構造化出力(structured-output)ドキュメント、および2026年の独立した構造化出力の評価に基づくデスクリサーチです。本番環境のスキーマや、実際のプロバイダーへの呼び出しは検査していません。

よくある失敗・反証

  • 拒否、セーフティストップ、最大トークンによる切り捨て、タイムアウト、およびツール/実行時エラーを、スキーマ検証済みの成功オブジェクトへと変換することはありません。

    リトライの対象は失敗の分類によって限定し、スキーマを通過させるために業務上の意味を変更することはありません。リトライ後も、同一の冪等性および前提条件の境界を維持します。

  • サポートされていないキーワードや方言、スキーマの複雑さによる拒絶、拒絶、切り捨て、タイムアウト、スキーマには適合するが意味的に誤っているエラー、古いIDやバージョン、単位・タイムゾーン・通貨のエラー、捏造された必須値、数値精度の不一致、フォーマットの意味的な不一致、正規表現の移植性、プロバイダーのサブセットによる乖離、権限のないツール呼び出し、重複実行、前提条件の失敗、スキーマ進化の不一致、バリデータ回避、検証ログの漏洩を想定します。

  • スキーマへの適合だけを根拠に、意味も正しく安全に実行できると判断しない。5段階の確認と、提供元が対応する仕様の範囲を、監査できる形で固定する。組織固有のスキーマを使う場合は、その正確な取り決めに対応する試験用データを追加する。

実務での使い方

  • 本項は、2026-10-05時点のJSON データ形式の定義 Draft 2020-12、OpenAIおよびGeminiの公式な構造化出力(structured-output)ドキュメント、および2026年の独立した構造化出力の評価に基づくデスクリサーチです。本番環境のスキーマや、実際のプロバイダーへの呼び出しは検査していません。

まだ確認できていないこと

  • EA-240-UNKNOWN-01

    対象となるプロバイダー/モデル/APIの改訂版、組織のスキーマ、Anthropicの現在のサブセット、ストリーミング/拒否に関する契約、バリデータの実装/バージョン、スキーマレジストリ、業務上の不変条件、認可、同じ要求の再送で処理を重複させない仕組み、数値精度、およびロギング/保持については未確認です。

根拠資料

更新履歴

  1. EA-240-FIRST-20261005: 正式な監査および公開の紐付け

出典ID・検証情報・機械可読データ

根拠の種類と情報の鮮度は、ラベルとアイコンで確認できます。

記事ID
EA-240
最終確認日
2026-10-05
提供元・モデル・プラン・利用環境
—
対象地域
—
元資料の全文と収録照合記録
PUBLIC_CLAIM

Structured OutputやJSON Schemaは、LLM出力を機械処理しやすい構造へ制約し、parse/schema failureを減らすための境界です。schema適合を、内容の真偽、業務妥当性、認可、最新状態、副作用の安全性と同一視しません。

FIVE_GATES

side effectへ到達する前に、少なくとも次を分離します。

  • syntax/parse: JSONとして読めるか。
  • provider schema conformance: providerのstructured-output modeが対応subsetに従っているか。
  • independent schema validation: application側validatorで期待dialect/schemaに適合するか。
  • semantic validation: ID、単位、時刻、金額、相互関係、business invariantが正しいか。
  • execution gate: identity/authorization、最新version、precondition、idempotency、必要なhuman confirmationを満たすか。

前段PASSを後段PASSの代用にしません。

SCHEMA_DIALECT_AND_PROVIDER_SUBSET

「JSON Schema対応」という表記だけでDraft 2020-12全機能が同一に使えるとは仮定しません。

OpenAI strict structured outputはJSON Schemaのsubsetを使用します。公式documentation自身が、標準meta-schemaにはstrict mode未対応featureがあることを示しています。

Gemini structured outputsもJSON Schemaのsubsetであり、大規模・深いschemaは拒否され得ます。provider/model/API surfaceごとにsupported keywordとcomplexity limitをfixtureで確認します。

schemaにはdialect/version、provider/model/API revision、schema hashを付け、consumer側validator versionも監査証跡へ残します。

FORMAT_IS_NOT_BUSINESS_SEMANTICS

JSON Schema Draft 2020-12ではformatのassertion behaviorはvocabulary/implementationに依存します。email/date-time等がschema validatorを通っても、メールボックス実在、業務時間、timezone policy、組織上の許可までは証明しません。

domain validationをschema validationから分離します。

SCHEMA_VALID_BUT_WRONG

constrained decodingでschema validityが高くても、値そのものが誤っている場合があります。

例: - 存在する型のcustomer_idだが別顧客 - enum内のactionだが意図と違う - integerの金額だが通貨・桁が違う - ISO date-timeだがtimezone/business cutoffが違う - required fieldを満たすため未知値を生成 - tool argumentsはvalidだが対象versionが古い

運用metricはschema-valid率だけでなくsemantic accuracy、executable accuracy、unsafe-accept rateを分離します。

REFUSAL_AND_FAILURE_STATES

refusal、safety stop、max-token truncation、timeout、tool/runtime errorをschema-valid success objectへ変換しません。

retry対象はfailure classで限定し、schemaを通すためにbusiness meaningを変更しません。retry後も同一idempotency/precondition boundaryを維持します。

SIDE_EFFECTING_TOOLS

tool argumentがschema-validでも、そのまま実行しません。

実行直前にprincipal、authorization、resource version、business invariant、duplicate/idempotency key、confirmation requirementを再検証します。LLMが生成した「authorized=true」「confirmed=true」のようなfieldを権限証明に使いません。

SCHEMA_EVOLUTION

schema変更はversioned contractとして扱います。field名を維持したまま意味・単位・nullable semanticsを変えないようにし、producer/consumerの互換fixtureを持ちます。

provider側structured-output subsetやAPI surface変更時も同じschemaで再試験します。

OPERATING_CHECK

各provider/model/versionで、malformed JSON、missing/extra field、wrong type/enum、unsupported keyword、deep nesting、refusal、truncation、schema-valid semantic error、stale ID、wrong unit/timezone/currency、unauthorized tool call、duplicate execution、schema-version mismatchを試験します。

parse validity、schema validity、semantic accuracy、executable accuracy、unsafe acceptance、refusal/errorを別metricとして記録します。

FAILURE_ENVELOPE

unsupported keyword/dialect、schema complexity rejection、refusal、truncation、timeout、schema-valid semantic error、stale ID/version、unit/timezone/currency error、fabricated required value、numeric precision mismatch、format semantics mismatch、regex portability、provider subset drift、unauthorized tool call、duplicate execution、precondition failure、schema evolution mismatch、validator bypass、validation-log leakageを想定します。

IMPLEMENTATION_STATE

本項は2026-10-05時点のJSON Schema Draft 2020-12、OpenAI/Gemini公式structured-output documentation、および2026年の独立structured-output evaluationsに基づくdesk researchです。production schemaやlive provider callは未検査です。

SAFE_WORDING

Structured Output/JSON Schemaは構造適合を強化しますが、正しい答え、安全なtransaction、認可済み操作を保証しません。providerごとのschema subset/dialect/versionを固定し、application側でsemantic validation、authorization、precondition、idempotencyを別gateとして実施してください。

OPEN_UNKNOWN

対象provider/model/API revision、organization schema、Anthropic current subset、streaming/refusal contract、validator implementation/version、schema registry、business invariants、authorization、idempotency、numeric precision、logging/retentionは未確認です。

STOP_CONDITION

schema-validをsemantic-validやexecution-safeへ昇格させず、five-gate modelとprovider subsetを監査可能な形で固定します。organization固有schemaが必要な場合はexact contractに対するfixtureを追加します。

  • EA-240-CURRENT-APPROVAL研究資料研究資料根拠の出所: AUDITED_CANONICAL_RESEARCH_PACKET

    現行本文の監査・revision対応

    裏付ける内容
    現行台帳のAUDIT_PASSと候補・revision・本文ハッシュの対応を確認しています。
    確認日
    —
    出典・実験ID
    CANDIDATE-EA240-FIRST-20261005-C1
    検証箇所
    1KqhJtiSb2S84rWmeYVwKcT_76dBwZ_B0ZZuAWQqH0rQ · EA_REVISION_LEDGER!A43:U43 · EA-240-FIRST-20261005
    適用範囲
    —
    出典・来歴
    CURRENT_CANONICAL_APPROVAL_READBACK
    限界
    監査状態と来歴の記録です。外部根拠の最新性や本文の全主張を追加保証しません。
  • EA-240-CURRENT-BODY-READBACK実装資料実装資料根拠の出所: IMPLEMENTATION_READBACK

    現行本文の収録照合

    裏付ける内容
    公開生成入力の本文SHA-256が、監査済み候補に結び付いたハッシュと一致しています。
    確認日
    2026-10-12
    出典・実験ID
    BODY-SHA256:1148f544c3f41ccc5c760337976e97962af6a567cfc47d5a1faad400c4f2f772
    検証箇所
    content/staging/EA-240.md · 1148f544c3f41ccc5c760337976e97962af6a567cfc47d5a1faad400c4f2f772 · EA-240-FIRST-20261005
    適用範囲
    —
    出典・来歴
    CURRENT_APPROVED_BODY_HASH_MATCH
    限界
    本文の同一性の検査です。外部システムの挙動や全主張の真偽を実証したものではありません。
  • EVD-EA-240-URL-B1ED6CF92876研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCE

    E1 — JSON Schema, “Specification / Draft 2020-12”, JSON Schema project, published 2022-06-16, accessed 2026-10-05.

    裏付ける内容
    —
    確認日
    —
    出典・実験ID
    SRC-EA-240-URL-B1ED6CF92876
    検証箇所
    EVIDENCE_TABLE · E1 · Canonical URL: https://json-schema.org/specification
    適用範囲
    EVIDENCE_TABLE
    出典・来歴
    SOURCE_PACKET_REFERENCE_PROJECTED
    限界
    元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
  • EVD-EA-240-URL-2551F1B1287D研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCE

    E2 — JSON Schema Validation: A Vocabulary for Structural Validation of JSON, Draft 2020-12, accessed 2026-10-05.

    裏付ける内容
    —
    確認日
    —
    出典・実験ID
    SRC-EA-240-URL-2551F1B1287D
    検証箇所
    EVIDENCE_TABLE · E2 · Canonical URL: https://json-schema.org/draft/2020-12/json-schema-validation
    適用範囲
    EVIDENCE_TABLE
    出典・来歴
    SOURCE_PACKET_REFERENCE_PROJECTED
    限界
    元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
  • EVD-EA-240-URL-F82212725495研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCE

    E3 — OpenAI API Reference, “Create a model response”, accessed 2026-10-05.

    裏付ける内容
    —
    確認日
    —
    出典・実験ID
    SRC-EA-240-URL-F82212725495
    検証箇所
    EVIDENCE_TABLE · E3 · Canonical URL: https://developers.openai.com/api/reference/resources/responses/methods/create
    適用範囲
    EVIDENCE_TABLE
    出典・来歴
    SOURCE_PACKET_REFERENCE_PROJECTED
    限界
    元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
  • EVD-EA-240-URL-735D86ECC127研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCE

    E4 — OpenAI Developers, “Prompt generation — Schemas”, accessed 2026-10-05.

    裏付ける内容
    —
    確認日
    —
    出典・実験ID
    SRC-EA-240-URL-735D86ECC127
    検証箇所
    EVIDENCE_TABLE · E4 · Canonical URL: https://developers.openai.com/api/docs/guides/prompt-generation
    適用範囲
    EVIDENCE_TABLE
    出典・来歴
    SOURCE_PACKET_REFERENCE_PROJECTED
    限界
    元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
  • EVD-EA-240-URL-265A674D3F00研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCE

    E5 — OpenAI, “Introducing Structured Outputs in the API”, 2024-08-06, accessed 2026-10-05.

    裏付ける内容
    —
    確認日
    —
    出典・実験ID
    SRC-EA-240-URL-265A674D3F00
    検証箇所
    EVIDENCE_TABLE · E5 · Canonical URL: https://openai.com/index/introducing-structured-outputs-in-the-api/
    適用範囲
    EVIDENCE_TABLE
    出典・来歴
    SOURCE_PACKET_REFERENCE_PROJECTED
    限界
    元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
  • EVD-EA-240-URL-2E35BD33C49F研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCE

    E6 — Google AI for Developers, “Structured outputs — Gemini API”, accessed 2026-10-05.

    裏付ける内容
    —
    確認日
    —
    出典・実験ID
    SRC-EA-240-URL-2E35BD33C49F
    検証箇所
    EVIDENCE_TABLE · E6 · Canonical URL: https://ai.google.dev/gemini-api/docs/structured-output
    適用範囲
    EVIDENCE_TABLE
    出典・来歴
    SOURCE_PACKET_REFERENCE_PROJECTED
    限界
    元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
  • EVD-EA-240-URL-BDC7E2AF9D9F研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCE

    E7 — Google AI for Developers, “Generating content — Gemini API”, accessed 2026-10-05.

    裏付ける内容
    —
    確認日
    —
    出典・実験ID
    SRC-EA-240-URL-BDC7E2AF9D9F
    検証箇所
    EVIDENCE_TABLE · E7 · Canonical URL: https://ai.google.dev/api/generate-content
    適用範囲
    EVIDENCE_TABLE
    出典・来歴
    SOURCE_PACKET_REFERENCE_PROJECTED
    限界
    元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
  • EVD-EA-240-URL-B01515BB8172研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCE

    E8 — Ray, “The Constraint Tax: Measuring Validity-Correctness Tradeoffs in Structured Outputs for Small Language Models”, arXiv:2605.26128, 2026-05-20.

    裏付ける内容
    —
    確認日
    —
    出典・実験ID
    SRC-EA-240-URL-B01515BB8172
    検証箇所
    EVIDENCE_TABLE · E8 · Canonical URL: https://arxiv.org/abs/2605.26128
    適用範囲
    EVIDENCE_TABLE
    出典・来歴
    SOURCE_PACKET_REFERENCE_PROJECTED
    限界
    元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
  • EVD-EA-240-URL-64D451728A26研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCE

    E9 — Chavan, “Constrained Decoding Eliminates Structural Failures in Small LLMs but Reveals a Scale-Dependent Semantic Gap”, arXiv:2609.23742, 2026-09-20.

    裏付ける内容
    —
    確認日
    —
    出典・実験ID
    SRC-EA-240-URL-64D451728A26
    検証箇所
    EVIDENCE_TABLE · E9 · Canonical URL: https://arxiv.org/abs/2609.23742
    適用範囲
    EVIDENCE_TABLE
    出典・来歴
    SOURCE_PACKET_REFERENCE_PROJECTED
    限界
    元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
  • EVD-EA-240-URL-C0671C3A4240研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCE

    E10 — Li, “When JSON Is Not Enough: Semantic Reliability of Schema-Constrained LLM Ordering Agents”, arXiv:2607.18261, 2026-05-16.

    裏付ける内容
    —
    確認日
    —
    出典・実験ID
    SRC-EA-240-URL-C0671C3A4240
    検証箇所
    EVIDENCE_TABLE · E10 · Canonical URL: https://arxiv.org/abs/2607.18261
    適用範囲
    EVIDENCE_TABLE
    出典・来歴
    SOURCE_PACKET_REFERENCE_PROJECTED
    限界
    元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
出典ID
CANDIDATE-EA240-FIRST-20261005-C1, BODY-SHA256:1148f544c3f41ccc5c760337976e97962af6a567cfc47d5a1faad400c4f2f772, SRC-EA-240-URL-B1ED6CF92876, SRC-EA-240-URL-2551F1B1287D, SRC-EA-240-URL-F82212725495, SRC-EA-240-URL-735D86ECC127, SRC-EA-240-URL-265A674D3F00, SRC-EA-240-URL-2E35BD33C49F, SRC-EA-240-URL-BDC7E2AF9D9F, SRC-EA-240-URL-B01515BB8172, SRC-EA-240-URL-64D451728A26, SRC-EA-240-URL-C0671C3A4240
追跡中のUNKNOWN ID
EA-240-UNKNOWN-01
再確認のきっかけ
正式な 改訂版/publication 状態 change · 本文 成果物 hash change · 出典 現行性 change · new contradiction or 実装 結果の照合

機械検査: 通過 — 機械検査の結果です。情報の正確性や実行の承認を保証するものではありません。

    同じ記事IDの機械可読データです。