Skip to main content
構造化出力は、モデルが定義したスキーマに一致する JSON オブジェクトを返すよう強制します。これにより、非構造化のモデル出力を解析、検証、または再試行する必要がなくなります。 ARouter は 2 つの構造化出力モードをサポートしています:

構造化出力の使用

リクエストボディに response_format を渡します:

JSON Object モード

モデルは有効な JSON を返しますが、スキーマは強制されません:

JSON Schema モード

厳格なスキーマを強制するには json_schema を使用します:
レスポンス:

完全な例

モデルサポート

strict: truejson_schema モードをサポートするモデル:
  • openai/gpt-5.4, openai/gpt-5.4-pro, openai/o3, openai/o4-mini
  • anthropic/claude-sonnet-4.6, anthropic/claude-opus-4.5
  • google/gemini-2.5-flash, google/gemini-2.5-pro
json_object モード(スキーマ強制なし)はより広くサポートされています。最新の機能情報は GET /v1/models を確認してください。

構造化出力のストリーミング

構造化出力はストリーミングに対応しています。JSON コンテンツは段階的に配信され、クライアント側で組み立てます:

ベストプラクティス

  1. strict: true を使用 — これによりスキーマ準拠が保証されます。指定しない場合、モデルはスキーマに完全に一致しない有効な JSON を返す可能性があります。
  2. additionalProperties: false を設定 — 厳格モードに必須です。モデルが余分なキーを追加するのを防ぎます。
  3. すべての必須フィールドを明示的にリスト化 — 厳格モードでは、properties のすべてのフィールドを required にも含めてください。
  4. システムプロンプトを含める — データ抽出や構造化出力アシスタントとしての役割をモデルに伝えることで信頼性が向上します。

エラー処理

モデルがスキーマに一致する有効な JSON を生成できない場合(例:プロンプトがスキーマと根本的に矛盾する場合)、レスポンスの finish_reason"length" または "content_filter" になります。コンテンツを解析する前に必ず finish_reason を確認してください。