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: агенты замечали конфликт и даже вычисляли верный ответ внутри себя, но финальный ответ почти никогда не отражал это — модель либо молчала о проблеме, либо явно выдавала испорченное значение. Это противоречит ожиданию, что модель просто "не заметила" плохие данные — на деле она заметила, но не донесла это до пользователя.
Проверили три способа защиты — попросить сравнивать/проверять/раскрывать конфликты в промпте, добавить метки надёжности источника, и дообучить модель — и ни один не сработал стабильно во всех случаях. Это подводит к выводу: слепое доверие инструментам — не баг, который легко починить одной инструкцией, а системная особенность, требующая постоянного контроля с твоей стороны.
