Новий бенчмарк 12 API великих мовних моделей (LLM) показує, що майже кожен сервіс повертає JSON, який відповідає запитаній схемі, проте значна частина моделей видає фактично неправильні значення. Вартість токенів для однієї й тієї ж схеми коливається від кількох десятків до майже п'яти тисяч. Розробники, які створюють конвеєри вилучення даних (extraction pipelines) або агентів на основі даних, більше не можуть вважати «відповідність схемі» (schema-valid) показником «правильності» (correct).

Чому цей тест важливий

Постачальники API просувають «структуровані відповіді» (structured output) як спосіб усунення помилок парсингу. Обіцянка проста: надайте моделі JSON-схему, і вона заповнить поля без необхідності писати крихкий код для постобробки. На практиці багато робочих систем уже покладаються на цю гарантію, щоб уникнути збоїв і підтримувати чистоту конвеєрів аналітики. Коли ця гарантія виконується лише наполовину, непомітно з'являються помилки, а розрахунки вартості на основі використання токенів стають зовсім неточними.

Хороші новини: схеми тепер переважно дотримуються

  • Більшість моделей у тестовому наборі генерували JSON, який пройшов сувору валідацію.
  • Обмежене декодування (Constrained decoding) — моделі, які прив'язують декодер до схеми, не можуть видавати зайві символи, тому некоректні структури даних (malformed payloads) практично зникли.
  • Рівень помилок парсингу — розробникам більше не потрібно огортати кожен виклик у блоки 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.
  • Невідповідності в тарифікації — деякі постачальники враховують схему як частину промпту, стягуючи плату за кожен використаний токен; інші вважають її безкоштовним накладанням. У великих масштабах рахунок за схему може перевищити вартість згенерованого моделлю контенту.

Що розробникам робити зараз

  1. Валідуйте значення, а не лише структуру — валідатор схеми не виявить неправильну числову відповідь, навіть якщо вона відповідає очікуваному типу. Додайте перевірки, специфічні для вашої предметної області (діапазон, одиниці вимірювання, узгодженість між полями).
  2. Вимкніть ланцюжок думок (chain-of-thought) для вилучення даних на DeepSeek, Qwen та GLM, коли вам потрібне надійне заповнення полів. Додатковий крок міркування є необов'язковим і не є необхідним для досягнення правильності.
  3. Аудитуйте використання токенів — фіксуйте, скільки токенів споживає кожен запит, включаючи частину зі схемою, і порівнюйте рахунки різних постачальників перед переходом до масштабного розгортання.
  4. Тестуйте переносимість — схема, яка працює в OpenAI, може бути непомітно проігнорована в Gemini або Claude. Проводьте швидку перевірку на кожній цільовій платформі перед релізом коду.

Контраргументи постачальників

Деякі постачальники стверджують, що режим «роздумів» — це вибір розробника, призначений для завдань, де пояснення важливіші за чисту точність вилучення. Claude ігнорує прапорець response_format і пропонує натомість використовувати нативні виклики інструментів Anthropic. Ці пояснення технічно правильні, але вони перекладають на розробників обов'язок знати, який режим обрати та як планувати бюджет з урахуванням прихованих витрат на токени.

Підсумок

JSON-схема більше не є страховою сіткою; це лише форма. Переконайтеся, що дані всередині відповідають дійсності, стежте за прихованими витратами на токени та пам'ятайте, що «роздуми» моделі можуть зіпсувати навіть найбільш охайний на вигляд результат.