Как получить надёжный JSON от модели
Вопрос
Ваш сервис парсит ответы модели как JSON, и 2% вызовов падают. Как вы сделаете это надёжным?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Structured outputs по JSON-схеме или хотя бы JSON mode у провайдера
Схема с enum, nullable-полями и полем рассуждения перед ответом
Валидация после парсинга (Pydantic или JSON Schema), не только синтаксис
Повтор с текстом ошибки валидации, ограниченное число раз
Фолбэк и метрика доли невалидных ответов
Низкая температура для извлекающих задач
Что могут спросить следом
- Что делать, если провайдер не поддерживает схемы?
- Как вы отличите валидный по схеме, но неверный по смыслу ответ?
Разбор
Образцовый ответ: «Сначала посмотрю, что именно ломается: текст вокруг JSON, обрезка по лимиту токенов, неверные типы. Дальше по слоям. Если провайдер умеет structured outputs, генерирую строго по JSON-схеме, это убирает синтаксические ошибки и пропуски полей. В схеме перечисления вместо свободного текста и nullable для полей, которых может не быть, чтобы модель не выдумывала. Температура низкая. После парсинга валидирую через Pydantic, включая бизнес-правила вроде диапазонов. При ошибке делаю один-два повтора, передавая текст ошибки, затем фолбэк: другая модель или пометка на ручную проверку. Долю невалидных ответов вывожу в метрики с алертом. Отдельно проверяю max_tokens: обрезанный JSON часто выглядит как случайная ошибка парсинга».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.