Перейти к содержанию
Справочник APIStructured outputs

Structured outputs

Валидный JSON по вашей JSON Schema.

Протокол модели

Messages: JSON Schema

В Claude /v1/messages поле output_config.format ограничивает финальный текст ответа JSON Schema. Найдите текстовый блок type: "text" в массиве content и разберите его text JSON-парсером: первым блоком могут быть рассуждения.

json
{
  "model": "claude-opus-5",
  "max_tokens": 1024,
  "messages": [{"role": "user", "content": "Извлеки имя и возраст: Анна, 29 лет"}],
  "output_config": {
    "format": {
      "type": "json_schema",
      "schema": {
        "type": "object",
        "properties": {
          "name": {"type": "string"},
          "age": {"type": "integer"}
        },
        "required": ["name", "age"],
        "additionalProperties": false
      }
    }
  }
json
{"name":"Анна","age":29}

Chat Completions: response_format

json
{
  "model": "claude-opus-5",
  "messages": [{"role": "user", "content": "Извлеки имя и возраст: Анна, 29 лет"}],
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "person",
      "strict": true,
      "schema": {
        "type": "object",
        "properties": {
          "name": {"type": "string"},
          "age": {"type": "integer"}
        },
        "required": ["name", "age"],
        "additionalProperties": false
      }
    }

Kimi, Composer и Grok

  • Kimi. Поле response_format принимается на /v1/chat/completions и уходит модели как есть. Guard свою схему не подставляет и ответ по ней не проверяет, поэтому разбирайте результат у себя и обрабатывайте случай, когда JSON не пришёл.
  • Composer и Grok. Поля response_format у них нет: запрос с ним получает 400 cursor_parameter_unavailable до списания. Формат придётся просить словами в тексте запроса и проверять ответ на своей стороне.

Разделы документации

На этой странице