Перейти к содержанию
COMRAD404 COMRAD404 Разобраться. Выбрать. Сделать.
  • Новости
  • Агенты
  • Инструменты
  • Рейтинг ИИ
  • Практика
  • Монография
Telegram
В фокусеИИ для работыМоделиПромптыСравненияИсследования
  1. Главная
  2. Literal["billing", "bug", "account", "security", "other"]
  3. Структурированный вывод LLM: как получать валидный JSON для агентов и автоматизации

Структурированный вывод LLM: как получать валидный JSON для агентов и автоматизации

Literal["billing", "bug", "account", "security", "other"]//12.09.2026//4 мин чтения
Портрет автора Артём Ковалёв
Автор Артём Ковалёв Редактор разработки и coding agents

Структурированный вывод LLM нужен там, где ответ модели сразу попадает в код: тикеты, CRM, пайплайны агентов, RAG и проверки безопасности. Разбираем, чем отличаются JSON mode, JSON Schema и tool calling, как валидировать ответы и какие ошибки тестировать до продакшена.

Схема структурированного вывода LLM через JSON Schema и валидацию Pydantic
Читайте COMRAD404 в GoogleДобавьте сайт в предпочитаемые источники Google, чтобы следить за нашими материалами.
Добавить в источники
Схема структурированного вывода LLM через JSON Schema и валидацию Pydantic
File:Envisioning emerging technology for 2012 and beyond.png | by Michell Zappa | openverse | by-sa

Структурированный вывод LLM — это не «красивый JSON в ответе», а контракт между моделью и кодом. Если агент создает задачу в Jira, извлекает поля из письма, обновляет CRM или запускает следующий инструмент, свободный текст становится источником сбоев: пропущенное поле, лишняя строка перед JSON, неверный тип даты, несуществующая категория.

За последние годы провайдеры добавили несколько способов снизить этот риск: JSON mode, схемы на базе JSON Schema, tool calling и управляемую генерацию. Но эти режимы решают разные задачи. Ошибка начинается там, где разработчик просит модель «верни валидный JSON» и считает это полноценной гарантией для продакшена.

Структурированный вывод LLM: когда он действительно нужен

Жесткий формат нужен не каждому запросу. Если пользователь просит объяснить ошибку в коде или написать письмо, обычный текст лучше: модель может уточнять, аргументировать и не упираться в искусственные поля. Но если результат сразу парсится машиной, формат становится частью безопасности и надежности.

Типичные случаи:

  • извлечение данных: имя клиента, сумма, срок, номер заказа, уровень срочности;
  • классификация: категория обращения, риск, намерение пользователя, тип документа;
  • агентные действия: выбор инструмента, аргументы вызова, причина отказа;
  • оценка качества: рубрика, баллы, замечания, флаг на ручную проверку;
  • RAG-пайплайны: ссылки на использованные документы, цитаты, уровень уверенности.

Главное правило: если downstream-код не может безопасно продолжить работу без конкретного поля, это поле должно быть в схеме и дополнительно проверяться валидатором. Промпт сам по себе не заменяет контракт.

JSON mode, JSON Schema и tool calling — не одно и то же

В документации OpenAI отдельно описаны Structured Outputs, а в анонсе 2024 года компания объясняла разницу между простым JSON mode и строгим соответствием схеме. JSON mode обычно означает: модель должна вернуть синтаксически корректный JSON. Это не означает, что в ответе будут все нужные поля, правильные enum-значения и ожидаемые типы.

Подход Что проверяет Где полезен Главный риск
Промпт «верни JSON» Ничего формально Прототипы, ручной разбор Текст вокруг JSON, пропущенные поля, нестабильные ключи
JSON mode Синтаксис JSON Логи, простые ответы, быстрые интеграции Валидный JSON может не соответствовать вашей структуре
JSON Schema / Structured Outputs Форму объекта, типы, обязательные поля, enum Автоматизация, извлечение данных, оценки Поддерживается не весь JSON Schema; нужна валидация на своей стороне
Tool calling Аргументы вызова инструмента Агенты, функции, внешние API Модель может выбрать не тот инструмент или вызвать его не вовремя

Anthropic в документации по tool use описывает инструменты через JSON-схему входных параметров. Google в Gemini API использует термин structured output и поддерживает управляемую генерацию с response schema. У всех подходов общий смысл: сузить пространство допустимых ответов. Но детали реализации, ограничения схемы и поведение при отказе отличаются.

Начинайте не с промпта, а с маленькой схемы

Самая частая ошибка — пытаться описать весь бизнес-процесс одной огромной схемой. Чем больше вложенность, свободных строк и необязательных полей, тем труднее тестировать результат. Для первого рабочего контура лучше выбрать один узкий объект.

Пример: агент разбирает входящее письмо в поддержку и должен решить, создавать ли тикет.

{
  "type": "object",
  "additionalProperties": false,
  "required": ["should_create_ticket", "category", "priority", "summary", "customer_email"],
  "properties": {
    "should_create_ticket": {
      "type": "boolean"
    },
    "category": {
      "type": "string",
      "enum": ["billing", "bug", "account", "security", "other"]
    },
    "priority": {
      "type": "string",
      "enum": ["low", "normal", "high", "urgent"]
    },
    "summary": {
      "type": "string",
      "maxLength": 240
    },
    "customer_email": {
      "type": "string"
    }
  }
}

Здесь есть несколько практичных ограничений:

  • additionalProperties: false запрещает модели добавлять поля вроде confidence_explanation, если код их не ждет;
  • enum не дает появиться «critical», если в системе есть только urgent;
  • maxLength защищает интерфейс и базу от длинного пересказа письма;
  • обязательные поля заставляют явно решать, что делать с неполными данными.

Спецификация JSON Schema шире, чем поддержка конкретного LLM-провайдера. Перед внедрением нужно сверить, какие ключевые слова схемы реально принимаются API: вложенные объекты, массивы, nullable-поля, регулярные выражения, ограничения длины и числовые диапазоны могут поддерживаться не одинаково.

Рабочий контур: модель, парсер, валидатор, бизнес-правила

Даже если провайдер обещает структурированный ответ, серверное приложение не должно слепо доверять результату. Надежный контур выглядит так:

  1. отправить модели инструкцию и схему;
  2. получить структурированный объект или аргументы tool call;
  3. проверить объект локальным валидатором;
  4. применить бизнес-правила, которые не стоит отдавать модели;
  5. при ошибке вернуть запрос на исправление, отправить на ручную проверку или безопасно остановить действие.

Для Python удобен Pydantic: он позволяет держать контракт рядом с кодом и генерировать JSON Schema из модели. Документация Pydantic отдельно описывает генерацию JSON Schema, что полезно для синхронизации схемы между API и локальной валидацией.

from typing import Literal
from pydantic import BaseModel, EmailStr, Field, ValidationError

class TicketDecision(BaseModel):
should_create_ticket: bool

Источники

  • ai.google.dev
  • docs.anthropic.com
  • docs.pydantic.dev
  • json-schema.org
  • openai.com
  • platform.openai.com
Портрет автора Артём Ковалёв
Об авторе

Артём Ковалёв

Редактор разработки и coding agents

Пишет о coding agents, API, инструментах разработчика, GitHub и автоматизации программирования.

Все публикации автора →

Читайте также

Как проверить JSON-ответ LLM по схеме и смыслу на реальных данных
Инструкции

Как проверить JSON-ответ LLM по схеме и смыслу на реальных данных

12.10.2026
Как проверить JSON-ответ LLM на соответствие схеме и смыслу
Инструкции

Как проверить JSON-ответ LLM на соответствие схеме и смыслу

11.10.2026
Схема проверки ответа LLM: JSON проходит синтаксический разбор, проверку JSON Schema и семантические тесты
Инструкции

Как проверить, что LLM действительно следует JSON Schema

08.10.2026
Схема проверки структурированного ответа LLM: JSON проходит JSON Schema и дополнительные проверки значений
Инструкции

Как проверить structured outputs в LLM: тесты для JSON Schema и семантики

05.10.2026

Последние публикации

COMRAD404
Материалы

«Эксплойт»: Google снова ограничивает доступ к Gemini для пользователей из России

27.10.2026
Incy удалили из российского App Store: заявление «Бэкдора». Тематическая карточка Comrad404.
Материалы

Incy удалили из российского App Store: заявление «Бэкдора»

27.10.2026
COMRAD404
Материалы

ub-mode задаёт ИИ правила для разработки «чистого» кода

27.10.2026
COMRAD404
Материалы

GitHub Radar объявил Claude сильнее ChatGPT, но не показал тест

27.10.2026
COMRAD404
Материалы

Разработчик связал блокировку OpenAI с анализом телевизора

27.10.2026
Resin предлагает Rust-каркас для собственных движков инференса LLM. Тематическая карточка Comrad404.
Материалы

Resin предлагает Rust-каркас для собственных движков инференса LLM

27.10.2026

COMRAD404 в Telegram

Главное за день — без бесконечной ленты

Дайджест новостей и лучшие проекты GitHub.

Подписаться

В этом материале

Темы материала

Literal["billing", "bug", "account", "security", "other"]

JSON Schema, LLM, генерация видео

Подписаться

COMRAD404 во всех лентах

Новости, короткие сигналы, разборы и видео — выбирайте удобную площадку.

Telegram@comrad404 ↗ Instagram@comrad_404 ↗ Threads@comrad_404 ↗ TikTok@comrad_404 ↗ YouTubeCOMRAD404 ↗
COMRAD404

© 2026 // Система в эфире

ИИ-новости, промпты, исследования, инструменты и оперативные сигналы из англоязычных источников.

Разделы Новости ИИ Агенты Модели Инструменты
Главное Промпты Исследования Рейтинг ИИ Пульс Оперативная лента
Сайт Авторы Связь Конфиденциальность Аналитика сайтов
Справочник Глоссарий Инструменты Сравнения Инструкции Подборки