メインコンテンツへスキップ
2 つのパス:
  • response_format: {"type": "json_object"} —— モデルは正当な JSON を返す
  • response_format: {"type": "json_schema", "json_schema": {...}} —— モデル 出力があなたのスキーマに従う

例 (json_schema、OpenAI)

resp = client.chat.completions.create(
    model="openai/gpt-4o-mini",
    messages=[{"role": "user", "content": "Extract name and age."}],
    response_format={
        "type": "json_schema",
        "json_schema": {
            "name": "person",
            "strict": True,
            "schema": {
                "type": "object",
                "properties": {
                    "name": {"type": "string"},
                    "age": {"type": "integer"},
                },
                "required": ["name", "age"],
            },
        },
    },
)

プロバイダ間サポート

response_format は上流モデルがそれを満たせる限り対応されます。 Gemini については、OrcaRouter の変換層が responseMimeType + responseSchema に対応付けます。OpenAI / Grok / DeepSeek (いずれも OpenAI 互換上流) では、フィールドがネイティブ形式で上流に届きます。 Anthropic には response_format に相当するものがないので、そちらで スキーマ制約出力が必要なら Anthropic の tool_use パターンを使って ください。
プロバイダjson_objectjson_schema備考
OpenAIOpenAI ネイティブのフィールド形式
Grok (xAI)xAI は OpenAI 互換
DeepSeek⚠️DeepSeek のモデル別対応状況を確認してください
GeminiresponseMimeType + responseSchema に変換
Anthropic代わりに tool_use パターンを使用

関連項目