Cross-provider データ形式の定義 Loss Accounting Envelope
記事状態: 公開 · 最終確認: 2026-10-18
要点
「Structured Outputsを使えばJSON データ形式の定義どおりになる」「三提供元で同じデータ形式の定義を使える」とは表現しない。安全な表現は、「各提供元のdocumented subsetと実効strictnessをバージョン付きで確認し、正式な データ形式の定義から提供元 データ形式の定義への変換差分を記録し、生成後に正式な constraintを再検証する。表現不能な重要constraintはfail closedまたは決まった規則に従う 妥当性の検証で補う」である。
現在の判断
「Structured Outputsを使えばJSON データ形式の定義どおりになる」「三提供元で同じデータ形式の定義を使える」とは表現しない。安全な表現は、「各提供元のdocumented subsetと実効strictnessをバージョン付きで確認し、正式な データ形式の定義から提供元 データ形式の定義への変換差分を記録し、生成後に正式な constraintを再検証する。表現不能な重要constraintはfail closedまたは決まった規則に従う 妥当性の検証で補う」である。
どこまで当てはまるか
Cross-provider データ形式の定義 Loss Accounting Envelope
詳しく理解する
要点と前提
CANDIDATE_ID: ORPHAN-RESCUE-EA521-20261019-C1
要旨
LLMやAgentの構造化された出力/ツール callingを複数提供元へ移植する際、同じJSON データ形式の定義を渡したという事実だけでは、同じ制約が実効しているとは判断できない。各提供元はJSON データ形式の定義の異なる部分集合を受理し、SDKやAPI経路によってはデータ形式の定義を変形・正規化したり、厳格検証からbest-effortへ移行したりする。したがってEnterprise AI運用では、アプリケーション側の正式な データ形式の定義と、提供元へ実際に渡されたlowered データ形式の定義の差分を明示的に管理し、失われた制約を監査可能にする必要がある。
本項の中心は「共通データ形式の定義を作ること」ではなく、「変換で何が失われたかを証明可能にすること」である。正式な データ形式の定義のhash、提供元/モデル/API/SDK・adapter バージョン、実際のlowered データ形式の定義、削除・書換え・近似されたconstraint、effective strictness、生成結果の終端状態、正式な データ形式の定義による再検証結果を一つの運用記録として結び付ける。
なぜデータ形式の定義 portabilityが壊れるのか
OpenAIのStructured Outputs/strict function callingはJSON データ形式の定義全体ではなく部分集合を扱う。現在の 仕様・利用方法の文書ではobjectにadditionalProperties=falseを要求し、propertiesをrequiredとして扱う制約があり、allOf、not、dependentRequired、dependentSchemas、if/then/elseなど利用できないkeywordがある。API経路によってはデータ形式の定義をstrict向けに正規化できる場合がある一方、正規化不能時にstrict:falseのbest-effortへ落ちる経路もある。このため「requestが受理された」ことと「正式な constraintが厳格に強制された」ことは同義ではない。
AnthropicのStructured Outputs/strict ツール useも制約されたJSON データ形式の定義 subsetである。basic type、enum/const、anyOf、限定的allOf、ローカル環境の $ref、required、additionalProperties=false等を扱える一方、recursive データ形式の定義、外部 $ref、数値minimum/maximum/multipleOf、一般的なminLength/maxLengthや広いarray constraintなどはそのまま扱えない。SDK helperはunsupported constraintを除去してdescriptionへ移す、additionalProperties=falseを強制する、formatをfilterする等の変換を行い、その後original データ形式の定義でclient-side 妥当性の検証する場合がある。したがって提供元側のstrict 成功は、アプリケーションのoriginal データ形式の定義そのものへの適合を意味しない場合がある。
Geminiも構造化された出力でJSON データ形式の定義のsubsetを扱い、データ形式の定義の大きさ・深さや利用可能keywordに制約がある。さらにfunction calling/structured responseのrequest wiring、ツール result correlation、失敗 状態は他提供元と同一ではない。三者の機能名が似ていても、constraint coverage、error semantics、refusal/incomplete 状態、streaming behaviorを同一視してはならない。
運用上の失敗モード
最も危険なのは、load-bearing constraintがadapterで黙って消える場合である。たとえば業務上許可された値域、追加field禁止、相互排他的条件、文字列長、数値上限、依存field、条件分岐などが正式な データ形式の定義では安全条件でも、提供元が対応する範囲へloweringする際に表現できないことがある。生成結果が提供元側データ形式の定義には適合していても、正式な business ruleには違反し得る。
第二の失敗は、refusal、max-token truncation、streaming partial、tool-call interruption、データ形式の検証 errorを「空fieldを補った正常object」に変換することである。終端状態を失うと、失敗を成功に変換してしまう。特にdefault値の自動補完は、提供元が生成しなかった値と提供元が明示した値を区別できなくする。
第三はバージョン driftである。提供元、モデル、API 改訂版、SDK、adapterのいずれかが更新されると、同じ正式な データ形式の定義でもlowered データ形式の定義やstrictnessが変化し得る。過去のPASSを新バージョンへ自動継承すると、constraint lossの再発を検出できない。
第四はツール データ形式の定義とresult データ形式の定義の混同である。ツール argument 妥当性の検証、provider-native call/result correlation、application-side 正式な 妥当性の検証、外部外部への変更・送信の認可は別の制御層である。schema-validなツール argumentであっても、その操作が現在許可されていることや、外部effectが成功したことは証明しない。
実装・制御 implication
運用基準はcanonical-firstとする。正式な アプリケーション データ形式の定義を唯一の業務意味の基準とし、提供元 adapterはそこからprovider-specific データ形式の定義を生成する。変換時には、正式な データ形式の定義 hash、提供元/モデル/API/SDK/adapter バージョン、lowered データ形式の定義 hash、effective strictness、各constraintのPRESERVED/REWRITTEN/DROPPED/UNSUPPORTEDを記録する。security・認可・financial limit・data classification等のload-bearing constraintがDROPPEDまたはUNSUPPORTEDなら、生成経路をfail closedにするか、提供元外の決まった規則に従う 検証処理で必ず補う。
生成後は提供元側のデータ形式の定義 成功だけで完了させず、decoded complete objectを正式な データ形式の定義と業務検証処理で再検証する。提供元 妥当性の検証 成功と正式な 妥当性の検証 成功を別fieldとして保存する。refusal、incomplete/truncated、streaming partial、API rejection、provider-schema 失敗、canonical-schema 失敗、complete 成功を別状態として扱い、default-filled 成功へ正規化しない。
データ形式の定義 compiler/adapterにはnegative fixtureを持たせる。unsupported keyword、nested object、追加property、境界値、依存field、条件分岐、enum/const、nullable表現、長い/深いデータ形式の定義を含むfixtureを提供元/モデル/API/SDK バージョンごとに実行し、lowering差分と正式な revalidation結果を保存する。提供元やSDK更新時にはデータ形式の定義 利用可能な機能 内容を照合する識別値が変化していないかを再検査し、変化時は既存承認を無効化して再監査する。
適用境界
この制御はOpenAI、Anthropic、Gemini等の構造化された出力/ツール callingを横断するadapterに特に重要であるが、特定提供元だけを利用する場合でもSDK更新やモデル migrationに伴うデータ形式の定義 driftの検出に有効である。一方、ここで扱うのは構造・constraint portabilityであり、生成内容の真実性、意味上の correctness、認可、side-effect exactly-once、prompt injection耐性を保証するものではない。
提供元 仕様・利用方法の文書が示すsubsetはdocumented 条件・契約であり、すべてのモデル/API 改訂版で永続不変とは限らない。SDK helperの変換もバージョン依存である。したがって仕様・利用方法の文書の表を固定的な永久互換表として扱わず、バージョンをbindした利用可能な機能 根拠として扱う。
出典 / 出典・来歴 資料内の該当箇所
- OpenAI: Structured モデル outputs / Function calling — 現在の 仕様・利用方法の文書 参照日 in EA-521 bounded refresh 2026-10-17. Documented JSON データ形式の定義 subset、strict mode、normalization/失敗時の代替処理 適用限界。
- Anthropic Claude Platform: Structured outputs / Strict ツール use — 現在の 仕様・利用方法の文書 参照日 2026-10-17. Supported/unsupported データ形式の定義 subset、SDK transformation、refusal/max_tokens caveat。
- Google Gemini: Function Calling / Structured Outputs — registered 現在の 出典・来歴 for EA-521。JSON データ形式の定義 subsetおよびprovider-specific request/妥当性の検証 適用限界。
- モデル 文脈・入力情報 Protocol: Tools specification — registered 出典・来歴。ツール データ形式の定義は利用可能な機能 descriptionであり、provider-specific generation 妥当性の検証や認可そのものではない。
- Continuation 正式な: Google Doc 1XpjZC_R1eHlIckvUaEaJ_mcj6YW6j0ihZ0b91z5vewU, EA-521 research checkpoints 2026-10-13〜2026-10-17。
よくある失敗・反証
最も危険なのは、load-bearing constraintがadapterで黙って消える場合である。たとえば業務上許可された値域、追加field禁止、相互排他的条件、文字列長、数値上限、依存field、条件分岐などが正式な データ形式の定義では安全条件でも、提供元が対応する範囲へloweringする際に表現できないことがある。生成結果が提供元側データ形式の定義には適合していても、正式な business ruleには違反し得る。
第二の失敗は、refusal、max-token truncation、streaming partial、tool-call interruption、データ形式の検証 errorを「空fieldを補った正常object」に変換することである。終端状態を失うと、失敗を成功に変換してしまう。特にdefault値の自動補完は、提供元が生成しなかった値と提供元が明示した値を区別できなくする。
第三はバージョン driftである。提供元、モデル、API 改訂版、SDK、adapterのいずれかが更新されると、同じ正式な データ形式の定義でもlowered データ形式の定義やstrictnessが変化し得る。過去のPASSを新バージョンへ自動継承すると、constraint lossの再発を検出できない。
第四はツール データ形式の定義とresult データ形式の定義の混同である。ツール argument 妥当性の検証、provider-native call/result correlation、application-side 正式な 妥当性の検証、外部外部への変更・送信の認可は別の制御層である。schema-validなツール argumentであっても、その操作が現在許可されていることや、外部effectが成功したことは証明しない。
各提供元はstrict/構造化された出力機能を提供しており、適切なsubset内では自由形式JSONより強い構造保証を得られる。この事実は有用であるが、提供元間で同じJSON データ形式の定義意味論が保証されることを示さない。SDKによるデータ形式の定義変換とclient-side 妥当性の検証はportabilityを改善できるが、変換で失われたconstraintを提供元が強制したことにはならない。
本candidateは現在の 提供元 仕様・利用方法の文書を中心にした運用設計であり、version-pinned三提供元横断negative fixtureをこの実行で実行したものではない。streaming partial、refusal、truncation、SDK rewriteの細部はモデル/API/SDK バージョンにより変わり得る。
まだ確認できていないこと
- EA-521-UNKNOWN-01
- OpenAI/Anthropic/Geminiの全現在の モデル・API 改訂版・SDK組合せに対するkeyword-by-keyword executable matrix。
- SDK内部rewriteがバージョン間でどのように変化するかの継続的なmachine-readable差分。
- streaming partial/refusal/truncation/tool-result errorを含む三提供元共通negative fixtureの実測結果。
- 提供元のschema-support変更を事前通知だけで完全に検出できるか。
- 複雑な業務constraintを正式な 検証処理へ退避した場合のlatency/cost/失敗 distribution。
根拠資料
この記事には、直接開ける外部出典が登録されていません。出典IDや検証情報は末尾で確認できます。
更新履歴
EA-521-R1-20261013: 正式な 監査/publication 対応付け
出典ID・検証情報・機械可読データ
根拠の種類と情報の鮮度は、ラベルとアイコンで確認できます。
- 記事ID
- EA-521
- 最終確認日
- 2026-10-18
- 提供元・モデル・プラン・利用環境
- —
- 対象地域
- —
元資料の全文と収録照合記録
要点と前提
CANDIDATE_ID: ORPHAN-RESCUE-EA521-20261019-C1
要旨
LLMやAgentのstructured output/tool callingを複数providerへ移植する際、同じJSON Schemaを渡したという事実だけでは、同じ制約が実効しているとは判断できない。各providerはJSON Schemaの異なる部分集合を受理し、SDKやAPI経路によってはschemaを変形・正規化したり、厳格検証からbest-effortへ移行したりする。したがってEnterprise AI運用では、アプリケーション側のcanonical schemaと、providerへ実際に渡されたlowered schemaの差分を明示的に管理し、失われた制約を監査可能にする必要がある。
本項の中心は「共通schemaを作ること」ではなく、「変換で何が失われたかを証明可能にすること」である。canonical schemaのhash、provider/model/API/SDK・adapter version、実際のlowered schema、削除・書換え・近似されたconstraint、effective strictness、生成結果の終端状態、canonical schemaによる再検証結果を一つの運用記録として結び付ける。
なぜschema portabilityが壊れるのか
OpenAIのStructured Outputs/strict function callingはJSON Schema全体ではなく部分集合を扱う。current documentationではobjectにadditionalProperties=falseを要求し、propertiesをrequiredとして扱う制約があり、allOf、not、dependentRequired、dependentSchemas、if/then/elseなど利用できないkeywordがある。API経路によってはschemaをstrict向けに正規化できる場合がある一方、正規化不能時にstrict:falseのbest-effortへ落ちる経路もある。このため「requestが受理された」ことと「canonical constraintが厳格に強制された」ことは同義ではない。
AnthropicのStructured Outputs/strict tool useも制約されたJSON Schema subsetである。basic type、enum/const、anyOf、限定的allOf、local $ref、required、additionalProperties=false等を扱える一方、recursive schema、external $ref、数値minimum/maximum/multipleOf、一般的なminLength/maxLengthや広いarray constraintなどはそのまま扱えない。SDK helperはunsupported constraintを除去してdescriptionへ移す、additionalProperties=falseを強制する、formatをfilterする等の変換を行い、その後original schemaでclient-side validationする場合がある。したがってprovider側のstrict successは、アプリケーションのoriginal schemaそのものへの適合を意味しない場合がある。
Geminiもstructured outputでJSON Schemaのsubsetを扱い、schemaの大きさ・深さや利用可能keywordに制約がある。さらにfunction calling/structured responseのrequest wiring、tool result correlation、failure stateは他providerと同一ではない。三者の機能名が似ていても、constraint coverage、error semantics、refusal/incomplete state、streaming behaviorを同一視してはならない。
運用上の失敗モード
最も危険なのは、load-bearing constraintがadapterで黙って消える場合である。たとえば業務上許可された値域、追加field禁止、相互排他的条件、文字列長、数値上限、依存field、条件分岐などがcanonical schemaでは安全条件でも、provider subsetへloweringする際に表現できないことがある。生成結果がprovider側schemaには適合していても、canonical business ruleには違反し得る。
第二の失敗は、refusal、max-token truncation、streaming partial、tool-call interruption、schema validation errorを「空fieldを補った正常object」に変換することである。終端状態を失うと、失敗を成功に変換してしまう。特にdefault値の自動補完は、providerが生成しなかった値とproviderが明示した値を区別できなくする。
第三はversion driftである。provider、model、API revision、SDK、adapterのいずれかが更新されると、同じcanonical schemaでもlowered schemaやstrictnessが変化し得る。過去のPASSを新versionへ自動継承すると、constraint lossの再発を検出できない。
第四はtool schemaとresult schemaの混同である。tool argument validation、provider-native call/result correlation、application-side canonical validation、外部side effectのauthorizationは別のcontrol planeである。schema-validなtool argumentであっても、その操作が現在許可されていることや、外部effectが成功したことは証明しない。
実装・control implication
運用基準はcanonical-firstとする。canonical application schemaを唯一の業務意味の基準とし、provider adapterはそこからprovider-specific schemaを生成する。変換時には、canonical schema hash、provider/model/API/SDK/adapter version、lowered schema hash、effective strictness、各constraintのPRESERVED/REWRITTEN/DROPPED/UNSUPPORTEDを記録する。security・authorization・financial limit・data classification等のload-bearing constraintがDROPPEDまたはUNSUPPORTEDなら、生成経路をfail closedにするか、provider外のdeterministic validatorで必ず補う。
生成後はprovider側のschema successだけで完了させず、decoded complete objectをcanonical schemaと業務validatorで再検証する。provider validation successとcanonical validation successを別fieldとして保存する。refusal、incomplete/truncated、streaming partial、API rejection、provider-schema failure、canonical-schema failure、complete successを別状態として扱い、default-filled successへ正規化しない。
schema compiler/adapterにはnegative fixtureを持たせる。unsupported keyword、nested object、追加property、境界値、依存field、条件分岐、enum/const、nullable表現、長い/深いschemaを含むfixtureをprovider/model/API/SDK versionごとに実行し、lowering差分とcanonical revalidation結果を保存する。providerやSDK更新時にはschema capability fingerprintが変化していないかを再検査し、変化時は既存承認を無効化して再監査する。
適用境界
このcontrolはOpenAI、Anthropic、Gemini等のstructured output/tool callingを横断するadapterに特に重要であるが、特定providerだけを利用する場合でもSDK更新やmodel migrationに伴うschema driftの検出に有効である。一方、ここで扱うのは構造・constraint portabilityであり、生成内容の真実性、semantic correctness、authorization、side-effect exactly-once、prompt injection耐性を保証するものではない。
provider documentationが示すsubsetはdocumented contractであり、すべてのmodel/API revisionで永続不変とは限らない。SDK helperの変換もversion依存である。したがってdocumentationの表を固定的な永久互換表として扱わず、versionをbindしたcapability evidenceとして扱う。
Counterevidence / limitations
各providerはstrict/structured output機能を提供しており、適切なsubset内では自由形式JSONより強い構造保証を得られる。この事実は有用であるが、provider間で同じJSON Schema意味論が保証されることを示さない。SDKによるschema変換とclient-side validationはportabilityを改善できるが、変換で失われたconstraintをproviderが強制したことにはならない。
本candidateはcurrent provider documentationを中心にした運用設計であり、version-pinned三provider横断negative fixtureをこのRUNで実行したものではない。streaming partial、refusal、truncation、SDK rewriteの細部はmodel/API/SDK versionにより変わり得る。
OPEN_UNKNOWN
- OpenAI/Anthropic/Geminiの全current model・API revision・SDK組合せに対するkeyword-by-keyword executable matrix。
- SDK内部rewriteがversion間でどのように変化するかの継続的なmachine-readable差分。
- streaming partial/refusal/truncation/tool-result errorを含む三provider共通negative fixtureの実測結果。
- providerのschema-support変更を事前通知だけで完全に検出できるか。
- 複雑な業務constraintをcanonical validatorへ退避した場合のlatency/cost/failure distribution。
SAFE_WORDING
「Structured Outputsを使えばJSON Schemaどおりになる」「三providerで同じschemaを使える」とは表現しない。安全な表現は、「各providerのdocumented subsetと実効strictnessをversion付きで確認し、canonical schemaからprovider schemaへの変換差分を記録し、生成後にcanonical constraintを再検証する。表現不能な重要constraintはfail closedまたはdeterministic validationで補う」である。
Source / provenance locator
- OpenAI: Structured model outputs / Function calling — current documentation accessed in EA-521 bounded refresh 2026-10-17. Documented JSON Schema subset、strict mode、normalization/fallback boundary。
- Anthropic Claude Platform: Structured outputs / Strict tool use — current documentation accessed 2026-10-17. Supported/unsupported schema subset、SDK transformation、refusal/max_tokens caveat。
- Google Gemini: Function Calling / Structured Outputs — registered current provenance for EA-521。JSON Schema subsetおよびprovider-specific request/validation boundary。
- Model Context Protocol: Tools specification — registered provenance。Tool schemaはcapability descriptionであり、provider-specific generation validationやauthorizationそのものではない。
- Continuation canonical: Google Doc 1XpjZC_R1eHlIckvUaEaJ_mcj6YW6j0ihZ0b91z5vewU, EA-521 research checkpoints 2026-10-13〜2026-10-17。
EA-521-CURRENT-APPROVAL研究資料研究資料根拠の出所: AUDITED_CANONICAL_RESEARCH_PACKET現行本文の監査・revision対応
- 裏付ける内容
- 現行台帳のAUDIT_PASSと候補・revision・本文ハッシュの対応を確認しています。
- 確認日
- —
- 出典・実験ID
- ORPHAN-RESCUE-EA521-20261019-C1
- 検証箇所
- 1KqhJtiSb2S84rWmeYVwKcT_76dBwZ_B0ZZuAWQqH0rQ/EA_REVISION_LEDGER#ea_id=EA-521&revision_id=EA-521-R1-20261013&candidate_id=ORPHAN-RESCUE-EA521-20261019-C1 · EA-521-R1-20261013
- 適用範囲
- —
- 出典・来歴
- CURRENT_CANONICAL_APPROVAL_READBACK
- 限界
- 監査状態と来歴の記録です。外部根拠の最新性や本文の全主張を追加保証しません。
EA-521-CURRENT-BODY-READBACK実装資料実装資料根拠の出所: IMPLEMENTATION_READBACK現行本文の収録照合
- 裏付ける内容
- 公開生成入力の本文SHA-256が、監査済み候補に結び付いたハッシュと一致しています。
- 確認日
- 2026-10-19
- 出典・実験ID
- BODY-SHA256:8f0dc81ebfe26b99b4a370d3244d7065018689c50add3da143b402adc857f5e6
- 検証箇所
- content/staging/EA-521.md · 8f0dc81ebfe26b99b4a370d3244d7065018689c50add3da143b402adc857f5e6 · EA-521-R1-20261013
- 適用範囲
- —
- 出典・来歴
- CURRENT_APPROVED_BODY_HASH_MATCH
- 限界
- 本文の同一性の検査です。外部システムの挙動や全主張の真偽を実証したものではありません。
- 出典ID
- ORPHAN-RESCUE-EA521-20261019-C1, BODY-SHA256:8f0dc81ebfe26b99b4a370d3244d7065018689c50add3da143b402adc857f5e6
- 追跡中のUNKNOWN ID
- EA-521-UNKNOWN-01
- 再確認のきっかけ
- 正式な 改訂版/publication 状態 change · 本文 成果物 hash change · 出典 現行性 change · new contradiction or 実装 結果の照合
機械検査: 通過 — 機械検査の結果です。情報の正確性や実行の承認を保証するものではありません。
同じ記事IDの機械可読データです。