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

Structured outputs

JSON, схемы и проверка результата: возможности зависят от модели и API.

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

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 до списания. Формат придётся просить словами в тексте запроса и проверять ответ на своей стороне.

Структурированный результат GLM

Guard пока не заявляет отдельную гарантию strict JSON Schema для GLM. Не переносите response_format или schema-поля другого семейства без собственной проверки.

Подтверждённый способ получить типизированные данные — client tool с JSON Schema: модель возвращает function arguments, приложение валидирует их и решает, выполнять ли функцию.

json
{
  "type": "function",
  "function": {
    "name": "save_invoice",
    "description": "Save a validated invoice",
    "parameters": {
      "type": "object",
      "properties": {
        "code": {"type": "string"},
        "amount": {"type": "number"}
      },
      "required": ["code", "amount"]
    }
  }
}
  1. Опишите функцию и schema в нативной форме выбранного API.
  2. Получите tool call и распарсьте arguments как JSON.
  3. Проверьте schema в своём приложении; модельный вывод не заменяет валидацию.
  4. Только после проверки выполните действие и верните tool result.

Полный цикл и правила сохранения ID приведены на странице Client tools.

Структурированный результат Gemini

Gemini возвращает JSON по схеме во всех трёх API. Chat Completions — response_format с type: "json_object" или type: "json_schema" и схемой в json_schema.schema; Responses — text.format той же формы; Messages — output_config.format. Схему исполняет Google.

Строгий режим функций strict: true Gemini не принимает: запрос получает ошибку gemini_strict_tools_unsupported.

Структурированный результат Muse

Поля структурированного результата Guard передаёт Meta без изменений: response_format в Chat Completions, text.format в Responses. Режим JSON по схеме описан в документации Meta Model API.

Разделы

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