Новый бенчмарк 12 API больших языковых моделей (LLM) показал, что почти каждый сервис возвращает JSON, соответствующий запрошенной схеме, однако значительная часть моделей выдает фактически неверные значения. Стоимость токенов для одной и той же схемы варьируется от нескольких десятков до почти пяти тысяч. Разработчики, создающие конвейеры извлечения данных (extraction pipelines) или агентов на основе данных, больше не могут использовать «соответствие схеме» как показатель «корректности».
Почему этот тест важен
Поставщики API продвигают «структурированный вывод» (structured output) как способ устранения ошибок парсинга. Обещание простое: дайте модели JSON-схему, и она заполнит поля без необходимости писать хрупкий код постобработки. На практике многие производственные системы уже полагаются на эту гарантию, чтобы избежать сбоев и поддерживать чистоту конвейеров аналитики. Когда эта гарантия оказывается лишь наполовину правдивой, в систему незаметно проникают баги, а расчеты стоимости на основе использования токенов начинают сильно расходиться с реальностью.
Хорошие новости: схемы теперь соблюдаются в основном
- Большинство моделей в тестовом наборе выдавали JSON, прошедший строгую валидацию.
- Ограниченное декодирование (Constrained decoding) — модели, которые привязывают декодер к схеме, не могут выдавать лишние символы, поэтому некорректные полезные нагрузки практически исчезли.
- Частота ошибок парсинга — разработчикам больше не нужно оборачивать каждый вызов в блоки try-catch на случай синтаксических ошибок JSON.
Плохие новости: валидность ≠ точность
Валидная структура не гарантирует валидное значение. Четыре из двенадцати моделей — DeepSeek V4, Qwen и GLM-5.2 (последние две упоминаются в отчете под двумя разными именами) — выдавали идеально сформированный JSON, содержащий неверные числа при включенном режиме «размышления» (thinking) или цепочки рассуждений (chain-of-thought).
- В модели Qwen точность простого арифметического извлечения упала с 1 правильного ответа из 16 при включенном рассуждении до 8 правильных из 8 при его отключении.
- DeepSeek V4 Pro показала аналогичный скачок: точность извлечения выросла с 1/8 до 7/8, как только модель перестала пытаться объяснять свои шаги.
Дополнительный этап рассуждения мешает работе ограниченного декодера, позволяя модели впадать в галлюцинации, при этом формально соблюдая внешние скобки.
Обратная сторона: сюрпризы в стоимости токенов и игнорируемые параметры
- Формат ответа Claude — при обращении через эндпоинты, совместимые с OpenAI, Claude полностью игнорировала флаг
response_format, возвращая 0 % результатов, соответствующих схеме. Модель поддерживает структурированные вызовы, но только через нативный интерфейс вызова инструментов (tool-call) от Anthropic. - Раздувание количества токенов из-за схемы — скромная схема размером 12 КБ стоит 30 токенов на DeepSeek, в то время как тот же объем данных поглотил 4 959 токенов на Claude.
- Несоответствия в биллинге — некоторые провайдеры учитывают схему как часть промпта, взимая плату за каждый потребляемый ею токен; другие рассматривают её как бесплатное дополнение. В масштабах больших систем счета за использование схем могут превышать стоимость сгенерированного моделью контента.
Что делать разработчикам прямо сейчас
- Валидируйте значения, а не только структуру — валидатор схемы не заметит неверный числовой ответ, даже если он соответствует ожидаемому типу. Добавляйте проверки, специфичные для вашей предметной области (диапазон, единицы измерения, согласованность полей между собой).
- Отключайте цепочку рассуждений (chain-of-thought) для извлечения данных в DeepSeek, Qwen и GLM, когда вам нужно надежное заполнение полей. Дополнительный этап рассуждения необязателен и не требуется для обеспечения корректности.
- Аудируйте использование токенов — логируйте количество токенов, потребляемых каждым запросом, включая часть со схемой, и сравнивайте счета разных вендоров перед развертыванием масштабных решений.
- Проверяйте переносимость — схема, которая работает в OpenAI, может незаметно игнорироваться в Gemini или Claude. Проводите быструю проверку на каждой целевой платформе перед выпуском кода.
Контраргументы вендоров
Некоторые провайдеры утверждают, что режим «размышления» — это выбор разработчика, предназначенный для задач, где объяснение важнее чистой точности извлечения. Claude игнорирует флаг response_format и предлагает вместо этого использовать нативные вызовы инструментов Anthropic. Эти объяснения технически верны, но они перекладывают на разработчиков ответственность за выбор правильного режима и планирование бюджета с учетом скрытых комиссий за токены.
Итог
JSON-схема больше не является страховочной сеткой; это всего лишь форма. Убедитесь, что данные внутри соответствуют реальности, следите за скрытыми расходами на токены и помните, что «размышления» модели могут испортить даже самый чистый на вид результат.
