TL;DR
Это два текстовых приёма для мультиагентных систем и агрегаторов. Первый: короткий абзац в промпт того, кто собирает сообщения. В нём прямо сказано, что пересказ ничего не добавляет к доказательствам. Второй: правило для агентов в команде. Они ссылаются на чужое наблюдение («см. сообщение r1»), а не повторяют его значение. Есть и третий вариант: заставить агрегатор сначала выписать список уникальных наблюдений, а потом отвечать по этому списку.
Главная находка: LLM считает повтор за частичное новое свидетельство, хотя в логе написано, что это копия. Один сенсор, о котором сообщили трижды, модель оценивает как 1,1–1,8 независимых показания. Часть ответов считает честно: одно показание. Другая часть считает каждое упоминание за новое, то есть три. Среднее выглядит безобидно, но в 5–40% случаев модель делает вывод «пора действовать» там, где у идеального счётчика доказательств ещё недостаточно. Хуже того, агенты сами пересказывают всё подряд, если им не запретить: в среднем 71% сообщений от тех, кто ничего не наблюдал, повторяют чужое наблюдение.
Лечение дешёвое. Абзац-декларация в промпте агрегатора сводит вес копии почти к нулю. Правило «ссылайся, а не пересказывай» снижает долю преждевременных решений с 11,2% до 1,1%. Настоящее подтверждение от трёх независимых наблюдателей при этом не теряется.
Схема метода
ВАРИАНТ A: Декларация (в промпт агрегатора, один запрос)
Абзац: «пересказ ≠ новый источник; считай уникальные наблюдения»
→ оценка опирается на число источников
ВАРИАНТ B: Сначала список (два шага, можно в одном промпте)
ШАГ 1: выпиши уникальные наблюдения, кто и откуда → список
ШАГ 2: ответь только по этому списку → вывод
ВАРИАНТ C: Правило ссылок (в промпт агентов-участников)
Не повторяй значение чужого наблюдения → пиши «см. {id сообщения}»
→ в логе остаётся одно упоминание на одно наблюдение
Варианты можно комбинировать. A и B меняют агрегатор, C меняет то, что попадает в лог.
Пример применения
Задача: Вы запускаете команду из четырёх агентов для мониторинга рынка. Нужно решить, переписывать ли ценовую стратегию на Wildberries из-за слуха «комиссию повысят». Агент 1 нашёл пост в одном Telegram-канале. Агенты 2 и 3 пересказали его. Агент 4 «подтвердил», что «информация совпадает». Итоговый агент видит четыре сообщения и склоняется к «слух подтверждён, действуем». На деле источник один.
Промпт агрегатору (вариант A + B):
Ты — итоговый аналитик. Тебе пришёл лог сообщений от агентов.
Важно: сообщение, которое пересказывает, пересылает или «подтверждает»
чужое наблюдение со ссылкой на него, не является новым свидетельством.
Это копия. Копия ничего не добавляет к доказательствам и весит столько же,
сколько отсутствие сообщения. Новое свидетельство — только то, что получено
из отдельного, независимого источника.
Шаг 1. Выпиши список уникальных наблюдений. Для каждого укажи:
- что именно утверждается;
- кто и из какого источника это получил;
- какие сообщения лишь пересказывают его (перечисли их номера).
Шаг 2. Оцени, насколько слух о повышении комиссии Wildberries подтверждён,
опираясь ТОЛЬКО на список из шага 1. Дай вероятность и решение:
«переписывать цены сейчас» или «собрать ещё независимые источники».
Лог:
{лог_сообщений}
Результат: Модель сначала выдаст список из одного уникального наблюдения (пост в канале) и пометит остальные три сообщения как его пересказы. Затем оценит слух как подтверждённый слабо и порекомендует собрать независимые источники. Если в логе есть, например, письмо от самой площадки и отчёт селлерского чата, они пойдут в список отдельными пунктами.
Почему это работает
Слабость. Модель читает текст, а не граф происхождения. В логе написано «forwarded from», но ничто в системе не заставляет модель этим пользоваться. Повтор значения выглядит как ещё один голос. Модель реагирует на то, сколько раз значение написано, а не на то, сколько у него источников. Записи-ссылки («см. r1») и пустые записи той же длины вес не добавляют. Значит, дело именно в повторе значения.
Сильная сторона. Если модели прямо сказать, что копия не свидетельство, она отлично это применяет. Она умеет выписывать уникальные утверждения и привязывать к ним источники. Рассуждение тоже помогает: более высокий уровень reasoning снижает перекос.
Как метод это использует. Декларация превращает неявное правило в явное. Список уникальных наблюдений переводит задачу в формат, где пересчёт копий невозможен: модель считает пункты списка. Правило ссылок убирает проблему на входе: повторять нечего, значит, считать нечего.
Рычаги управления: - Формулировка декларации. В исследовании абзац про записи и пересылки сработал сильнее короткой инструкции вроде «считай источники». Объясняйте, что именно вы считаете копией. - Метки происхождения. Если убрать поля вроде «forwarded_from», вес копий растёт. Оставляйте источник у каждого сообщения. - Формат лога. Пересказ прозой весит меньше, чем структурированные записи. Но полностью проблему это не снимает. - Условие выхода. Требуйте решения «действовать / собрать ещё» с порогом. Именно на пороге копии и ломают выводы. - Уровень reasoning. Включённое рассуждение снижает перекос, но не убирает его.
Шаблон промпта
1. Декларация для агрегатора (в системный промпт):
Ты принимаешь решения на основе сообщений от нескольких агентов и источников.
Правило учёта доказательств:
- Свидетельство считается по числу НЕЗАВИСИМЫХ источников, а не по числу сообщений.
- Сообщение, которое пересылает, пересказывает, суммирует или «подтверждает»
чужое наблюдение, — это копия. Копия не добавляет доказательств,
сколько бы раз её ни повторили.
- Если два сообщения восходят к одному первичному источнику,
это одно наблюдение.
- Несколько независимых источников, которые согласуются между собой,
усиливают вывод.
Прежде чем дать вывод, определи для каждого утверждения {поле_источника}
и учти только уникальные первичные источники.
2. Сначала список (в запрос агрегатору):
Лог сообщений:
{лог}
Шаг 1. Составь список уникальных наблюдений. Для каждого:
- утверждение;
- первичный источник;
- номера сообщений, которые его лишь повторяют.
Шаг 2. Ответь на вопрос «{вопрос}» только на основе списка из шага 1.
Укажи: число независимых источников, оценку вероятности, решение
(«действовать» / «собрать ещё»).
3. Правило ссылок (в промпт каждого агента-участника):
Ты — агент {роль} в команде. Твои коллеги публикуют сообщения в общем логе,
у каждого сообщения есть номер.
Правило: не пересказывай и не повторяй значение наблюдения, которое уже
есть в логе. Если хочешь на него опереться, ссылайся по номеру:
«см. сообщение {номер}». Своё наблюдение пиши один раз, с указанием
источника. Если у тебя есть новое независимое свидетельство — напиши его
полностью.
Что подставлять: {поле_источника} — как у вас обозначается происхождение (канал, URL, имя датчика). {вопрос} — решение, которое нужно принять. {лог} — сообщения агентов. {роль} — роль агента.
Дословный текст абзаца-декларации и правила ссылок в исследовании приведён в приложении. Шаблоны выше собраны по их описанию, а не скопированы.
🚀 Быстрый старт — вставь в чат:
Вот три шаблона для борьбы с пересчётом пересказов: декларация для агрегатора,
«сначала список» и правило ссылок для агентов. Адаптируй под мою систему:
{опиши свою мультиагентную систему или задачу со сбором источников}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, откуда у вас берутся сообщения, как обозначается источник и какое решение принимает итоговый агент. Без этого нельзя написать, что считать копией и где проходит порог «действовать / собрать ещё». Она возьмёт структуру из шаблонов и подгонит под вашу систему.
Ограничения
⚠️ Без декларации модель переоценивает повторы: это проявилось у всех четырёх проверенных моделей. Масштаб разный, но ни одна не считала только источники.
⚠️ Декларация не обнуляет эффект: на веб-документах пересказ и краткое изложение всё равно весят заметно, пусть и меньше. Чем сильнее копия отличается от оригинала, тем больше модель считает её новым источником.
⚠️ Стохастичность: на одном и том же логе модель в одних запусках считает честно, в других нет. Для части логов это случалось при повторных запросах. Повторный запрос и взятие медианы почти не лечат.
⚠️ Метки происхождения обязательны: без поля «откуда» вес копий растёт. Список уникальных наблюдений полезен, только если в лог попадает информация об источнике.
⚠️ Постановка: эксперименты в основном на синтетических логах с простым вероятностным устройством (датчики, показания). Веб-документы проверены отдельно. Перенос на ваш домен нужно проверить на ваших логах.
⚠️ Пересказ не всегда вреден: если агент проверил и независимо подтвердил наблюдение, это новое свидетельство. Правило ссылок должно оставлять такому агенту возможность написать это полностью.
Как исследовали
Идея простая: зафиксировать доказательства и менять только то, сколько раз их пересказали. Авторы перевели оценку вероятности модели в «число независимых показаний», которое она будто бы учла. Одно показание, сказанное один раз, должно дать 1. Три независимых датчика дают 3. Если копии весят ноль, модель считает источники. Если единицу, считает все упоминания.
Проверили на трёх стендах. В первом синтетические логи с точным байесовским ответом: 1000 задач в 27 форматах. Во втором реальные веб-документы из ConflictingQA, к которым дописывали точные дубли, перепубликации и краткие изложения. В третьем логи, которые писали сами команды из четырёх агентов в четырёх протоколах: цепочка, доска, обсуждение всех со всеми и иерархия. Каждая из четырёх моделей отвечала на одни и те же задачи, поэтому сравнивали две версии одной задачи.
Результат: вес копии 0,06–0,42. Это не «ноль» и не «единица», а смесь. Часть ответов честно даёт 1, часть считает по числу упоминаний. Поэтому ошибки опасны: в 4,7–39,8% логов одно показание, сказанное трижды, перешагивало порог принятия решения. Записи-ссылки и пустые записи той же длины ничего не добавляли, то есть работает именно повтор значения. Когда модели просили самой выбрать действие, она на копиях решалась на «действовать» чаще на 6–35 процентных пунктов.
Удивило, что агенты сами пересказывают почти всё: в цепочке 99% сообщений от тех, кто ничего не наблюдал. Это близко к максимуму, который позволяет протокол.
Лечение проверяли на контрольных вариантах. Абзац-декларация сводил вес копии к 0,08 и ниже. Плацебо-абзац того же размера про другую тему не помогал. Простая инструкция «считай источники» помогала слабее подробной декларации. Правило ссылок снижало преждевременные решения с 11,2% до 1,1%. Три настоящих независимых наблюдателя при этом по-прежнему считались почти как три.
Оригинал из исследования
Формат записи в лог-стенде (скопированная пересланная запись, многоточие в оригинале):
{"sender": "Marten", "forwarded_from": "r1", "sensor_id": "OD-34", ..., "value": "STORM"}
Контекст: Так выглядела пересланная копия в контролируемых логах. Метка forwarded_from показывает происхождение, но модели всё равно считали такую запись частью нового показания. Полные тексты промптов авторы вынесли в приложение.
Адаптации и экстраполяции
💡 Адаптация для RAG и ресёрча в чате: Если вы вставляете в чат пять статей, которые на самом деле перепечатывают один пресс-релиз, модель завысит уверенность.
Ниже {число} источников по теме «{тема}». Прежде чем отвечать:
1. Определи, какие из них — первичные, а какие пересказывают, перепечатывают
или цитируют другие.
2. Посчитай число независимых первичных источников.
3. Ответь на вопрос «{вопрос}», учитывая вес только независимых источников,
и укажи, насколько ты уверен.
Источники:
{тексты}
🔧 Техника: добавить порог → видеть, где копии «перетягивают»
В конец промпта агрегатору:
Реши: «действовать» или «собрать ещё». Действовать можно только при
{N} и более независимых источниках. Укажи, сколько их у тебя.
Копии чаще всего ломают выводы именно на пороге, поэтому явное число независимых источников заставляет модель сверяться со списком.
Экстраполяция: правило ссылок в файле инструкций агента. В CLAUDE.md или AGENTS.md для команды субагентов, которые передают друг другу находки:
## Передача находок между агентами
- Каждая находка получает номер и записывается один раз, с источником.
- Если находка уже есть в общем файле, ссылайся на неё по номеру,
не пересказывай.
- Суммируй вывод, но не пересчитывай подтверждения: несколько агентов,
которые опираются на одну находку, дают одно подтверждение.
- Отдельная проверка по независимому источнику записывается как новая находка.
Это перенос принципа, а не проверенный в статье текст.
Ресурсы
- Работа: Copies or Sources? Measuring How LLM Aggregators Count Restated Evidence in Multi-Agent Systems
- Авторы: Jianxin Gao (China Agricultural University), Runze Li (Jilin University), Tianyi Yu (Tianjin University of Finance and Economics), Liangwei Ren, Bohan Chen (China Agricultural University), Zining Wang (Tianjin University of Science and Technology)
- Упомянутые данные: ConflictingQA (веб-документы с конфликтующими ответами)
- Связанный термин: data incest (повторный учёт одного измерения в распределённой оценке)
