3,583 papers
arXiv:2610.27777 77 20 окт. 2026 г. FREE

Silent-error Resilience (RITE): агенты не замечают правдоподобно-неверные ответы инструментов, а проверка помогает заметить, но не исправить

КЛЮЧЕВАЯ СУТЬ
Тихая ошибка инструмента примерно вдвое снижает долю решённых задач, и это хуже, чем явный сбой. Набор тестов (бенчмарк) RITE позволяет проверить своего агента на правдоподобно-неверные ответы инструментов и показывает, на каком шаге он теряет задачу. Исследователи берут готовую цепочку шагов и подменяют одно значение посередине: вместо «Местный спорт» приходит «Блокчейн». Ни ошибки, ни пустого ответа. Агент считает это фактом и тащит дальше. Провал идёт в три ступени: не заметил, не перезапросил, не встроил исправление в итог.
Адаптировать под запрос
⚡

TL;DR

RITE — бенчмарк (набор тестов), который проверяет, что делает агент с инструментами, когда один из инструментов молча вернул неверное, но правдоподобное значение. Ни ошибки, ни пустого ответа. Формат корректный, значение выглядит разумно, просто оно не то. Исследователи берут готовую цепочку шагов, подменяют одно значение посередине и смотрят, дойдёт ли агент до верного ответа.

Главная находка: тихая ошибка примерно вдвое снижает долю решённых задач, и это хуже, чем явный сбой. Если инструмент честно сказал «ошибка», агент справляется заметно лучше. Если он вернул «Блокчейн» вместо «Местный спорт», агент берёт это как факт и тащит дальше по цепочке. Провал идёт в три ступени: агент не замечает подвох, даже заметив — не перезапрашивает источник, а даже перезапросив — не встраивает исправленное значение в итоговый ответ.

Лёгкая проверка состояния (State Checker) помогает на первых двух ступенях: агенты чаще замечают и перезапрашивают. На итоговом результате это сказывается слабо. Заставить агента посмотреть проще, чем заставить его починить.

🔬

Схема метода

Это схема бенчмарка и трёх точек отказа агента, а не готовая техника промптинга.

ПРОТОКОЛ ТЕСТА (на одной и той же точке цепочки):
  Условие 1: правильное значение      → базовый уровень
  Условие 2: явный сбой (ошибка)      → агент видит проблему
  Условие 3: тихая ошибка             → правдоподобное, но неверное значение
  Дальше агент действует свободно, до финального ответа.

ТРИ СТУПЕНИ, НА КОТОРЫХ АГЕНТ ТЕРЯЕТ ЗАДАЧУ:
  СТУПЕНЬ 1: Заметил, что значение может быть неверным?   (Noticed)
  СТУПЕНЬ 2: Перезапросил источник значения?               (refetch)
  СТУПЕНЬ 3: Встроил исправленное в итоговый ответ?        (recovery)
🚀

Пример применения

Метод в узком смысле — бенчмарк. Практическая часть — применить его выводы к своему агенту. Лучше всего это работает там, где агент берёт значения из инструментов, а ошибка в них меняет итог. Для простых одношаговых запросов проверка избыточна.

Задача: Вы настроили агента для селлера на Wildberries. Он вызывает инструмент «определи категорию товара», затем «найди комиссию по категории», затем «посчитай маржу и рекомендуемую цену». После обновления справочника первый инструмент вместо «Кроссовки детские» стал возвращать «Кроссовки». Ошибки нет, значение правдоподобное, но комиссия и маржа будут другими.

Промпт (фрагмент системной инструкции агента):

Ты — агент-аналитик для селлера маркетплейса. Считаешь маржу и рекомендуемую цену товара.

<ПравилаПроверки>
Перед тем как использовать значение из инструмента в расчёте, сверь его с исходным запросом пользователя.

1. Категория, бренд, размер, объём, цена — это ключевые значения. Для каждого напиши одной строкой: «Из запроса: ...; от инструмента: ...; совпадает: да/нет/не уверен».
2. Если «нет» или «не уверен» — повторно вызови инструмент, который это значение выдал. При необходимости подтверди значение вторым источником.
3. Если после повторного вызова значение изменилось — пересчитай ВСЕ шаги, которые зависели от старого значения. Не оставляй старые числа.
4. В финальном ответе перечисли, какие значения ты перепроверял и что изменилось.


Запрос: рассчитай маржу и цену для «кроссовки детские Nike, размер 32, закупка 2 400 ₽».

Результат: Агент перед расчётом выведет короткую сверку ключевых значений. Если категория от инструмента не совпала с запросом («Кроссовки» вместо «Кроссовки детские»), он перезапросит категорию и пересчитает комиссию и маржу. В конце будет список того, что перепроверялось. Но это не гарантия: по данным исследования, часть агентов всё равно не встроит исправление в итог. Поэтому финальный ответ стоит выборочно проверять глазами.

🧠

Почему это работает

Слабость LLM. Агент строит рассуждение на всём, что уже лежит в истории. Значение от инструмента для него — «факт из внешнего мира». Если оно правдоподобно и в нужном формате, у модели нет повода сомневаться. Явная ошибка заметна, тихая — нет.

Сильная сторона. Если модели прямо указать, что именно сверять и с чем, она это делает: в исследовании лёгкая проверка состояния заметно повысила долю случаев, когда агент замечал проблему и перезапрашивал источник. Сопоставить два значения — простая для модели операция.

Где метод упирается в предел. Сам факт «заметил» и «перезапросил» ещё не приводит к верному ответу. Исправленное значение нужно пронести через все зависимые шаги, и именно тут агенты чаще всего теряют результат. Поэтому в инструкции полезно отдельно требовать пересчёт зависимых шагов (пункт 3 в шаблоне) и отчёт о том, что изменилось.

Рычаги управления: - Список ключевых значений — сузьте до тех, что реально влияют на итог. Иначе агент будет перепроверять всё подряд и жечь шаги. - Формат сверки («из запроса / от инструмента / совпадает») — убери, если нужен короткий ответ. Оставь, если нужно видеть, что агент проверял. - Пункт про пересчёт — самый важный. Без него проверка нередко остаётся формальностью. - Отчёт в конце — даёт вам быстрый способ увидеть, где агент сомневался.

📋

Шаблон промпта

В доступной части статьи готового промпта нет, а State Checker описан лишь как «лёгкий». Шаблон ниже — реконструкция по логике трёх ступеней, а не копия из статьи. Используйте как стартовую заготовку.

Ты — {роль_агента}. Твоя задача: {задача}.

Ты используешь инструменты: {список_инструментов}.

<ПравилаПроверки>
Перед тем как использовать значение из инструмента в следующем шаге, сверь его с исходным запросом.

1. Ключевые значения: {список_ключевых_значений}.
   Для каждого напиши одной строкой: «Из запроса: ...; от инструмента: ...; совпадает: да/нет/не уверен».
2. Если «нет» или «не уверен» — повторно вызови {инструмент_источник} или подтверди значение вторым источником.
3. Если значение изменилось — пересчитай все шаги, которые на него опирались.
4. В финальном ответе перечисли: что перепроверялось, что изменилось.


Запрос пользователя: {запрос}

Что подставлять: - {список_ключевых_значений} — то, от чего зависит итог (категория, цена, дата, клиент, регион). - {инструмент_источник} — инструмент, который выдаёт эти значения (его можно перезапросить).

⚠️

Ограничения

⚠️ Текст статьи обрезан: в доступной части нет раздела с результатами State Checker в деталях, анализа по типам ошибок и приложений. Выводы о проверке опираются на аннотацию и введение.

⚠️ Проверка не лечит: лёгкая проверка состояния заставляет агента чаще замечать и перезапрашивать, но итоговая доля решённых задач растёт слабо. Не рассчитывайте, что одна строка в инструкции закроет проблему.

⚠️ Перезапрос работает не всегда: в тесте повторный запрос к источнику всегда возвращает верное значение (так построен бенчмарк). В жизни источник может стабильно врать, и перезапрос ничего не даст. Нужен независимый второй источник.

⚠️ Узкая среда: тесты на корпоративных электронно-коммерческих цепочках, данные внутренние. Перенос на ваши задачи логичен, но не проверен.

⚠️ Устаревшие значения не проверяли: ошибки типа «значение было верным раньше» исключили, потому что агенту нечем их заметить без внешних данных о времени.

🔍

Как исследовали

Исследователи из HKUST и Tencent взяли девять реальных рабочих цепочек электронной коммерции, написанных людьми. Прогнали по ним входные данные из производственных логов и записали ход выполнения. Затем в выбранной точке цепочки подменили одно значение. Получилось 167 «троек», всего 501 тест: правильное значение, явный сбой и тихая ошибка в одной и той же точке с одной и той же историей до неё. Благодаря этому можно честно сравнивать разные модели и разные типы ошибок. Тихие ошибки собирали по таксономии из семи типов: соседняя категория, слишком общая или узкая категория, похожий объект, сдвиг атрибута, соседний числовой диапазон, синоним с другим смыслом и устаревшее значение. Последний тип в итоге не использовали.

Протестировали 10 свежих моделей, включая Claude Opus 4.8 и GPT-5.5, температура 0, лимит 25 шагов. Доля решённых задач при правильном значении была 0,72–0,83, при тихой ошибке упала до 0,28–0,40. При явном сбое было 0,51–0,56. «Удержание» (отношение результата с тихой ошибкой к базовому) составило 0,35–0,53. Агенты заметили тихую ошибку в 21–34% случаев, явный сбой — в 47–59%.

Неожиданностей две. Даже сильнейшие модели теряют около половины результата. А заметить проблему ещё не значит её решить: после заметки агент часто не перезапрашивает источник, а после перезапроса не всегда доносит верное значение до финала. Claude Opus 4.8 показал лучший баланс между условиями (разрыв «явная минус тихая» минимальный), открытые модели просели сильнее.

💡

Адаптации и экстраполяции

Это мои выводы по мотивам, не результаты статьи.

🔧 Техника: сделать сбой явным → агент справляется заметно лучше. Если ваша автоматизация или кастомный инструмент может вернуть пустое или подозрительное значение, пропишите это в описании инструмента:

Если по запросу ничего не найдено или значение не удалось определить — верни явную ошибку
«НЕ_НАЙДЕНО: <причина>», а не ближайшее похожее значение.

Логика из статьи: явные сбои агент обрабатывает значительно лучше тихих, поэтому лучше превратить тихую ошибку в громкую, чем надеяться, что агент догадается.

🔧 Техника: выборочный аудит отчёта проверок → ловит оставшийся пропуск. Раз проверка сама по себе не гарантирует исправление, раз в N запусков просматривайте раздел «что перепроверялось» в финальных ответах. Если агент сомневался, но итог остался старым — вот ваш сигнал, где инструкцию надо усилить.

🔗

Ресурсы

  • Работа: RITE: Evaluating End-to-End Resilience to Silent Tool Errors in E-Commerce Agentic Systems (ICLR 2027).
  • Авторы: Wenshuo Zhang, Yuquan Lin, Yushi Sun, Yishi Lin, Rui Sheng, Peng He, Han Gao, Jikai Wang, Yifeng Rong.
  • Организации: The Hong Kong University of Science and Technology; Tencent.

📋 Дайджест исследования

Ключевая суть

Тихая ошибка инструмента примерно вдвое снижает долю решённых задач, и это хуже, чем явный сбой. Набор тестов (бенчмарк) RITE позволяет проверить своего агента на правдоподобно-неверные ответы инструментов и показывает, на каком шаге он теряет задачу. Исследователи берут готовую цепочку шагов и подменяют одно значение посередине: вместо «Местный спорт» приходит «Блокчейн». Ни ошибки, ни пустого ответа. Агент считает это фактом и тащит дальше. Провал идёт в три ступени: не заметил, не перезапросил, не встроил исправление в итог.

Принцип работы

Тест ставят на одну и ту же точку цепочки в трёх вариантах. Первый: правильное значение (базовый уровень). Второй: явная ошибка («инструмент сломался»). Третий: тихая ошибка. Дальше агент действует сам, до финального ответа. Затем смотрят на три ступени. Заметил ли агент, что значение может быть неверным? Перезапросил ли источник? Встроил ли исправленное значение в итоговый ответ? Это как конвейер с браком в середине. Если станок честно останавливается, рабочие реагируют. Если он молча выдаёт деталь чуть другого размера, брак доезжает до сборки. Агент реагирует на сломанный инструмент, но не на инструмент, который врёт правдоподобно.

Почему работает

Агент строит рассуждение на всём, что лежит в истории. Значение от инструмента для него «факт из внешнего мира». Формат верный, значение разумное, и повода сомневаться у модели нет. Явную ошибку видно, тихую нет. Если прямо указать, что сверять и с чем, модель справляется. Лёгкая проверка состояния (State Checker) заметно повысила долю случаев, когда агент замечал проблему и перезапрашивал источник. Сравнить два значения для модели просто. Дальше предел. Заставить агента посмотреть проще, чем заставить его починить. Заметить и перезапросить мало. Исправленное значение нужно пронести через все зависимые шаги, и именно здесь агенты теряют результат. На итоговой доле решённых задач проверка сказывается слабо. Честная оговорка: текст статьи обрезан. Выводы о проверке опираются на аннотацию и введение, без деталей по типам ошибок.

Когда применять

Агенты с инструментами → цепочки, где значение из одного шага питает следующие (категория, цена, дата, клиент, регион), особенно когда ошибка в нём меняет итог. Например, расчёт комиссии и маржи по категории товара. НЕ подходит для простых одношаговых запросов: проверка там избыточна. Не рассчитывайте и на то, что одна строка в инструкции закроет проблему целиком. В тесте повторный запрос всегда возвращал верное значение, так построен бенчмарк. В жизни источник может стабильно врать, и тогда нужен независимый второй источник. Тесты шли на внутренних данных корпоративных цепочек интернет-торговли, перенос на ваши задачи логичен, но не проверен.

Мини-рецепт

1. Найди ключевые значения: только те, что реально влияют на итог (категория, цена, размер). Если проверять всё подряд, агент сожжёт кучу шагов.
2. Заставь сверять: перед использованием значения агент пишет одной строкой: «Из запроса: ...; от инструмента: ...; совпадает: да/нет/не уверен».
3. Разреши перезапрос: при «нет» или «не уверен» агент повторно вызывает источник. Если источник может врать стабильно, добавь второй независимый.
4. Самое важное, потребуй пересчёт: если значение изменилось, пересчитываются все шаги, которые на него опирались. Без этого пункта проверка остаётся формальностью.
5. Попроси отчёт: в конце список того, что перепроверялось и что изменилось. Сразу видно, где агент сомневался.
6. Не верь на слово: финальные ответы выборочно проверяй глазами. Агент мог заметить подвох и всё равно оставить старые числа.
7. Проверь на своём агенте: подмени одно значение посередине цепочки на похожее, но неверное. Посмотри, на какой из трёх ступеней он сыплется.

Примеры

[ПЛОХО] : Рассчитай маржу и цену для «кроссовки детские Nike, размер 32, закупка 2 400 ₽» (Инструмент «определи категорию» после обновления справочника вернул просто «Кроссовки». Агент не заметил разницу, взял чужую комиссию и посчитал маржу не по той категории.)
[ХОРОШО] : Ты — агент-аналитик для продавца маркетплейса. Считаешь маржу и рекомендуемую цену. <ПравилаПроверки> Перед использованием значения из инструмента сверь его с запросом. 1. Для категории, бренда, размера и цены напиши: «Из запроса: ...; от инструмента: ...; совпадает: да/нет/не уверен». 2. Если «нет» или «не уверен» — повторно вызови инструмент, который выдал значение. 3. Если значение изменилось — пересчитай ВСЕ шаги, которые от него зависели. Старые числа не оставляй. 4. В конце перечисли, что перепроверял и что изменилось. Запрос: рассчитай маржу и цену для «кроссовки детские Nike, размер 32, закупка 2 400 ₽» (Агент увидит расхождение «Кроссовки детские» и «Кроссовки», перезапросит категорию и пересчитает комиссию и маржу. Но гарантии нет: часть агентов всё равно не встроит исправление в итог.)
Источник: RITE: Evaluating End-to-End Resilience to Silent Tool Errors in E-Commerce Agentic Systems
ArXiv ID: 2610.27777 | Сгенерировано: 2026-10-21 13:20

Проблемы LLM

ПроблемаСутьКак обойти
Агент принимает правдоподобное, но неверное значение от инструментаИнструмент возвращает значение в верном формате, без ошибки, но не то. Например, "Кроссовки" вместо "Кроссовки детские". Для модели всё, что лежит в истории диалога, — факт. Повода сомневаться нет. Неверное значение идёт дальше по цепочке шагов. Доля решённых задач падает примерно вдвое. Явная ошибка ("сбой") вредит заметно меньше. Проблема касается любых агентов, где итог зависит от данных инструментовДобавь в инструкцию сверку ключевых значений с исходным запросом. Перечисли, какие значения ключевые: категория, цена, дата, регион. Требуй для каждого строку "из запроса / от инструмента / совпадает: да/нет/не уверен". Если можешь, делай так, чтобы инструменты возвращали явную ошибку, а не подставляли правдоподобное значение по умолчанию. Для важных значений нужен независимый второй источник
Агент заметил ошибку, но не исправил итоговый ответАгент увидел несовпадение и даже перезапросил источник. Но новое значение не дошло до финала. Старые числа остались в зависимых шагах. Заметить и перезапросить проще, чем пересчитать всё заново. Лёгкая проверка улучшает первые два шага, а итог почти не меняетДобавь в инструкцию отдельный пункт: "Если значение изменилось, пересчитай все шаги, которые на него опирались. Старые числа не оставляй". Требуй в конце отчёт: что перепроверено и что изменилось. Выборочно проверяй финальные ответы глазами

Методы

МетодСуть
Сверка ключевых значений с запросом плюс обязательный пересчёт — защита от тихих ошибок инструментовДобавь в системную инструкцию блок правил проверки. Шаги: 1) Назови ключевые значения, от которых зависит итог. 2) Перед использованием значения агент пишет одну строку: Из запроса: ...; от инструмента: ...; совпадает: да/нет/не уверен. 3) При "нет" или "не уверен" агент повторно вызывает инструмент-источник или берёт второй источник. 4) Если значение изменилось, агент пересчитывает все зависимые шаги. 5) В финале агент перечисляет, что проверял и что поменялось. Почему работает: сопоставить два конкретных значения для модели просто. Но без указания, что с чем сверять, у неё нет повода сомневаться. Пункт про пересчёт самый важный. Без него проверка часто остаётся формальной. Когда да: многошаговые цепочки, где ошибка в одном значении меняет итог. Когда нет: простые одношаговые запросы, там проверка лишняя. Ограничения: метод не гарантирует исправление, часть агентов всё равно не встроит новое значение в итог. Повторный вызов не поможет, если источник стабильно врёт. Тогда нужен независимый второй источник. Не делай список ключевых значений длинным, иначе агент будет перепроверять всё подряд и тратить шаги
📖 Простыми словами

RITE: Evaluating End-to-End Resilience to Silent Tool Errors in E-Commerce Agentic Systems

arXiv: 2610.27777

Нейросетевые агенты доверчивы как дети: всё, что возвращает подключенный инструмент, они считают абсолютной истиной. Когда API падает с ошибкой 500 — это мелочь, агент видит сбой и пытается повторить запрос. Настоящий кошмар начинается, когда инструмент выдаёт тихую ошибку: правильный формат, валидный JSON, правдоподобная цифра, но данные внутри — лажа. У модели просто нет повода сомневаться, и она на полном ходу строит цепочку рассуждений на фальшивке.

Это как если бы навигатор без всяких предупреждений уверенно скомандовал повернуть направо прямо в глубокий овраг. Никаких ошибок на экране, значок горит зелёным, формально маршрут проложен идеально, но машина летит с обрыва. Агент не чувствует подвоха: он не валидирует входящие факты, а слепо хавает подсунутую дичь и уверенно сливает бюджет.

Чтобы вскрыть эту дыру, исследователи выкатили бенчмарк RITE — стресс-тест на устойчивость агентов к скрытым сбоям. Механика простая и жестокая: берут рабочую цепочку шагов, подменяют ровно одно значение посередине на чушь в красивой обёртке и фиксируют три точки отказа. Если агент не умеет перепроверять промежуточные данные, он выдаёт клиенту бред, искренне веря, что сделал всё строго по инструкции.

Обкатали это на e-commerce, но принцип универсален. Любой многошаговый агент — в финтехе, логистике или парсинге аналитики — стабильно ломает зубы об этот баг. Чем длиннее цепочка вызовов, тем выше риск, что одна мелкая тихая ошибка где-то на третьем шаге незаметно помножит на ноль весь финальный результат.

Короче: хватит наивно надеяться на аккуратность внешних сервисов — пора вкручивать перекрёстную валидацию здравого смысла. Если твой агент делает сложнее одного действия за раз, его главный враг — не падение сервера, а красивая ложь от собственного софта. Научишь модель сомневаться в ответах инструментов — получишь надёжную систему, иначе гарантированно словишь эпичный облом на проде.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с