Сломался агент? Почти никогда не виновата модель
Спор про упавшего на проде агента всегда идёт по кругу: модель тупит, промпт кривой, API виноват. Но за год работы с агентами у меня набралась своя коллекция отказов, и почти все они жили в обвязке, а не в весах.
Модель выдала валидный ответ — а парсер ждал другой формат и уронил шаг. Инструмент вернул ошибку — а агент не отличил её от пустого результата и пошёл дальше как ни в чём не бывало. Контекст не доехал до нужного шага — и модель честно ответила на то, что ей дали, просто дали не то. Роутер увёл диалог не в ту ветку.
Заметьте: во всех этих случаях сменить модель бесполезно. Она станет сильнее, а шов, на котором рвётся, останется прежним.
Недавно вышла таксономия отказов от Scale AI — 41 режим, и, что важнее, каждому дан адрес. Не «модель плохая», а конкретное ребро между компонентами. Совпало с тем, что мы видим руками: «виновата модель» почти никогда не значит «чинить дообучением».
Поэтому первый вопрос при разборе инцидента у нас не «какая модель», а «на каком ребре порвалось». Дальше по порядку: воспроизвести отказ ровно на этом шве, добавить проверку формата, научить агента отличать ошибку инструмента от пустого ответа, зафиксировать, что именно приходит на вход шага.
Скучная инженерия. Но контур держит именно она, а не более умная модель.