Вопрос с собеседования · AI и LLM

Как получить от LLM ответ в строгом формате, например JSON?

MiddleПромпты и структурированный выводAPI языковых моделей
Ещё спрашивают так:
  • Что такое structured output?
  • Как надёжно извлечь данные из текста с помощью LLM?
  • Что делать, если модель вернула невалидный JSON?
Коротко

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

  • Без такого режима: схема и пример в промпте, низкая температура, разбор с повтором при ошибке
  • Схема делает поля и типы обязательными; валидатор (pydantic) ловит остальное

А ещё Схема гарантирует форму, но не правильность значений — их тоже проверяют

Подробно

Когда ответ модели читает программа, свободный текст не подходит. Способы, от надёжного к простому:

  1. Структурированный вывод по схеме. Многие API позволяют передать JSON-схему, и модель гарантированно возвращает валидный по ней JSON (декодирование ограничивается допустимыми токенами).
  2. Вызов функций (tool calling). Описываем «функцию» с параметрами — модель возвращает аргументы в виде JSON.
  3. Только промпт. Схема и пример в промпте, просьба вернуть только JSON без пояснений, низкая температура. Ответ разбираем и при ошибке повторяем запрос, добавив текст ошибки.

Что ещё важно:

  • валидация в коде — типы, обязательные поля, допустимые значения (например, pydantic); схема не гарантирует, что значения верны;
  • поле для отсутствия — разрешить null или "unknown", иначе модель выдумает значение, лишь бы заполнить обязательное поле;
  • плоские и простые схемы работают надёжнее глубоко вложенных;
  • перечисления (enum) вместо свободного текста для категорий.

Пример

from pydantic import BaseModel

class Lead(BaseModel):
    name: str | None
    company: str | None
    budget_rub: int | None
    intent: str  # "buy" | "research" | "unknown"

# raw — JSON от модели, полученный в режиме structured output по Lead.model_json_schema()
lead = Lead.model_validate_json(raw)   # ошибка формата → повторный запрос

Что хотят услышать

  • Механизмы: структурированный вывод по схеме, tool calling, промпт.
  • Обязательная валидация в коде и обработка ошибок.
  • Разрешённое «нет данных» против выдумывания.

Частые ошибки

  • Разбирать ответ регулярными выражениями без валидации.
  • Делать все поля обязательными — модель заполнит их выдумкой.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Попросить модель «отвечай JSON» — этого достаточно
  • ✓Структурированный вывод по JSON-схеме и валидация в коде
  • ✗Схема гарантирует и форму, и правильность значений
  • ✗Высокая temperature снижает число ошибок формата

Что спросят дальше

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования