Prompt engineering: как метод «Structured Output» заставляет ИИ отвечать по шаблону

Когда просишь нейросеть вернуть список задач или карточку товара, она может выдать текст в свободной форме — и потом приходится парсить его регулярками или надеяться, что формат не поплывёт. Anthropic и OpenAI решили проблему на уровне API: модели Claude и GPT-4 теперь умеют возвращать ответ строго по JSON-схеме, которую ты задаёшь заранее. Это называется Structured Output — и это не просто удобство, а новый стандарт работы с ИИ в продакшене.
Что такое Structured Output и чем он отличается от обычного промпта
Обычный промпт — это текстовая инструкция: «Верни список из трёх пунктов в формате JSON». Модель старается выполнить просьбу, но может добавить комментарий, забыть закрывающую скобку или переименовать поле. Structured Output работает иначе: ты передаёшь в API JSON Schema — формальное описание структуры ответа с типами полей, обязательными ключами и ограничениями. Модель гарантированно вернёт валидный JSON, который соответствует схеме.
Режим доступен в API Claude 3.5 Sonnet (параметр response_format) и GPT-4 Turbo / GPT-4o (параметр response_format с типом json_schema). В обоих случаях ты описываешь структуру один раз — и дальше каждый ответ модели будет валидным JSON без необходимости дополнительной валидации.
Как применять Structured Output: четыре практических сценария
Вот четыре кейса, где структурированный вывод экономит время и снижает количество ошибок:
- Извлечение данных из текста. Загружаешь резюме кандидата — модель возвращает объект с полями name, email, skills, experience. Не нужно парсить абзацы вручную.
- Генерация карточек товаров. Описываешь продукт текстом — получаешь JSON с полями title, description, price, category, tags. Сразу готово к загрузке в базу.
- Планирование задач. Просишь разбить проект на этапы — модель возвращает массив объектов с полями task, deadline, assignee, priority. Можно сразу импортировать в таск-менеджер.
- Классификация и разметка. Подаёшь текст отзыва — получаешь объект с полями sentiment (positive/negative/neutral), topics (массив тегов), urgency (low/medium/high). Готово к автоматической обработке.
Пример: как настроить Structured Output в API
Допустим, ты хочешь извлечь из текста письма имя отправителя, тему и список действий. Вот как выглядит JSON Schema для этого сценария:
Схема:
- Объект email_data с тремя полями: sender (строка), subject (строка), action_items (массив строк).
- Все поля обязательны (required).
Ты передаёшь эту схему в параметре response_format вместе с текстом письма в промпте. Модель анализирует письмо и возвращает валидный JSON — без лишних слов, без пояснений, только данные. Если в письме нет явных действий, поле action_items будет пустым массивом, но структура останется той же.
Три совета, как сделать схему удобнее
Вот три приёма, которые помогают получить более точные результаты:
- Добавляй описания к полям. JSON Schema поддерживает ключ description — используй его, чтобы пояснить модели, что именно должно попасть в поле. Например, для поля priority можно написать: «Оцени срочность задачи: low, medium или high».
- Ограничивай возможные значения через enum. Если поле может принимать только фиксированный набор значений (например, статус заказа: pending, shipped, delivered), перечисли их в enum. Модель не сможет вернуть ничего, кроме этих вариантов.
- Используй вложенные объекты для сложных данных. Если нужно извлечь информацию о нескольких сущностях (например, список участников встречи с именем, ролью и email каждого), опиши массив объектов с полями name, role, email. Модель вернёт структурированный список.
Где попробовать Structured Output прямо сейчас
Режим структурированного вывода доступен в API Claude и GPT — но если ты хочешь протестировать его без написания кода, попробуй в чате GEMERA AI. Модели Claude 3.5 Sonnet и GPT-4o поддерживают работу с JSON-схемами: опиши в промпте желаемую структуру ответа, и модель постарается следовать ей. Для продакшен-интеграции используй API с параметром response_format — так ты получишь гарантированно валидный JSON на каждом запросе.