К содержимому
Claude Code с 0:полный курс
Уровень 2 · Структура и инструменты 4 мин

Структурированный вывод: ровно тот JSON, что нужен

Заставляем модель отвечать по JSON-схеме через output_config.format и парсим результат без регулярок.

В этом уроке нет практического задания — просто прочитай и ответь на вопросы.

Проблема свободного текста

Ты парсишь отзывы интернет-магазина и хочешь из каждого вытащить оценку и тег проблемы. Если просто попросить модель «верни JSON», она иногда добавит «Конечно, вот результат:» или обернёт ответ в ```. Парсить такое регулярками — боль и баги.

Решение: схема в запросе

Передай JSON Schema в output_config.format, и API гарантирует, что ответ ей соответствует.

{
  "model": "claude-opus-4-8",
  "max_tokens": 1024,
  "messages": [
    {"role": "user", "content": "Отзыв: доставка три дня, телефон царапнут"}
  ],
  "output_config": {
    "format": {
      "type": "json_schema",
      "schema": {
        "type": "object",
        "properties": {
          "rating": {"type": "integer"},
          "issue": {"type": "string"}
        },
        "required": ["rating", "issue"],
        "additionalProperties": false
      }
    }
  }
}
Параметр называется output_config.format. Старый output_format устарел — не используй его.

В Python удобно через parse()

Метод client.messages.parse() сам валидирует ответ по схеме — никаких регулярок.

from anthropic import Anthropic

client = Anthropic()
schema = {
    "type": "object",
    "properties": {"rating": {"type": "integer"}, "issue": {"type": "string"}},
    "required": ["rating", "issue"],
    "additionalProperties": false,
}
resp = client.messages.parse(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Отзыв: всё супер, привезли за день"}],
    output_config={"format": {"type": "json_schema", "schema": schema}},
)
Если придёт stop_reason: "refusal" или "max_tokens", ответ может не соответствовать схеме — проверь это перед разбором.

Проверь себя

Отвечено 0/3
Режим:

Какой параметр включает структурированный вывод по JSON-схеме?

Чем удобен client.messages.parse() в Python?

Когда структурированный ответ может НЕ соответствовать заданной схеме?

Выполни задание в терминале и ответь на вопросы, чтобы завершить урок.

📝 Мои заметки

Сохраняется автоматически в этом браузере · видно на странице «Заметки».

Листай уроки клавишами · поиск по ⌘K