Перейти к основному содержанию
Два пути:
  • 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 поддерживается там, где upstream-модель способна его выполнить. Для Gemini слой трансляции OrcaRouter отображает его в responseMimeType + responseSchema. Для OpenAI / Grok / DeepSeek (все OpenAI-совместимые upstream) поле доходит до upstream в его нативном формате. У Anthropic нет эквивалента response_format, поэтому, когда нужен вывод с ограничением по схеме, используйте у Anthropic паттерн tool_use.
Провайдерjson_objectjson_schemaПримечания
OpenAIНативный формат полей OpenAI
Grok (xAI)xAI OpenAI-совместим
DeepSeek⚠️Проверьте поддержку у конкретной модели DeepSeek
GeminiТранслируется в responseMimeType + responseSchema
AnthropicИспользуйте паттерн tool_use

См. также