Skip to main content

機能概要

構造化出力(Structured Outputs)を使用すると、モデルの応答が定義した JSON Schema に厳密に従うようになり、正規表現や後処理なしでプログラムから直接パースできる戻り値が保証されます。 プロンプトでモデルに「JSONで返してください」と依頼する方法とは異なり、構造化出力は制約付きデコーディング(Constrained Decoding)に基づいています。上流プロバイダが JSON Schema を文法規則にコンパイルし、推論過程でトークンごとに生成を制約するため、モデルが Schema に違反するコンテンツを出力することは不可能です。 典型的なユースケース:
  • 非構造化テキストからのエンティティ・フィールド抽出
  • 分類 / ラベリング / 感情分析
  • マルチステップ推論における中間結果の標準化された受け渡し
  • Agent ツール呼び出しパラメータの厳密な型制約

各プロトコルのパラメータ対照表

3つのプロトコルでパラメータ名は異なりますが、基本的なメカニズムは同じです:モデルの出力が提供された JSON Schema に厳密に一致します。

クイックスタート

OpenAI プロトコル(推奨)

構造化出力に対応するすべてのモデルに適用でき、プロバイダ横断で共通して使用できます。

他のモデルの使用(GLM-5.2 の例)

同じ OpenAI プロトコルのパラメータが構造化出力に対応するすべてのモデルに適用でき、model を切り替えるだけで使用できます。
Python

Claude ネイティブプロトコル

Anthropic SDK を使用して直接呼び出します。パラメータは output_config.format です。

Schema の記述ポイント

必須フィールド

すべての object 型には additionalProperties: false を明示的に宣言する必要があります。これがない場合、一部の上流プロバイダがリクエストを拒否します。

ネストされたオブジェクト

ネストされた object にも同様に additionalProperties: false が必要です:

クロスプロトコル間の Schema 差異

OpenAI プロトコル経由で Claude モデルを呼び出す場合、ゲートウェイが Schema フォーマットを自動変換し、互換性のないキーワードをクリーニングするため、手動での対応は不要です。

自動デグレードメカニズム

ゲートウェイはデフォルトですべてのリクエストに対して構造化出力の自動デグレード保護を有効にしています。モデルまたはプラットフォームがサポートしていない場合、ゲートウェイはエラーを返さず、自動的に Schema 制約を除去し、レスポンスヘッダーにデグレードの理由を記録します。リクエストは引き続き正常なモデル応答を受け取りますが、出力は Schema による強制制約を受けません。 これにより、クライアント側で構造化出力を統一的に有効化でき、モデルごとの互換性判断を行う必要がなくなります:
  • マルチモデル切り替えが安心:同一のコードで Claude、GPT、Gemini、GLM 間でモデルを切り替える際、対象モデルが構造化出力をサポートしていなくてもリクエストはエラーになりません
  • フォールバック透過:リクエストを実際に処理するモデルバージョンが構造化出力に対応していない場合でも、リクエストは正常に完了し、レスポンスヘッダーでデグレードが示されます
  • クライアントロジックの簡素化:「どのモデルが構造化出力をサポートしているか」のリストを管理する必要がなく、ゲートウェイが自動処理済み。クライアントはレスポンスヘッダーを確認して追加のパース処理が必要かどうかを判断するだけです

レスポンスヘッダー

検出の例

Python

json_object モードとの違い

json_object モードは Claude ネイティブプロトコルへの変換をサポートしていません。OpenAI プロトコル経由で Claude に response_format: {"type": "json_object"} を送信した場合、レスポンスヘッダーに json_object_unsupported_on_anthropic のデグレードが記録されます。json_schema タイプの使用を推奨します。

よくある質問

Claude シリーズ(Anthropic API の output_config.format 経由):
  • Opus / Sonnet / Haiku 4.5 以降
  • Fable / Mythos 5 以降
OpenAI シリーズresponse_format 経由):
  • GPT-4o 以降、GPT-5 シリーズ
Gemini シリーズresponseSchema 経由):
  • Gemini 2.5 以降
各モデルの対応機能タグはモデル一覧ページでご確認いただけます。
はい。OpenAI プロトコル経由で Claude モデルを呼び出す場合、ゲートウェイが自動的に以下を実行します:
  1. response_formatoutput_config.format に変換
  2. Anthropic が非対応の Schema キーワード(minimummaxLength 等)を除去
  3. キーワードがクリーニングされた場合、レスポンスヘッダーに schema_keywords_stripped を記録
逆方向(Claude プロトコルから OpenAI モデルの呼び出し)も同様に自動変換されます。
はい。output_config 内の format(構造化出力)と reasoning 内の effort(思考強度)は独立したパラメータであり、同時に設定できます:
多くの API 集約プラットフォームは、モデルが構造化出力をサポートしていない場合にエラーを直接返します。AIHubMix はグレースフルデグレード戦略を採用しています:互換性のないパラメータを自動的に除去し、モデルのレスポンスを正常に返した上で、X-Structured-Output-Degraded レスポンスヘッダーでクライアントにデグレードの理由を通知します。これにより、アプリケーションが中断されることはありません。