情報確認日:2026年10月14日
AIへ「JSONで返して」と頼むことと、APIでJSON Schemaを指定して出力を制約することは違います。会話ではキー・型・不明時の扱いを具体的に示し、出力を検証してください。対応APIのStructured Outputsは形をそろえられますが、値や引用した事実まで正しいと保証する機能ではありません。
JSONは、決まった文法で書くデータ
JSONは、名前と値、配列などを一定の文法で表す形式です。表を人が読むための整形と、プログラムが読み込むための形式を区別します。
見た目が似ていても、キーや文字列を単一引用符で囲んだり、最後の項目の後に余計なカンマを置いたりすると、JSONとして読めません。MDNのJSON.parse説明も、これらの文法違反はエラーになると示しています。
会話の出力には、前後の説明やMarkdownのコード枠が付く場合があります。データとして読み込む部分と、説明の部分を分けて扱ってください。
会話で頼むなら、名前・型・不明を指定
単にJSON形式と言うより、必要なキーと、それぞれの値の型を示します。金額を数値にするのか、通貨記号を含む文字列にするのかも決めます。
編集部による例では、文書から件名、日付、金額を取り出す場合に、次のように指定します。
資料の内容をJSON一つで返してください。説明文は付けないでください。
キーはtitle、date、amount_yenに固定してください。
titleは文字列、dateは確認できる日付、amount_yenは円単位の数値です。
資料にないdateとamount_yenはnullにし、推測で埋めないでください。
出力の形の例は次のとおりです。これは架空の書式例で、実際の資料から抽出した結果ではありません。
{
"title": "会議資料",
"date": null,
"amount_yen": 12000
}
日付や通貨の条件を使うなら、その表記規則も決めます。空文字とnullと0を、全部「情報なし」として混ぜないことが大切です。
JSON modeとスキーマ指定は別
OpenAIのStructured Outputs公式説明は、JSON modeがJSONの文法をそろえるのに対し、Structured Outputsは指定したスキーマへの適合を扱うと区別しています。
スキーマは、キー、型、必須項目などの設計図です。たとえば金額を数値に固定したり、必要なキーが欠けない形にしたりします。利用できるモデルや、対応するスキーマの範囲に条件があるため、現在のAPI仕様で確認します。
| 方法 | 主に決められること | 別に確認すること |
|---|---|---|
| 会話の文章で依頼 | 希望する形式・キー | 文法、キー、型、内容 |
| APIのJSON mode | JSONとしての形式 | スキーマと内容 |
| APIのStructured Outputs | 対応するスキーマの形 | 内容と業務条件、異常時 |
普段のChatGPTの会話へ「strict:true」と書くだけで、APIの制約機能を有効にしたことにはなりません。APIを使うシステムなら、開発側で対応する設定を行います。
検証は、三段階に分ける
最初は文法です。JSONとして読み込めるかを確かめます。次に構造として、必要なキー、型、nullの扱い、余分な項目を確認します。
最後に内容を元資料と照合します。数値型の12000が正しい金額か、日付が別の欄から取られていないかは、構造だけでは分かりません。OpenAIの公式説明も、Structured Outputsに間違いが残り得るとしています。
業務の条件も別です。終了日が開始日より前、数量が対象外、合計が一致しないなど、形式を満たしても仕事に使えないデータがあり得ます。元資料と、使う処理の条件に合わせて確認します。
拒否や未完了を、通常データに混ぜない
APIの回答が拒否された場合は、指定したスキーマに沿った通常の結果ではない場合があります。最大出力量などで回答が途中で切れる場合もあります。公式ガイドは、拒否や未完了を検出して扱う必要を示しています。
空の結果を勝手に正常な0件として扱うと、処理失敗を見落とします。正常完了、確認が必要、不正な形式、拒否、未完了などを、プログラム側で分けます。
再試行するときは、元の回答、対象資料、エラーを記録します。毎回違う資料や規則でやり直すと、同じ条件で改善したか判断できなくなるからです。
システムへ組み込む前の小さな確認
正解が分かる資料、情報が欠けた資料、表記が違う資料を用意し、同じ条件で出力を比較します。編集部の例なら、金額がある・ない、日付が一つ・複数というケースを含めます。
OpenAIの評価ガイドも、代表的な場合だけでなく例外を含むデータと評価条件の設定を案内しています。本記事はAPIの有料実行や特定モデルの性能を実測していません。
JSONの形をそろえると、後の処理が楽になります。ただし、形が揃ったことを正確さの検証に置き換えず、文法、構造、内容の順に確認してください。
参照資料
あわせて読みたい記事
執筆・検証:カネさん(政経プラスチャンネル運営)+ ChatGPT
