Обсудить проект →

Сломался агент? Дело почти никогда не в модели

Когда агент падает на проде, разбор почти всегда сваливается в один и тот же спор: модель тупит, промпт кривой, API виноват. Спорить можно долго, а инцидент тем временем живёт. Я год делаю агентов руками, и у меня накопилась своя коллекция отказов — так вот, почти все они жили не в весах модели, а в обвязке вокруг неё.

Недавно это совпало с внешней фактурой. Scale AI выпустила таксономию отказов агентов: 41 режим, и, что важнее самого числа, у каждого режима есть адрес. Не «модель плохая», а конкретное ребро между компонентами, на котором всё рвётся. Ровно то, что мы видим руками: «виновата модель» почти никогда не значит «чинить дообучением».

Отказы живут на швах, а не в весах

Разберу на тех самых отказах из моей коллекции.

Модель выдала валидный ответ — а парсер ждал другой формат и уронил шаг. С весами тут всё в порядке: ответ корректный. Порвалось на стыке между моделью и кодом, который этот ответ разбирает.

Инструмент вернул ошибку — а агент не отличил её от пустого результата и пошёл дальше как ни в чём не бывало. Модель не «ошиблась»: ей не дали различить два разных сигнала, и она честно отработала то, что видела.

Контекст не доехал до нужного шага — и модель честно ответила на то, что ей дали, просто дали не то. Классический случай, когда обвиняют модель, а виновата доставка контекста.

Роутер увёл диалог не в ту ветку. Дальше по цепочке всё может быть исправно, но разговор уже идёт не туда.

Общее у всех четырёх — одно. Сменить модель тут бесполезно: она станет сильнее, а шов, на котором рвётся, останется прежним.

Первый вопрос при разборе — не «какая модель»

Поэтому у нас на разборе инцидента первый вопрос звучит иначе: не «какая модель», а «на каком ребре порвалось». Это сразу переводит разговор из плоскости «давайте возьмём модель поумнее» в плоскость инженерии, где у проблемы есть точный адрес.

Дальше — по порядку:

  • воспроизвести отказ ровно на этом шве, а не «в целом на агенте»;
  • добавить проверку формата там, где парсер встречает ответ модели;
  • научить агента отличать ошибку инструмента от пустого ответа;
  • зафиксировать, что именно приходит на вход шага.

Ничего героического. Скучная инженерия, но контур держит именно она, а не более умная модель.

Почему это важнее выбора модели

Соблазн понятен: вышла модель посильнее — обновились, и вроде бы стало легче. Но если отказ живёт на ребре между компонентами, более сильная модель его не закрывает. Шов остаётся. А значит, тот же инцидент вернётся — просто на новых входных данных.

Отсюда простое рабочее правило: прежде чем трогать модель, найди ребро. Чаще всего чинить придётся не веса, а формат, доставку контекста, обработку ошибок инструмента и маршрутизацию. Это не так эффектно, как «поставили новую модель», зато держит.

Как этот разбор по швам выглядит на практике — на агентах, которые уже работают в проде, — можно посмотреть на trofimov-ai.ru/live.

← Все постыОбсудить задачу →