Чому новіші моделі Anthropic гірше справляються зі строгими схемами виклику інструментів
Новіші моделі, такі як Opus 4.8 та Sonnet 5, припускаються помилок у вкладених аргументах інструментів, вигадуючи зайві ключі. Це погіршення спричинене їхнім донавчанням під Claude Code, клієнт якого автоматично виправляє помилки.
Вплив: Високий
Чому це важливо
Вам потрібно проектувати простіші та плоскіші схеми або впроваджувати гнучкі парсери у ваших фреймворках агентів для запобігання непередбачуваним збоям.
TL;DR
- 01Нові флагманські моделі оптимізовані під гнучкий клієнт Claude Code, який виправляє дрібні помилки.
- 02Розробникам агентів варто впровадити толерантне парсування JSON для уникнення збоїв виклику інструментів.
- 03Видалення блоків міркувань з історії перед викликом інструменту знижує частоту помилок удвічі.
Ключові факти
- Моделі під впливом
- Claude Opus 4.8, Sonnet 5
- Частота помилок у довгій історії
- Близько 20%
- Ефект видалення блоків міркувань
- Зниження помилок на 50%
Пастка вседозволеності Claude Code
Дослідження останніх флагманських моделей Anthropic, включаючи Opus 4.8 та Sonnet 5, виявило несподіване погіршення точності при виклику структурованих інструментів із вкладеними схемами (наприклад, масивом edits[]). Моделі схильні вигадувати додаткові ключі всередині JSON-об'єктів, такі як type, id, kind, unique, matchCase та in_file. Хоча сам контент залишається побайтово правильним, валідація схеми не проходить.
Ця поведінка сильно залежить від контексту. Вона не виникає в поодиноких запитах, але з'являється у довгих логах роботи агентів. Видалення блоків міркувань (thinking blocks) з історії знижує частоту помилок на 50%.
Як Claude Code обробляє неточності
Внутрішній клієнт Claude Code надзвичайно лояльний до помилок моделі. Аналіз його мініфікованого коду показує наступні механізми автокорекції:
- Виявлення витоку розмітки
<invoke>у тексті та автоматичний повтор. - Спеціальний кінцевий автомат для обробки некоректних викликів.
- Відновлення пошкоджених Unicode-послідовностей.
- Автоматичне мапування аліасів: приймає
old_strзамістьold_string, а такожnew_strзамістьnew_string. - Мовчазне фільтрування неочікуваних ключів без використання суворого режиму валідації.
Оскільки навчання з підкріпленням відбувається у такому середовищі, моделі звикають до того, що клієнт самостійно виправляє їхні помилки.
Спробуй за 2 хвилини
const cleanArgs = (args) => {
const path = args.path || args.file_path;
const old_string = args.old_str || args.old_string;
const new_string = args.new_str || args.new_string;
return { file_path: path, old_string, new_string };
};javascript
✓ Коли використовувати
- При створенні агентних систем, де стійкість виклику інструментів є критично важливою.
- При переході зі старих моделей Anthropic на нові Opus 4.8 та Sonnet 5.
✕ Коли НЕ варто
- Не актуально, якщо ваші агенти використовують лише прості текстові відповіді без виклику структурованих інструментів.
Що зробити сьогодні
- Спростіть схеми своїх інструментів, зробивши їх максимально плоськими без вкладених об'єктів.
- Додайте мовчазне ігнорування невідомих JSON-ключів у свій парсер відповідей агентів.
- Вимкніть строгий режим для викликів інструментів Anthropic у разі виникнення помилок складності.
Джерела