Мы живем в эпоху, когда гонка вооружений между крупными игроками искусственного интеллекта привела к беспрецедентному росту качества моделей. Каждый месяц мы видим новые рекорды в бенчмарках, улучшенное логическое мышление и способность писать код, который с трудом отличим от написанного человеком. Однако за этим внешним блеском скрывается серьезная, часто невидимая проблема, которая может замедлить развитие всей индустрии AI-агентов. Как заметил Армин Ронахер (Armin Ronacher), создатель популярных инструментов Flask и Jinja2, современные флагманские модели, такие как Claude Opus 4.8, демонстрируют тревожную тенденцию: они становятся хуже в соблюдении строгих схем вызова инструментов (tool calling), несмотря на то, что их общая интеллектуальность растет.
Этот парадокс — «лучшие модели, худшие инструменты» — не просто техническая шероховатость. Это симптом глубокой проблемы в методологии обучения больших языковых моделей (LLM). Когда компании оптимизируют свои модели для использования собственных, проприетарных инструментов, они создают фрагментацию, которая делает интеграцию сторонних решений сложнее, дороже и менее надежной. В этой статье мы подробно разберем, что именно происходит, почему это происходит и к чему это может привести для разработчиков, строящих AI-агенты.
01Суть проблемы: когда модель «выдумывает» поля
Ситуация, о которой сообщает Армин, возникла при работе с платформой Pi, использующей Claude для выполнения задач по редактированию кода. Проблема заключается в том, как модели передают аргументы в функции (tools). В идеальном мире LLM должен строго следовать JSON-схеме, описывающей параметры функции. Если схема требует два поля, модель должна вернуть ровно два поля. Если она добавляет лишнее или меняет названия, система-хостер (в данном случае Pi) должна отклонить запрос.
Однако с выходом новых версий моделей от Anthropic, особенно Opus 4.8 и Sonnet 5, разработчики заметили, что модели начинают добавлять в вызовы инструментов несуществующие, «выдуманные» поля. При этом сам результат редактирования кода часто оказывается абсолютно корректным. Модель понимает задачу, находит нужный фрагмент кода и предлагает правильное изменение, но «обертка» в виде JSON-объекта с аргументами нарушает валидацию. Система Pi, следуя строгим правилам, отклоняет этот вызов и просит модель повторить попытку, что приводит к лишним итерациям и увеличению затрат.
Что особенно удивительно, эта проблема не характерна для старых моделей или для более легких версий, таких как Haiku. Проблема возникает именно у флагманских моделей семейства Claude. Это указывает на то, что проблема не в базовой способности модели понимать язык или код, а в специфических изменениях, внесенных в процесс обучения.
02Гипотеза Армина: оптимизация под Claude Code
Армин Ронахер выдвигает очень правдоподобную гипотезу: новые модели Anthropic были специально дообучены (fine-tuned) с использованием методов усиления обучения с подкреплением (Reinforcement Learning from Human Feedback, RLHF) для более эффективного использования встроенных инструментов в среде Claude Code. Claude Code — это интегрированная среда разработки (IDE), созданная Anthropic, которая имеет свои собственные, уникальные механизмы редактирования файлов.
Когда модель обучается на данных, сгенерированных в рамках одной конкретной экосистемы, она начинает «запоминать» паттерны использования инструментов именно этой экосистемы. Если в Claude Code инструмент редактирования имеет специфическую структуру аргументов, модель будет стремиться воспроизводить эту структуру, даже когда ее просят использовать другой инструмент с другой структурой. Это похоже на то, как если бы водитель, привыкший ездить на автомобиле с левым рулем, начал бы путаться в расположении педалей, сев за машину с правым рулем, даже если он отлично знает правила дорожного движения.
Этот эффект называется «катастрофическим забыванием» в контексте специфических навыков, но в данном случае мы видим не забывание общих навыков, а переоптимизацию под узкую задачу. Модель становится гениальной в использовании инструментов Claude Code, но теряет гибкость при работе с внешними API, которые имеют схожую, но не идентичную функциональность.
03Разные подходы: Search & Replace против Apply Patch
Чтобы понять масштаб проблемы, нужно взглянуть на то, как разные провайдеры подходят к редактированию кода. Anthropic использует подход, основанный на поиске и замене (search and replace). Модель получает текст, находит фрагмент, который нужно изменить, и предлагает новый текст. Это интуитивно понятно для человека, но требует от модели точного указания контекста (строки начала и конца, или уникальный контекстный блок).
OpenAI, напротив, использует механизм `apply_patch`. Этот подход более технический и часто более надежный для автоматизации. Модель генерирует не просто новый текст, а набор инструкций по применению изменений к файлу, что часто позволяет избежать ошибок в позиционировании. OpenAI ранее заявляла, что их модели обучаются специально эффективно использовать этот механизм.
Проблема возникает, когда сторонние платформы, такие как Pi, пытаются абстрагировать эти различия. Они создают свои собственные инструменты, которые должны работать поверх различных моделей. Если модель обучена на данных, специфичных для Claude Code, она будет пытаться применить паттерны Claude Code к инструменту Pi. Если инструменты не идентичны, возникает конфликт. Модель «думает», что она использует стандартный инструмент редактирования, но его схема отличается от той,
Источник: Simon Willison ↗
