TL;DR
Метод отделяет момент проверки от истории действий модели: вместо того, чтобы просить LLM оценить результат своего же запроса или вывода внутри того же диалога, ей показывают только «чистые» факты — без следа её собственных рассуждений. Модель судит так, будто видит эту информацию впервые, а не защищает своё прошлое решение.
Оказалось, что модель ведёт себя нечестно сама с собой. Если LLM сама сформулировала поисковый запрос, а результаты оказались нерелевантными (даже если это прямо написано в аннотации к странице), она всё равно открывает эту страницу — просто потому что запрос был её. Но если те же самые результаты подать ей как посторонний текст, без упоминания, что запрос выдумала она сама, модель мгновенно замечает нерелевантность и отказывается идти дальше. Авторы назвали это инерционным искажением (inertia bias): модель не хочет признавать, что её собственное действие было ошибкой.
Метод борется с этим через изоляцию контекста в двух критических точках: (1) когда агент решает, стоит ли открывать найденную страницу, ему показывают только факты задачи, без истории его же поискового запроса; (2) когда агент готовит финальный ответ, его цепочку рассуждений разбивают на пронумерованные шаги и проверяют каждый переход (A→B, B→C) отдельно, изолированно от общего контекста.
Схема метода
БЛОК 1 — Проверка страницы (поиск):
ШАГ 1: Агент делает запрос → получает список абстрактов
ШАГ 2: Изолированный фильтр смотрит на абстракты БЕЗ истории запроса →
решение: «открыть страницу» / «переформулировать запрос»
БЛОК 2 — Проверка финального ответа (отдельный вызов после того, как модель решила, что готова ответить):
ШАГ 1: Реорганизация — разрозненные шаги рассуждений превращаются в явную
пронумерованную цепочку: A → B → C → ...
ШАГ 2: Пошаговая проверка — каждый переход (A→B, B→C) проверяется
отдельно, как самостоятельное утверждение, без опоры на то,
что предыдущий шаг «уже одобрен»
ШАГ 3: Если найден слабый переход → конкретное замечание и доработка.
Если все переходы верны → ответ выдаётся
Оба блока можно запускать как отдельные запросы к модели — в оригинале это автоматический шаг внутри агентной системы, но принцип легко переносится в обычный чат вручную.
Пример применения
Задача: Ты попросил ChatGPT собрать факты для due diligence перед вложением в стартап — например, проверить утверждение «выручка компании X выросла на 300% за год по данным открытых источников». Модель нашла источники, сделала вывод. Теперь ты хочешь понять, не выдаёт ли она желаемое за действительное — просто потому что сама уже «поверила» в свой вывод.
Промпт (для отдельного, свежего чата — это и есть изоляция контекста):
Вот утверждение и источники, на которые оно опирается —
без объяснений, кто и как их искал:
Утверждение: «Выручка компании X выросла на 300% за год»
Источник 1: [цитата/данные]
Источник 2: [цитата/данные]
Ты — независимый аудитор, который не участвовал в подборе этих
источников и не видел, как формулировалось утверждение.
1. Разбей вывод на цепочку логических шагов: A → B → C.
2. Проверь каждый переход отдельно — следует ли B из A фактически
и логически? Не считай шаг верным только потому что предыдущий
шаг выглядит правдоподобно.
3. Укажи конкретно, где логика рушится (если рушится).
4. Дай вердикт: «Все шаги подтверждены» или «Найдены проблемы: [список]».
Результат: Модель построит явную цепочку рассуждений от источников к выводу, отдельно проверит каждый переход и укажет конкретный шаг, где логика слабая (например, «источник 2 говорит про рост за квартал, а не за год»), вместо общего «да, всё выглядит убедительно».
Почему это работает
Когда LLM видит в контексте, что она сама сформулировала запрос или вывод, она склонна защищать это решение, а не оценивать его объективно — как человек, который не хочет признавать, что его собственная идея была плохой. Это внутреннее искажение, а не подстройка под мнение пользователя (это отличает его от подхалимства) и не просто упорство в старой гипотезе (confirmation bias) — триггер именно авторство действия.
Зато LLM хорошо умеет судить объективно, если не видит связи «это моё действие». В экспериментах модель почти всегда правильно отбрасывала нерелевантные результаты, когда те же данные подавались как посторонняя информация, без упоминания, что запрос выдумала она.
Метод использует эту разницу: убирает из контекста след «это я решил», оставляя только факты задачи. Модель судит как посторонний, а не как автор.
Рычаги управления: - Гранулярность проверки (весь ответ целиком vs пошагово) → для простых задач достаточно общей проверки, для важных решений — разбивай на шаги - Степень изоляции — можно использовать «новый чат» как максимальную изоляцию (модель вообще не видит, что это её текст), либо просто убрать из промпта фразы вроде «ты решил, что...» - Количество точек проверки — в оригинале два узла (поиск и финальный ответ), для чата можно применить только один, там где риск ошибки выше
Шаблон промпта
Вот итоговый вывод по задаче «{задача}»:
{вывод_без_упоминания_как_он_получен}
Ты — независимый эксперт, который не участвовал в создании этого
вывода и не видел процесс его получения.
1. Разбей вывод на цепочку логических шагов: A → B → C → ...
2. Проверь каждый переход отдельно: следует ли следующий шаг из
предыдущего фактически и логически? Не считай шаг верным
автоматически из-за того, что предыдущий шаг выглядел правильным.
3. Если находишь слабое место — укажи конкретно, в чём проблема,
и предложи исправление.
4. Дай финальный вердикт: «Все шаги подтверждены» или «Найдены
проблемы: [список]».
Подставь в {задача} — суть проверяемого решения (план, расчёт, факт), в {вывод_без_упоминания_как_он_получен} — сам ответ, очищенный от фраз типа «я решил», «на основе моего поиска» (это и есть изоляция).
🚀 Быстрый старт — вставь в чат:
Вот шаблон изолированной проверки вывода. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, какой именно вывод нужно проверить и в какой момент рассуждения он появился — потому что для честной проверки важно отделить сам вывод от истории его создания.
Ограничения
⚠️ Ручной труд: в оригинале систему делает автоматика (агент сам вычищает контекст). В чате пользователю нужно вручную выделить «чистый» вывод без следов своего же рассуждения — если просто скопировать весь диалог, эффект пропадёт.
⚠️ Область применения: метод проверен на задачах с проверяемым фактическим ответом (даты, цифры, статистика). Для субъективных оценок (креатив, стиль текста) чёткого подтверждения эффекта в статье нет.
⚠️ Не устраняет ошибку полностью, только снижает риск: даже при изоляции контекста модель может ошибиться повторно — метод уменьшает искажение, а не гарантирует правильный ответ.
Как исследовали
Команда сначала создала диагностический тест IBIS: попросила модель qwen3-max сгенерировать больше тысячи фактических вопросов с проверяемым ответом, отсеяла слабые через оценку тремя разными LLM (Gemini, DeepSeek, Claude) по критериям проверяемости и уникальности ответа, оставив 712 качественных примеров. Затем реальные поисковые запросы прогнали через Google, а живые аннотаторы (с согласием между собой 0.68 по Fleiss’ kappa — это неплохой уровень согласия) разметили, надо ли по этим результатам искать заново, открывать страницу или ответ уже готов.
Ключевой эксперимент: одни и те же результаты поиска подавали модели в двух видах — как её собственное действие (Agentic Mode) и как посторонний текст (Observer Mode). Разница в точности между этими режимами и есть прямое измерение инерционного искажения — и она оказалась существенной: модель гораздо хуже признавала свою ошибку, когда запрос был «её».
После этого NIS-Agent протестировали на бенчмарках для веб-агентов (GAIA, WebWalkerQA, BrowseComp, BrowseComp-zh) на нескольких моделях (GPT-4o, GPT-4.1, Claude 3.7, DeepSeek) — метод показал результат на уровне лучших систем, но с расходом токенов на треть меньше, потому что изолированный фильтр сразу отбрасывает бесполезные страницы. Отдельно дообучили маленькую модель на 8 миллиардов параметров (через SFT и обучение с подкреплением GRPO), чтобы у неё изначально было меньше склонности к инерционному искажению — и эта маленькая модель приблизилась по качеству к GPT-4o. Это уже требует кода и обучения, но сам факт — что «прошитая» устойчивость к искажению работает так же, как ручная изоляция контекста — подтверждает, что механизм реален, а не артефакт промпта.
