Обновить

Reasoning Lock: ИИ‑агент в проде тратит токены и молчит — живой разбор бага

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели4.7K
Всего голосов 2: ↑1 и ↓10
Комментарии5

Комментарии 5

Нормуль разбор, слои защиты.. Но меня зацепил Слой 2 (Валидатор). Ты возвращаешь payload на ретрай во второй экземпляр агента с system_kick. Получается, при каждом таком тупике заново скармливается модели весь контекст диалога + системный промпт на 6400 токенов ради короткого ответа?7... Не думал в ветке ретрая динамически подменять системный промпт на сильно урезанную версию (чисто под Ступень 4), чтобы не переплачивать за prompt-токены на повторных генерациях? Или контекстный кэш опенроутер здесь всё равно полностью нивелирует траты на повторный прогон?

Спасибо за коммент) отличный вопрос - видно что прочитали внимательно статью)) Наверное могу сказать что прямо в корень зрите! Отвечу вкратце: я по началу думал про урезание промпта на ретрае, но тут как раз решает контекстный кэш оpenrouter, который я в таблице показывал. Поскольку базовые 6,4 к. токенов на 90% сидят в кэше, повторный прогон стоит копейки. Да и блин, если я начну на ходу подменять системный промпт на "лёгкую" версию, я просто собью кэш и заплачу за этот "лёгкий" промпт полную стоимость, что экономически невыгодно (хоть и не мои деньги то, баланс не к моим картам привязан - но заказчик их контролит знатно). да и в рамках n8n + LangChain передавать "пинок" через payload в system_kick банально проще архитектурно, чем городить ветвление с подменой текстовых шаблонов в системной ноде. Но опять же - выше сказал своё ведение и решение ) За мысль спасибо, честно))

Почему автотесты это не поймают баг

Почему нельзя? Более того, он у вас уже есть - тот самый промпт на котором генерился пустой ответ.

Спасибо за комментарий) Поясню: в том-то и засада, что LLM стохастичны. Если температура выше нуля, модель на один и тот же промпт может 9 раз ответить нормально, а на 10-й уйти в глухую защиту и выдать пустоту. Всунуть этот кейс в автотест можно, но он будет так сказать, "мигать": тесты покажут зелёный свет, а в проде баг всё равно выстрелит. К тому же, если начать крутить системный промпт ради одной этой фразы, итогом будет сместить баланс запретов, и модель начнёт выдавать Reasoning Lock на сотне других живых диалогов, которых в тестах ещё нет.К сожалению классический QA тут сливается, эту дичь ловить приходится только динамически и прямо на лету, как раз через валидатор.

А если температуру 0 поставить воспроизводится? А если неколько раз прогнать и порог частоты воспроизведения подобрать и необходимое число испытаний? Взять в охапку ChatGPT и подумать с ней как здесь могут помочь матстат и теория надёжности.

покажут зелёный свет, а в проде баг всё равно выстрелит

Aways has been. И это ника не отменяет необходимость делать тесты, тобы не получилось почти как в анекдоте, выкатили новую версию с фиксами, пришёл чувак с тем же запросам и все опять упало) А потом ещё и выяснится что на том самом poison message новый солюшн даже и не проверяли...

ловить приходится только динамически и прямо на лету, как раз через валидатор.

Так это не отменяет необходимость QAить динамический валидатор, а тут и тот самый промпт пригодится

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации