Ответ вслух Middle Промптинг и структурированный вывод спрашивают часто обновлено

Как получить надёжный JSON от модели

Вопрос

Ваш сервис парсит ответы модели как JSON, и 2% вызовов падают. Как вы сделаете это надёжным?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Сначала посмотрю, что именно ломается: текст вокруг JSON, обрезка по лимиту токенов, неверные типы. Дальше по слоям.

Что должно прозвучать в ответе

  • Structured outputs по JSON-схеме или хотя бы JSON mode у провайдера

  • Схема с enum, nullable-полями и полем рассуждения перед ответом

  • Валидация после парсинга (Pydantic или JSON Schema), не только синтаксис

  • Повтор с текстом ошибки валидации, ограниченное число раз

  • Фолбэк и метрика доли невалидных ответов

  • Низкая температура для извлекающих задач

Что могут спросить следом

  • Что делать, если провайдер не поддерживает схемы?
  • Как вы отличите валидный по схеме, но неверный по смыслу ответ?

Разбор

Образцовый ответ: «Сначала посмотрю, что именно ломается: текст вокруг JSON, обрезка по лимиту токенов, неверные типы. Дальше по слоям. Если провайдер умеет structured outputs, генерирую строго по JSON-схеме, это убирает синтаксические ошибки и пропуски полей. В схеме перечисления вместо свободного текста и nullable для полей, которых может не быть, чтобы модель не выдумывала. Температура низкая. После парсинга валидирую через Pydantic, включая бизнес-правила вроде диапазонов. При ошибке делаю один-два повтора, передавая текст ошибки, затем фолбэк: другая модель или пометка на ручную проверку. Долю невалидных ответов вывожу в метрики с алертом. Отдельно проверяю max_tokens: обрезанный JSON часто выглядит как случайная ошибка парсинга».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.