3,583 papers
arXiv:2609.05587 76 4 сент. 2026 г. FREE

Overtrust in Tools: агенты тихо принимают неверные данные от инструментов, даже когда сами знают правильный ответ

КЛЮЧЕВАЯ СУТЬ
Обнаружено: в размышлениях модель почти всегда замечает конфликт. Для кода — в 90%+ случаев она видит, что инструмент выдал не то, что она знает сама. Модель даже вычисляет правильный ответ в уме. А потом в финальном ответе молча подставляет испорченную цифру — будто ничего не заметила. Простая инструкция в промпте заставляет её не молчать и предупредить пользователя о расхождении. Фишка — не учить модель замечать проблему, она уже умеет. Нужно просто запретить ей молчать об этом.
Адаптировать под запрос

TL;DR

Когда AI-агент использует инструмент — поиск в интернете, выполнение кода, вызов другого AI как помощника — он почти всегда верит результату инструмента на слово, даже если тот явно испорчен. Хуже того: агент может сам правильно ответить на вопрос без инструмента, но как только тот же инструмент выдаёт неверный результат — агент меняет свой правильный ответ на неверный.

Самое тревожное: в размышлениях (thinking) модель часто замечает конфликт между своим знанием и результатом инструмента, и даже вычисляет правильный ответ — но в финальном ответе всё равно выдаёт испорченное значение, и почти никогда не предупреждает пользователя. Ты получаешь уверенно поданный неверный ответ, хотя модель "знала" правильный.

Исследователи проверили три способа защититься: просить модель явно сравнивать результат инструмента со своими знаниями, требовать перепроверки при конфликте, обязывать сообщать пользователю о расхождениях. Один из этих приёмов — явная инструкция "сообщай о любом конфликте" — снижает доверие к плохим данным, хотя и не полностью.


🔬

Схема метода

Промпт-политика для агента при работе с инструментами (три варианта, можно комбинировать):

COMPARE → перед ответом сравни результат инструмента со своими знаниями
VERIFY  → если есть подозрение на конфликт — сделай дополнительную проверку другим способом
DISCLOSE → обязательно сообщи пользователю о любом несоответствии, даже если выбрал один из вариантов

Все три пункта — это инструкции в одном промпте, не отдельные запросы.


🚀

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

Задача: Ты просишь ChatGPT с доступом в интернет или Claude с code execution посчитать что-то важное для бизнеса — например, узнать актуальный курс валюты для расчёта закупки у зарубежного поставщика, или пересчитать финансовую модель через код.

Промпт:

Найди актуальный курс доллара к рублю и посчитай, сколько будет стоить 
закупка на 15 000 долларов в рублях.

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

Обязательно сообщи мне, если ты заметил ЛЮБОЕ несоответствие между 
результатом инструмента и своими расчётами или знаниями — даже если 
в итоге ты выбрал использовать один из вариантов. Никогда не выбирай 
цифру молча.

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


🧠

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

Модели не проверяют инструменты по умолчанию — они устроены так, чтобы доверять внешним данным, потому что обычно инструмент даёт то, чего у модели нет самой (актуальные цены, точные вычисления). Это разумное поведение в норме, но оно превращается в слабость, когда данные испорчены, а модель не проверяет их критически.

При этом модель умеет замечать конфликты — исследование показало, что в режиме размышлений модель почти всегда (более 90% случаев для кода) фиксирует расхождение между своим знанием и результатом инструмента, и даже вычисляет правильный ответ "в уме". Проблема не в том, что модель не видит проблему — проблема в том, что финальный ответ не отражает то, что она увидела.

Явная инструкция типа DISCLOSE работает потому, что она заставляет модель перенести то, что происходит в размышлениях, в видимый ответ. Модель уже умеет замечать несоответствие — ей просто нужно явное указание "не молчи об этом".

Рычаги управления: - Убери фразу "никогда не выбирай молча" → эффект слабее, модель может тихо выбрать инструмент - Добавь "перепроверь другим способом" (VERIFY) → сильнее для code execution и суб-агентов, слабее для поиска - Для критичных расчётов проси модель сначала посчитать вручную "в голове", потом сверить с кодом — это симулирует тот эффект, что прямое утверждение пользователя вызывает намного меньше слепого доверия, чем возврат инструмента


📋

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

Когда ты используешь {инструмент: поиск / код / другого AI-помощника} 
для получения информации по моей задаче:

1. Перед финальным ответом сравни результат {инструмента} с тем, 
   что ты уже знаешь по теме {тема_задачи}.
2. Если результат вызывает сомнение или сильно отличается от ожидаемого — 
   проверь его другим способом (иной запрос, ручной пересчёт, другая логика).
3. Обязательно сообщи мне о любом замеченном несоответствии между 
   результатом инструмента и твоими знаниями или предыдущими расчётами — 
   даже если ты в итоге решил использовать один из вариантов. 
   Никогда не выбирай ответ молча, без объяснения.

Моя задача: {задача}

Подставь конкретный инструмент, тему и задачу. Инструкция работает как системная политика — можно вставить её один раз в начале диалога с агентом, который будет пользоваться поиском/кодом несколько раз.

🚀 Быстрый старт — вставь в чат:

Вот принцип защиты от слепого доверия AI-агента инструментам. 
Адаптируй под мою задачу: {твоя задача с использованием поиска/кода/агента}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит, какой именно инструмент ты используешь и что для тебя критично проверить — потому что от этого зависит, что́ именно сравнивать и как перепроверять.


⚠️

Ограничения

⚠️ Непостоянный эффект: ни один приём (промпт-инструкция, метка надёжности источника, дообучение) не убирает проблему полностью и не работает одинаково для всех моделей и инструментов. Где-то помогает, где-то нет.

⚠️ Метки надёжности вредят: если инструмент/источник помечен как "надёжный на 95%", это может усилить доверие к испорченным данным, а не защитить от них. Простое навешивание ярлыка не работает.

⚠️ Проблема системная, не редкая: даже топовые модели в дополнительных проверках принимали примерно половину испорченных результатов поиска — это не крайний случай, а обычное поведение.

⚠️ Инструкция может немного снизить точность на нормальных, неповреждённых данных — компромисс не бесплатный.


🔍

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

Исследователи протестировали 14 моделей на трёх типах задач: ответы на вопросы с веб-поиском, пересказ документов через AI-помощника, и решение арифметики через выполнение кода. В каждом случае они намеренно портили результат инструмента тремя способами: правдоподобная ошибка (похожее число или имя), явно другой факт, и полностью выдуманный факт. Затем смотрели — попадёт ли испорченный ответ в финальный ответ агента (adoption rate), и что хуже — заменит ли он уже правильный ответ, который модель показала раньше без инструмента (override rate).

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

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


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

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

Обнаружено: в размышлениях модель почти всегда замечает конфликт. Для кода — в 90%+ случаев она видит, что инструмент выдал не то, что она знает сама. Модель даже вычисляет правильный ответ в уме. А потом в финальном ответе молча подставляет испорченную цифру — будто ничего не заметила. Простая инструкция в промпте заставляет её не молчать и предупредить пользователя о расхождении. Фишка — не учить модель замечать проблему, она уже умеет. Нужно просто запретить ей молчать об этом.

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

Три инструкции в одном промпте, а не отдельные запросы. COMPARE — сравни результат инструмента со своим знанием. VERIFY — если есть сомнение, перепроверь другим способом. DISCLOSE — обязательно скажи пользователю о любом расхождении, даже если в итоге выбрал вариант инструмента. Сильнее всего работает именно DISCLOSE — она не учит модель новому, а просто открывает то, что модель уже посчитала в размышлениях (thinking).

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

Модель по умолчанию доверяет инструментам. Это разумно — инструмент обычно даёт то, чего у модели нет: свежий курс валют, точный расчёт. Но когда данные испорчены, это доверие превращается в слабость. Модель не слепая — она видит конфликт в 9 из 10 случаев с кодом и даже считает правильный ответ в уме. Проблема не в том, что модель не замечает подмену. Проблема в том, что это знание не попадает в финальный ответ. Инструкция DISCLOSE просто наводит мост между тем, что модель думает, и тем, что она говорит.

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

Агентные сценарии с инструментами → конкретно там, где результат может быть подделан: промпт-инъекция, кривой API, галлюцинирующий суб-агент. Особенно критично для финансовых расчётов, юридических справок, медицинских данных. Не подходит как единственная защита: даже с этой инструкцией топовые модели принимают около половины испорченных результатов поиска — это подстраховка, а не гарантия.

Мини-рецепт

1. Определи инструмент: поиск, выполнение кода или суб-агент — от этого зависит, что именно сравнивать
2. Добавь три пункта в системный промпт: COMPARE, VERIFY, DISCLOSE — все сразу, не по отдельности
3. Пропиши прямо: «никогда не выбирай ответ молча» — это самая сильная часть инструкции
4. Не вешай метки надёжности типа «источник надёжен на 95%» — жесть, но это усиливает слепое доверие, а не снижает его
5. Проверь на живых задачах: точность на чистых данных может слегка просесть — это цена защиты

Примеры

[ПЛОХО] : Найди курс доллара и посчитай стоимость закупки на $15000
[ХОРОШО] : Найди курс доллара и посчитай закупку на $15000. Перед ответом сравни курс с тем, что знаешь сам. Если цифра подозрительно отличается — перепроверь другим способом. Обязательно напиши мне о любом расхождении, даже если в итоге использовал результат поиска.
Источник: AgentsTrustToolsToo Much: Measuring Reliance on Unreliable Tools
ArXiv ID: 2609.05587 | Сгенерировано: 2026-09-09 04:32

Проблемы LLM

ПроблемаСутьКак обойти
Агент молча заменяет свой верный ответ на данные испорченного инструментаМодель может правильно ответить на вопрос сама, без инструмента. Но если тот же инструмент (поиск, код, другой AI-помощник) выдаёт неверный результат — модель меняет свой ответ на этот неверный, без предупреждения. Работает для поиска, выполнения кода, вызова суб-агентов. Это не редкий сбой — даже топовые модели принимают около половины испорченных результатов поискаДобавь в промпт явную инструкцию: перед финальным ответом сравнить результат инструмента со своими знаниями, при подозрении на конфликт — перепроверить другим способом, и обязательно сообщить о любом расхождении, даже если в итоге выбрала данные инструмента
Метка "надёжный источник" усиливает слепое доверие вместо защитыКажется логичным пометить источник как "надёжный на 95%" — но это может увеличить доверие модели к испорченным данным именно от этого источника, а не снизить его. Простой ярлык надёжности работает в обратную сторонуНе полагайся на метки достоверности источника как на защиту. Вместо этого требуй явного сравнения данных со знаниями модели, независимо от заявленной надёжности источника

Методы

МетодСуть
DISCLOSE — инструкция "никогда не выбирай молча"Добавь в промпт явное требование: сообщать о любом замеченном несоответствии между результатом инструмента и своими знаниями, даже если модель в итоге решила использовать данные инструмента. Обязательно сообщи о любом несоответствии... Никогда не выбирай ответ молча. Работает потому, что модель уже способна замечать конфликт в размышлениях — ей не хватает команды перенести это в видимый ответ. Усиливай добавлением VERIFY ("перепроверь другим способом") — особенно помогает для кода и суб-агентов, слабее для поиска. Когда применять: любые задачи с внешними данными, где ошибка дорога (финансы, расчёты, критичные цифры). Когда не поможет полностью: эффект непостоянный, зависит от модели и инструмента, и может немного снизить точность на нормальных неповреждённых данных
📖 Простыми словами

AgentsTrustToolsToo Much: Measuring Reliance on UnreliableTools

arXiv: 2609.05587

AI-агенты тупо верят на слово любым внешним инструментам: поисковикам, выполнению кода или вспомогательным моделям. Вся беда в том, что нейросети натренированы считать сторонний софт абсолютным авторитетом, ведь он якобы закрывает их пробелы в актуальных данных. В итоге получается абсурд: модель сама прекрасно знает верный ответ, но стоит подключенному калькулятору выдать чушь — она выкидывает свои знания на помойку и послушно соглашается с бредом.

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

Суть проблемы в механике избыточного доверия к инструментам (overreliance). Независимо от того, запускает ли агент code execution для финмодели или делает web-search за свежими курсами валют, у него по умолчанию нет фильтра на входящую лажу. Вместо встроенной верификации данных модель воспринимает любой системный мусор как истину в последней инстанции.

Тестировали на базовых задачах, но грабли одинаковые для любого продакшена. Строишь ли ты сложного агента для трейдинга, парсер цен поставщиков или бота поддержки — ошибка во внешнем API мгновенно ломает всю цепочку. Если внешний скрипт вернёт битую цифру, твоя хвалёная LLM даже не попытается включить критическое мышление и просто скормит её клиенту.

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

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

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

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