3,583 papers
arXiv:2510.04678 73 6 окт. 2025 г. FREE

MATPO: многоагентная система для глубоких исследований

КЛЮЧЕВАЯ СУТЬ
LLM теряет фокус когда контекст забивается результатами поиска — статьи на 1500 токенов, реклама, битые таблицы. После 5-7 запросов модель начинает реагировать на шум вместо планирования задачи. MATPO решает это разделением на планировщика и исполнителя внутри одной модели. Исполнитель держит весь мусор у себя, планировщик получает только сжатые выжимки по 50-100 токенов. Результат: +18.38% точности в среднем, до 30% на глубоких исследованиях.
Адаптировать под запрос

TL;DR

MATPO — метод обучения LLM работать в связке планировщик + исполнитель внутри одной модели. Планировщик разбивает задачу на подзадачи, исполнитель решает каждую через поиск и веб-скрапинг, потом передаёт сжатую выжимку обратно планировщику. Всё это активируется через разные system prompts, но работает на одной модели.

Когда LLM сама планирует и ищет информацию, её контекст быстро забивается длинными результатами поиска — статьи на 1500 токенов, таблицы, куски сайтов. Плюс эти результаты часто шумные: реклама, нерелевантные абзацы, битые ссылки. После 5-7 запросов модель начинает «забывать» начало цепочки и реагирует на шум вместо фокуса на задаче.

Разделение ролей решает обе проблемы. Исполнитель держит весь шум у себя в отдельном контексте. Планировщик получает только чистые выжимки по 50-100 токенов вместо сырых 1500. В исследовании это дало +18.38% точности против обычного подхода, причём разница растёт на сложных задачах — до 30% на глубоких исследованиях.

🔬

Схема метода

ПЛАНИРОВЩИК (основной контекст):
ШАГ 1: Получает вопрос → создаёт первую подзадачу
ШАГ 2: Получает выжимку от исполнителя → создаёт следующую подзадачу
...
ШАГ N: Получает последнюю выжимку → формирует финальный ответ

ИСПОЛНИТЕЛЬ (новый контекст для каждой подзадачи):
ШАГ 1: Получает подзадачу + напоминание об исходном вопросе
ШАГ 2: Поиск → скрапинг → анализ (весь шум остаётся здесь)
ШАГ 3: Создаёт сжатую выжимку → возвращает планировщику

Ключевое: Каждая подзадача решается в отдельном контексте исполнителя. Планировщик видит только чистые выжимки, не сырой поиск.

🚀

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

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

Промпт для планировщика:

Твоя роль - планировщик исследования.

Задача: Подготовить досье на дистрибьютора "ЮгТехно" (Краснодар) перед переговорами о партнёрстве.

Процесс:
1. Разбей задачу на подзадачи для глубокого поиска
2. Для каждой подзадачи напиши чёткий запрос исследователю
3. Получишь сжатую выжимку от исследователя
4. На основе выжимок создай следующую подзадачу ИЛИ финальный ответ

Формат подзадачи:
ПОДЗАДАЧА: [точный вопрос]
КОНТЕКСТ: [зачем это нужно для основной задачи]

Когда будешь готов дать финальный ответ, напиши:
ФИНАЛЬНЫЙ ОТВЕТ: [структурированное досье с рекомендациями]

Промпт для исполнителя (отдельный чат):

Твоя роль - исследователь.

ИСХОДНАЯ ЗАДАЧА: Подготовить досье на дистрибьютора "ЮгТехно" (Краснодар) перед переговорами о партнёрстве.

ТЕКУЩАЯ ПОДЗАДАЧА: [скопируй подзадачу от планировщика]

Процесс:
1. Найди информацию через поиск
2. Проанализируй найденное
3. Создай СЖАТУЮ ВЫЖИМКУ (только ключевые факты)

Формат выжимки:
ВЫЖИМКА:
- Ключевой факт 1
- Ключевой факт 2
- Ключевой факт 3
[НЕ ВКЛЮЧАЙ сырые результаты поиска, рекламу, нерелевантный текст]

Результат:

Планировщик создаст серию подзадач:

  1. "Какие бренды представляет ЮгТехно и с кем ещё они работают?"
  2. "Какие условия работы предлагают их основные конкуренты?"
  3. "Были ли у них проблемы с поставщиками за последний год?"

Для каждой подзадачи исполнитель проведёт поиск, отфильтрует весь шум (рекламу, битые страницы, нерелевантные абзацы) и вернёт выжимку из 3-5 проверенных фактов. Планировщик соберёт все выжимки в структурированное досье с рекомендациями по точкам давления в переговорах.

Весь мусор из поиска останется в контексте исполнителя и не попадёт к планировщику.

🧠

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

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

LLM отлично работает со структурированными выжимками. Когда модель получает чистую сводку "3 ключевых факта" — она воспринимает это как проверенную информацию, не сырой вывод инструмента. Доверие выше, планирование точнее.

Изоляция контекстов использует обе сильные стороны. Исполнитель держит шум у себя, планировщик получает только сжатую выжимку — 50-100 токенов вместо 1500. Контекст планировщика остаётся чистым на протяжении всей цепочки. Это особенно критично на глубоких исследованиях (5-7 шагов) — именно там разница между multi-agent и single-agent вырастает до 30%.

Рычаги управления:

  • Глубина исследования — количество подзадач. Уменьши до 1-2 для быстрых вопросов, увеличь до 5-7 для сложного анализа.
  • Детальность выжимки — попроси исполнителя возвращать 3 факта для обзорного анализа или 10 фактов для глубокого погружения.
  • Query recapping — напоминание исходной задачи в промпте исполнителя. Критически важно — без этого исполнитель уходит от цели подзадачи. Усиль формулировку, если видишь что исполнитель отвлекается.
  • Final summary — попроси исполнителя сделать итоговую сводку вместо простого пересказа последнего найденного. Это дополнительный фильтр шума на выходе — вместо "вот последний найденный факт" модель даст "вот главное из всего что нашёл".
📋

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

Для планировщика:

Твоя роль - планировщик исследования.

Задача: {опиши задачу}

Процесс:
1. Разбей задачу на подзадачи для глубокого поиска
2. Для каждой подзадачи напиши чёткий запрос исследователю
3. Получишь сжатую выжимку от исследователя
4. На основе выжимок создай следующую подзадачу ИЛИ финальный ответ

Формат подзадачи:
ПОДЗАДАЧА: [точный вопрос]
КОНТЕКСТ: [зачем это нужно для основной задачи]

Когда будешь готов дать финальный ответ, напиши:
ФИНАЛЬНЫЙ ОТВЕТ: [структурированный результат]

Для исполнителя (отдельный чат):

Твоя роль - исследователь.

ИСХОДНАЯ ЗАДАЧА: {скопируй из промпта планировщика}

ТЕКУЩАЯ ПОДЗАДАЧА: {скопируй подзадачу от планировщика}

Процесс:
1. Найди информацию через поиск
2. Проанализируй найденное
3. Создай СЖАТУЮ ВЫЖИМКУ (только ключевые факты)

Формат выжимки:
ВЫЖИМКА:
- Ключевой факт 1
- Ключевой факт 2
- Ключевой факт 3
[НЕ ВКЛЮЧАЙ сырые результаты поиска, рекламу, нерелевантный текст]

Плейсхолдеры:

  • {опиши задачу} — твоя исследовательская задача (анализ конкурентов, подготовка к переговорам, изучение рынка)
  • {скопируй из промпта планировщика} — точно та же формулировка задачи, что дал планировщику
  • {скопируй подзадачу от планировщика} — конкретная подзадача, которую планировщик создал на текущем шаге

Workflow:

  1. Создай два чата — "Планировщик" и "Исполнитель"
  2. Вставь промпт планировщика в первый чат
  3. Планировщик создаст ПОДЗАДАЧУ
  4. Скопируй эту подзадачу во второй чат (к исполнителю)
  5. Исполнитель вернёт ВЫЖИМКУ
  6. Скопируй выжимку обратно планировщику
  7. Повторяй шаги 3-6, пока планировщик не даст ФИНАЛЬНЫЙ ОТВЕТ

🚀 Быстрый старт — если workflow кажется сложным:

Вот шаблон MATPO - многоагентной системы для глубоких исследований.
Адаптируй под мою задачу: {твоя задача}.

Задавай вопросы, чтобы заполнить поля и объясни как переключаться между чатами.

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

LLM спросит детали задачи (какой глубины нужен анализ, сколько источников проверить, в каком формате нужен результат) и создаст готовые промпты для обоих чатов с пошаговой инструкцией работы.

⚠️

Ограничения

⚠️ Ручной workflow: Требует переключаться между двумя чатами и копировать подзадачи/выжимки вручную. Автоматизация возможна только через API с кодом — обычный чат не может сам вызывать другой чат.

⚠️ Оверхед для простых задач: Если вопрос решается одним поиском ("кто CEO Tesla?"), multi-agent добавляет лишнюю сложность. Используй для задач требующих 3+ шагов исследования.

⚠️ Качество выжимок: Исполнитель может упустить важные детали при сжатии. Если планировщик запрашивает уточнение — это нормально, вернись к исполнителю с более точной подзадачей ("не вообще тарифы, а тарифы для корпоративных клиентов").

⚠️ Податливость планировщика: Когда исполнитель возвращает выжимку как "user message", планировщик может воспринимать это как указание от пользователя и перестать критиковать ошибки в выжимке. Если видишь что планировщик слепо принимает неточности — усиль в его промпте: "Критически оценивай каждую выжимку, запрашивай уточнения если что-то неясно."

🔍

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

Команда взяла модель Qwen3-14B и обучила её с подкреплением (RL) на датасете MuSiQue — вопросах требующих многошаговый поиск. Тестировали на трёх бенчмарках: GAIA-text (текстовые задачи для AI-ассистентов), WebWalkerQA (навигация по веб-страницам), FRAMES (факт-чекинг с поиском).

Ключевая находка: MATPO показал +18.38% точности в среднем против single-agent подхода. Но интереснее другое — разница росла на сложных задачах. На простых вопросах (1-2 шага поиска) выигрыш был ~5%, на глубоких исследованиях (5-7 шагов) — до 30%.

Почему так: Single-agent начинает деградировать после 120 шагов обучения — модель «запоминает» шумные результаты и воспроизводит их паттерны. Multi-agent стабилен — изоляция шума в worker-контексте защищает от этого эффекта. График стабильно растёт даже на 200+ шагах обучения.

Неожиданное открытие: Изначально думали, что worker summary — это про экономию токенов. Оказалось, что даже важнее психологический эффект — когда планировщик получает чистую выжимку, он воспринимает её как проверенный факт, не как сырой вывод инструмента. Это снижает "недоверие" модели к результатам поиска и улучшает планирование следующих шагов.

Также обнаружили, что напоминание исходной задачи worker-у (query recapping) критически важно — без этого worker уходил в сторону от цели подзадачи. С recapping точность выросла на 8-12%. Механика простая: в system prompt worker-а добавляли блок "ИСХОДНАЯ ЗАДАЧА ПОЛЬЗОВАТЕЛЯ: ..." — и это держало фокус.

💡

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

💡 Адаптация для личного research-ассистента:

Вместо бизнес-задач используй для глубокого изучения темы.

ПЛАНИРОВЩИК:

Задача: Изучить {тему} достаточно глубоко, чтобы объяснить другу за обедом.

Процесс:
1. Создай learning path - последовательность подтем от базовых к сложным
2. Для каждой подтемы создай подзадачу исследователю
3. Получай выжимки и формируй связную картину
4. В конце создай конспект с конкретными примерами

[остальное как в основном шаблоне]

Пример: Изучить "как работает RL в LLM" — планировщик создаст подзадачи: "базовые концепции RL", "специфика для LLM", "популярные алгоритмы (PPO, GRPO)", "практические примеры применения". Исполнитель для каждой вернёт выжимку из 3-5 ключевых идей. В конце — связный конспект со схемами.

🔧 Техника: Двойной summary → глубже фильтрация шума

Попроси исполнителя сделать два этапа сжатия:

ИСПОЛНИТЕЛЬ:

Процесс:
1. Найди информацию через поиск
2. Создай ЧЕРНОВИК ВЫЖИМКИ (все найденные факты)
3. Перечитай черновик и выдели только 3-5 САМЫХ ВАЖНЫХ фактов
4. Верни ФИНАЛЬНУЮ ВЫЖИМКУ

ЧЕРНОВИК ВЫЖИМКИ:
[всё что нашёл - 10-15 фактов]

ФИНАЛЬНАЯ ВЫЖИМКА:
[только критически важное - 3-5 фактов]

Это помогает когда worker возвращает слишком много деталей — двойной проход через фильтр сжатия убирает даже лёгкий шум.

💡 Адаптация для подготовки к собеседованию:

ПЛАНИРОВЩИК:

Задача: Подготовиться к собеседованию на позицию {должность} в {компания}.

Процесс:
1. Создай подзадачи: изучи компанию, роль, типичные вопросы для этой позиции, ситуацию в индустрии
2. Для каждой подзадачи получи выжимку от исследователя
3. Синтезируй в структурированную подготовку:
 - Что точно спросят (на основе роли и компании)
 - Как отвечать (конкретные примеры из твоего опыта)
 - Вопросы к ним (покажи что разбираешься в теме)

[остальное как в основном шаблоне]

Пример: Собеседование на senior product manager в Ozon. Планировщик создаст подзадачи: "Стратегия Ozon в маркетплейсах 2024-2025", "Типичные кейс-вопросы для senior PM в e-commerce", "Ключевые метрики для PM в маркетплейсах", "Текущие челленджи Ozon vs Wildberries". Исполнитель вернёт выжимки, планировщик соберёт в подготовку с конкретными примерами как отвечать и что спросить у интервьюера.

🔗

Ресурсы

Multi-Agent Tool-Integrated Policy Optimization — Zhanfeng Mo, Xingxuan Li, Yuntao Chen, Lidong Bing (MiroMind AI, 2025)

Код: https://github.com/mzf666/MATPO

Связанные работы:

  • veRL - фреймворк для RL обучения LLM: https://github.com/volcengine/verl
  • MiroFlow - open-source multi-agent фреймворк для deep research от той же команды
  • Chain-of-Knowledge (Li et al., 2024) - grounding LLM через динамическую адаптацию знаний
  • ReAct (Yao et al., 2023) - synergizing reasoning and acting в LLM

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

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

LLM теряет фокус когда контекст забивается результатами поиска — статьи на 1500 токенов, реклама, битые таблицы. После 5-7 запросов модель начинает реагировать на шум вместо планирования задачи. MATPO решает это разделением на планировщика и исполнителя внутри одной модели. Исполнитель держит весь мусор у себя, планировщик получает только сжатые выжимки по 50-100 токенов. Результат: +18.38% точности в среднем, до 30% на глубоких исследованиях.

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

Планировщик создаёт подзадачу → исполнитель решает её в отдельном контексте через поиск и скрапинг → возвращает чистую выжимку (3-5 фактов) → планировщик видит только выжимку, не сырые результаты. Весь шум остаётся в изолированном контексте исполнителя. Для каждой подзадачи контекст исполнителя пересоздаётся заново — модель не тащит мусор из предыдущих шагов. Планировщик держит чистую цепочку выжимок вместо свалки из 10+ страниц поиска.

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

LLM плохо держит фокус при шуме — когда в контексте реклама и битые таблицы, модель цепляется за случайные упоминания. Но отлично работает со структурированными выжимками — воспринимает «3 ключевых факта» как проверенную информацию. Изоляция контекстов использует обе стороны: исполнитель фильтрует шум, планировщик получает сигнал без помех. На глубоких исследованиях (5-7 шагов) разница критична — контекст планировщика остаётся чистым на протяжении всей цепочки. В исследовании это дало 30% прироста точности против single-agent подхода на сложных задачах.

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

Глубокие исследования → конкретно для подготовки к переговорам, анализа конкурентов, изучения рынка, особенно когда требуется 5-7+ шагов поиска и веб-скрапинга. НЕ подходит для простых вопросов («кто CEO Tesla?») — двухчатовый механизм добавляет лишний оверхед.

Мини-рецепт

1. Создай два чата: «Планировщик» и «Исполнитель»
2. Планировщику дай промпт: Твоя роль - планировщик. Разбей задачу на подзадачи. Для каждой подзадачи напиши запрос исследователю. Получишь выжимку → создай следующую подзадачу ИЛИ финальный ответ.
3. Исполнителю дай промпт: Твоя роль - исследователь. ИСХОДНАЯ ЗАДАЧА: {скопируй задачу}. ТЕКУЩАЯ ПОДЗАДАЧА: {скопируй подзадачу от планировщика}. Найди информацию → создай СЖАТУЮ ВЫЖИМКУ (3-5 ключевых фактов, без сырого поиска).
4. Процесс: Планировщик создаёт подзадачу → копируешь её исполнителю → исполнитель возвращает выжимку → копируешь выжимку планировщику → повторяешь до финального ответа
5. Рычаги управления: Уменьши подзадачи до 1-2 для быстрого анализа. Увеличь до 5-7 для глубокого погружения. Попроси исполнителя возвращать 3 факта для обзора или 10 для детального разбора.

Примеры

[ПЛОХО] : Изучи конкурента ЮгТехно в Краснодаре - какие бренды представляют, с кем работают, какие условия — всё в одном чате, после 3-4 поисков контекст забит рекламой со страниц дистрибьюторов, модель начинает цепляться за случайные упоминания вместо анализа.
[ХОРОШО] : Планировщик (чат 1): Разбей задачу на подзадачи для исследования ЮгТехно → создаёт подзадачу ПОДЗАДАЧА: Какие бренды представляет ЮгТехно?Исполнитель (чат 2): проводит поиск, фильтрует мусор, возвращает ВЫЖИМКА: - Официальный дилер Samsung и LG - Работают с 15 региональными сетями - Основной склад в Краснодаре 5000м² → планировщик получает чистую выжимку, весь шум остался в чате исполнителя → создаёт следующую подзадачу про конкурентов.
Источник: Multi-Agent Tool-Integrated Policy Optimization
ArXiv ID: 2510.04678 | Сгенерировано: 2026-01-12 00:45

Проблемы LLM

ПроблемаСутьКак обойти
Длинный вывод инструментов забивает контекстМодель делает поиск. Получает статью на 1500 токенов с рекламой, битыми таблицами, нерелевантными абзацами. После 3-4 таких результатов контекст забит шумом. Модель начинает реагировать на случайные упоминания вместо решения задачи. Теряет фокус. Забывает начальную цельНе передавай сырой вывод инструмента напрямую. Попроси модель сначала сжать результат до 3-5 ключевых фактов. Потом используй только эту выжимку для дальнейшей работы. Или используй два промпта: один держит весь шум и фильтрует, второй получает только чистые выжимки

Методы

МетодСуть
Двухэтапная фильтрация вывода инструментовШАГ 1 (фильтрация): Промпт получает сырой вывод инструмента. Анализирует. Создаёт сжатую выжимку из 3-5 фактов. ШАГ 2 (использование): Основной промпт получает только выжимку, не сырой результат. Почему работает: Шум остаётся изолированным. Основной контекст видит только проверенные факты — 50-100 токенов вместо 1500. Фокус сохраняется на протяжении всей цепочки. Реализация: Два чата — в первом исполнитель с инструментами + инструкция "сжимай до N фактов", во втором планировщик получает только выжимки. Или одинарный промпт с явным шагом фильтрации перед использованием. Когда применять: Задачи требующие 3+ запросов к инструментам. Глубокие исследования где шум накапливается. Когда не работает: Простые вопросы на один поиск — оверхед не оправдан
📖 Простыми словами

MATPO: многоагентная система для глубоких исследований

arXiv: 2510.04678

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

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

В работе это выглядит так: планировщик ставит задачу найти условия дистрибьюторов в Краснодаре, а исполнитель через веб-скрапинг вытаскивает конкретику, отсекая лишнее. Метод MATPO заставляет модель саму себя дисциплинировать: исполнитель не имеет права вываливать на планировщика сырой контекст. В итоге 1500 токенов шума превращаются в три строчки сути, и планировщик не лажает, потому что его рабочая память не забита всяким хламом.

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

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

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

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

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