Веб-сервер сообщает об ошибке через исключение. Вы получаете 500, трассировку стека, номер строки. Агент сообщает об ошибке, успешно выполняя не то действие. Он зацикливается на двадцать ходов, отказывается от разумного запроса, позволяет уговорить себя нарушить системный промпт, закрывает тикет, удаляя тест. Каждый вызов возвращает 200 OK.
В этом и заключается разрыв. Ваши трассировки, логи, графики задержек — все они следят за инфраструктурой. Ни один из них не следит за самим диалогом.
Ставки растут, а прозрачность остается на прежнем уровне. Агенты каждый месяц получают доступ к новым инструментам, вызывают собственные под-агенты, работают часами без участия человека и теперь используются в здравоохранении, финансах и службах поддержки, где тихая ошибка стоит реальных денег. Чем усерднее работает агент, тем меньше информации дает код 200.
Рефлекс считывает каждый ход, сортирует сбои по сигналам, таким как разочарование и джейлбрейки, выявляет их во всех чатах и передает полученные данные обратно агенту.
Ошибки живут в тексте
Частота ошибок и задержки вызывают исключения, поэтому вы уже следите за ними. Сигналы, которые действительно говорят о том, хорош ли агент, вообще не попадают в ваши логи, потому что они семантические. Они скрыты в том, что пользователь и агент сказали друг другу. Пользователь пишет: «Я спрашиваю уже в третий раз», а затем сдается. Промпт, который вынуждает агента нарушить собственные правила. Агент восемь раз обращается к одному и тому же инструменту, каждый раз получая одну и ту же ошибку, и пытается в девятый. Совершенно разумный запрос, который агент отклонил без видимой причины. Агент выдает цепочку своих рассуждений в ответе.
Ничто из этого не проявляется само по себе. Кто-то должен прочитать ход и поставить на него метку, и этот «кто-то» — то, что мы называем рефлексом: небольшой классификатор, который смотрит на один ход и дает один ответ. Не оценка от 1 до 10, которая меняется каждый раз, когда вы правите формулировку. А реальная метка, которую можно посчитать, отследить после релиза и получить уведомление, если она подскочит.
Восемь рефлексов, один API-вызов
Ничего не нужно обучать заранее. Отправьте ход в API, и метка вернется менее чем за 90 мс. Восемь из них готовы к работе:
Один вызов, один классификатор, одна метка:
Пропускайте через него каждый ход. frustrated (разочарование) со значением 0.97 становится строкой в вашей панели мониторинга, а не числом, затерянным в транскрипте, который никто никогда не откроет.
Показатель, по которому можно настроить оповещения
Одна метка сама по себе — это просто точка данных. Направьте тот же рефлекс на весь ваш трафик, и он превратится в показатель, а показатель — это то, на основе чего вы действительно управляете продуктом. Уровень разочарования некоторое время держится на базовом уровне. Затем выходит обновление, и он подскакивает:
Новый системный промпт вышел в версии 2.4, и уровень разочарования удвоился за несколько часов. Никому не пришлось сидеть с тысячей транскриптов, чтобы это заметить. Рефлекс прочитал каждый ход, и график просто показал вам результат.
Теперь выпуск обновлений становится экспериментом. Отправьте изменение промпта или модели на 5% трафика, оставьте остальное в качестве контроля и наблюдайте за изменением показателей. Если после внедрения изменений количество отказов или разочарований растет, вы выпустили регрессию и узнали об этом в тот же день, а не неделю спустя через показатели оттока. Это A/B-тестирование того, что агент сделал на самом деле, а не того, что, по предположению вашего набора для оценки, он должен был сделать.
Если мы не выпускаем сигнал, мы его обучаем
Восемь рефлексов покрывают типичные ошибки. У вашего продукта есть ошибки, присущие только ему: медицинский агент, который никогда не должен давать советы по дозировке; агент по написанию кода, который тихо удаляет провальный тест; агент поддержки, отклоняющийся от политики. Опишите поведение, предоставьте несколько размеченных примеров или позвольте нам сгенерировать синтетический набор, и у вас будет собственный рефлекс менее чем за час. Он работает через тот же API, с той же задержкой, что и встроенные. Публичный интерфейс совместим с OpenAI-fine-tuning, поэтому, если вы обучали модель через OpenAI SDK, вы уже знаете этот формат.
Метки возвращаются к агенту
Рефлекс — это детектор, но его выходные данные — это сигнал для обучения. Каждая метка — это строка, которая может стать кейсом для оценки, примером для дообучения или компонентом вознаграждения в RL. Ход, который сегодня был помечен как «разочарование», — это поведение, которого ваш основной агент научится избегать завтра.
Я узнал об этом в Tesla, создавая стек, который обрабатывал данные вождения в масштабе, чтобы находить кадры, на которых инженеры хотели обучаться: закрытая камера, редкое подрезание, редкий случай, который модель постоянно упускала. Автопарк производил петабайты данных. Ничто достаточно точное, чтобы быть полезным, не было достаточно дешевым, чтобы запускать это на всех данных, поэтому вся игра заключалась в поиске фильтра, который вы могли бы позволить себе запускать на всем, потому что редкое событие, которое вам нужно, никогда не бывает в выборке.
Относитесь к своему производственному трафику как к воронке. В верхней части рефлексы работают на 100% ходов и помечают несколько процентов. Этот помеченный срез достаточно мал, чтобы передать его на дорогую проверку, которую вы никогда не смогли бы применить ко всему производству: ваша команда читает важные ходы, а ваши собственные агенты разбираются с остальными. Рефлексы не заменяют это суждение. Они решают, что стоит внимания, чтобы никто не утонул в транскриптах, которые вернули 200 и ничего не значили.
Это работает только потому, что детектор достаточно дешев, чтобы оставлять его включенным для всего. Один проход по магистрали помечает каждый ход множеством меток, поэтому десятый рефлекс почти ничего не стоит. Прочитайте, как мы это построили.
Метка никогда не была сложной частью. Сложно было запустить её на всем производстве. Это та проблема, которую мы решили.
Попробуйте рефлекс на своем трафике или прочитайте документацию.








