3,583 papers
arXiv:2511.05706 76 7 нояб. 2025 г. FREE

AdvisingWise: ReAct-консультант с человеком в цикле

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

TL;DR

AdvisingWise — мультиагентная система для консультирования студентов, которая автоматизирует поиск информации и составление черновиков ответов, но все ответы проходят проверку живым консультантом перед отправкой. Система собирает академический профиль студента из разговора, использует ReAct-подход (итеративные циклы "рассуждение → действие") для поиска информации в разных источниках, и генерирует персонализированные черновики с явным указанием неопределённости.

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

Решение через три фазы: (1) Обработка запроса — извлечение информации о студенте, переформулировка с учётом контекста, фильтрация нерелевантных вопросов. (2) Сбор информации — два агента работают итеративно до 4 циклов: один определяет что найти, второй находит (через базу документов, базу курсов, веб-поиск или вопросы студенту). (3) Генерация ответа — один агент создаёт черновик, второй проверяет точность и отсутствие галлюцинаций. Консультант видит черновик с детальным ответом, саммари, списком источников и заметками о неопределённости — одобряет или редактирует перед отправкой.

🔬

Схема метода

ФАЗА 1: Обработка запроса (в одной цепочке)

Агент 1: Извлечь инфо о студенте → сохранить в профиль
Агент 2: Переформулировать вопрос с учётом контекста → самодостаточный вопрос
Агент 3: Классифицировать → релевантно/нерелевантно академическому консультированию

ФАЗА 2: Сбор информации (итеративно, до 4 циклов)

Цикл (повторяется до 4 раз или пока не собрана вся инфо):
  Thought Agent: Определить что нужно найти → выбрать действие + сформулировать поисковый запрос
  Action Agent: Выполнить действие → вернуть информацию

Доступные действия:
  - search_knowledge_base: Поиск в базе институциональных документов (RAG)
  - search_course_db: Поиск курса по названию/коду
  - search_web: Поиск в интернете (если внутренних данных мало)
  - request_student_info: Запросить дополнительную информацию у студента
  - provide_answer: Завершить сбор, перейти к Фазе 3

ФАЗА 3: Генерация ответа

Answer Generator: Создать черновик → детальный ответ + источники + оценка полноты + пробелы
Quality Controller: Проверить точность → нет галлюцинаций, правильные цитирования → одобрить или вернуть

Результат для консультанта: - Детальный ответ (с форматированием) - Краткое саммари - Список источников с номерами страниц/ссылками - Заметка для консультанта (если есть неопределённость)

🚀

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

Задача: Ты руководишь небольшой продуктовой командой. К тебе регулярно приходят джуниоры с вопросами: "Какую задачу мне взять дальше?", "Можно ли использовать эту библиотеку?", "Как работает процесс ревью кода у нас?". Ты тратишь много времени на поиск информации в Confluence, Notion, Slack-истории и персонализированные ответы. Хочешь создать систему, которая подготовит черновик ответа для твоей проверки.

Промпт:

Ты — ассистент тимлида, помогаешь готовить ответы на вопросы джуниоров.

ПРОФИЛЬ СОТРУДНИКА:
{Имя: Алексей, Стек: Frontend (React), Опыт в команде: 2 месяца, Текущая задача: рефакторинг корзины}

ВОПРОС:
"Можно ли мне взяться за задачу с интеграцией платёжной системы? Или рано?"

ТВОЯ ЗАДАЧА:

ФАЗА 1: Анализ вопроса
- Какая информация о сотруднике уже есть?
- Какая информация нужна дополнительно? (задай вопросы)
- О чём конкретно спрашивают?

ФАЗА 2: Сбор информации (до 3 итераций)
Итерация 1:
  Что нужно узнать: [определи]
  Где искать: [я дам тебе материалы или отвечу на твои вопросы]

Итерация 2 (если нужно):
  Что ещё нужно узнать на основе найденного: [определи]
  Где искать: [...]

[Продолжай пока не соберёшь достаточно информации]

ФАЗА 3: Черновик ответа
Создай:
1. ДЕТАЛЬНЫЙ ОТВЕТ (2-3 абзаца, выдели важное **жирным**)
2. КРАТКОЕ САММАРИ (1 предложение)
3. ИСТОЧНИКИ (какие документы/правила использовал)
4. ЗАМЕТКА ДЛЯ ТИМЛИДА (если чего-то не хватает для полного ответа или есть неопределённость)
5. УРОВЕНЬ УВЕРЕННОСТИ (высокий/средний/низкий)

ВАЖНО:
- Основывайся ТОЛЬКО на информации которую я предоставлю
- Если информации недостаточно — явно укажи это в заметке
- Учитывай профиль сотрудника для персонализации

Результат:

Модель сначала задаст уточняющие вопросы (Фаза 1): "Есть ли у нас документ с требованиями к задачам по уровням сеньорности?", "Какой примерный срок задачи с платёжной системой?", "Работал ли Алексей раньше с бэкенд-интеграциями?". После твоих ответов пройдёт 2-3 итерации сбора информации (Фаза 2), на каждой определяя что ещё нужно узнать. В финале (Фаза 3) выдаст структурированный черновик: детальный ответ с аргументацией и рекомендациями, саммари в одну строку, список использованных источников (твои внутренние доки), заметку для тебя ("Недостаточно информации о прошлом опыте Алексея с payments — возможно стоит уточнить лично"), и оценку уверенности в ответе.

🧠

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

LLM плохи в работе с распределённой информацией — если ответ требует синтеза данных из нескольких источников (документ А + база данных Б + уточнение у пользователя), модель либо додумывает, либо даёт поверхностный ответ. Также модели не знают когда остановиться — вместо признания неопределённости генерируют правдоподобно звучащую неточность.

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

ReAct-подход (Reasoning + Acting) использует эту силу: модель рассуждает о том что ей нужно узнать, затем действует (ищет информацию), видит результат действия в контексте, снова рассуждает что делать дальше. Цикл повторяется пока информации не станет достаточно. Это имитирует как работает человек: не пытается ответить сразу, а сначала собирает контекст.

Явное указание неопределённости работает потому что встраивается в структуру вывода — модель должна заполнить поле "Заметка о пробелах", что заставляет её проанализировать полноту информации вместо генерации ответа "в слепую".

Рычаги управления: - Число итераций (4 цикла в оригинале) → уменьши до 2 для простых вопросов, сэкономишь токены - Набор действий → адаптируй под свои источники (вместо search_knowledge_base используй "загляни в мой Notion", "проверь в Slack") - Условие выхода → в оригинале "пока Thought Agent не скажет provide_answer", можно заменить на "соберёшь минимум 3 факта" или "найдёшь ответ в официальном документе" - Структура вывода → убери "Уровень уверенности" если не важен, добавь "Альтернативные варианты ответа" если нужна вариативность

📋

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

Ты — ассистент-консультант, помогаешь готовить ответы на вопросы.

ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ:
{профиль_пользователя — заполни из предыдущих сообщений или попроси у меня}

ВОПРОС:
{вопрос_пользователя}

ТВОЯ ЗАДАЧА:

ФАЗА 1: Анализ вопроса
- Какая информация о пользователе уже есть в профиле?
- Какая информация нужна дополнительно? (задай мне вопросы)
- О чём конкретно спрашивают?
- Релевантен ли вопрос теме {твоя_тема_консультирования}? Если нет — скажи об этом и останови процесс.

ФАЗА 2: Сбор информации (до {число_итераций} итераций)

Итерация 1:
  Рассуждение: Что мне нужно узнать для ответа?
  Действие: Где мне это найти?
  Результат: [я предоставлю информацию или дам ответ на твой вопрос]

Итерация 2 (если нужно):
  Рассуждение: Что ещё нужно узнать на основе уже найденного?
  Действие: Где мне это найти?
  Результат: [...]

[Продолжай итерации пока не соберёшь достаточно информации]

Доступные действия для поиска:
- Попроси меня предоставить материалы из {твои_источники_информации}
- Задай уточняющие вопросы пользователю (через меня)
- Попроси меня поискать информацию в {конкретное_место}

ФАЗА 3: Черновик ответа

Создай структурированный черновик:

1. ДЕТАЛЬНЫЙ ОТВЕТ (2-3 абзаца, выдели важное **жирным**, используй форматирование)
   - Основывайся ТОЛЬКО на информации которую я предоставил
   - Персонализируй с учётом профиля пользователя
   - Будь конкретным и применимым

2. КРАТКОЕ САММАРИ (1 предложение для быстрого сканирования)

3. ИСТОЧНИКИ 
   - Перечисли все материалы/документы которые я предоставил
   - Если использовал информацию из профиля пользователя — укажи "Профиль пользователя (обновлён: [когда])"

4. ЗАМЕТКА ДЛЯ МЕНЯ (только если применимо)
   - Какой информации не хватает для полного ответа
   - Где есть неопределённость или предположения
   - Что стоит дополнительно уточнить

5. УРОВЕНЬ УВЕРЕННОСТИ: [Высокий / Средний / Низкий]

ВАЖНЫЕ ПРАВИЛА:
❌ НЕ додумывай информацию — если не знаешь, явно скажи в заметке
❌ НЕ делай предположений о пользователе — если нужна информация, запроси через действие
✅ Основывайся только на фактах из предоставленных материалов
✅ Явно указывай пробелы и неопределённость

Как заполнять: - {профиль_пользователя} — краткие данные о человеке, которому консультируешь (опыт, контекст, предыдущие вопросы) - {вопрос_пользователя} — конкретный вопрос - {твоя_тема_консультирования} — область твоей экспертизы (карьерное развитие, продуктовые решения, подбор инструментов) - {число_итераций} — 3-4 для сложных вопросов, 2 для простых - {твои_источники_информации} — где у тебя лежат материалы (Notion, Google Docs, папка с PDF)

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

Вот шаблон ReAct-консультанта. Адаптируй под мою задачу: [твоя задача консультирования]. 
Задавай вопросы, чтобы заполнить поля.

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

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

🧠

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

Слабость LLM: Модели плохо работают с распределённой информацией — когда для ответа нужно синтезировать данные из нескольких источников (документ + база знаний + контекст пользователя). В таких случаях LLM либо додумывает детали, либо даёт поверхностный ответ, игнорируя часть контекста. Также модели не признают неопределённость — вместо "не знаю" генерируют правдоподобную, но неточную информацию.

Сильная сторона LLM: Модели отлично справляются с пошаговым рассуждением (Chain-of-Thought) и следованием чётким структурированным инструкциям. Когда процесс разбит на явные этапы — анализ → планирование → действие → проверка — модель работает значительно точнее.

Как метод использует это: ReAct (Reasoning + Acting) разделяет "думай" и "делай" в явные чередующиеся шаги. Модель рассуждает что ей нужно узнать, действует (находит информацию), видит результат, снова рассуждает на основе нового контекста. Это имитирует как работает человек-эксперт: не бросается отвечать сразу, а сначала методично собирает все релевантные данные.

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

Явное требование указывать неопределённость работает потому что встраивается в структуру вывода — модель должна заполнить поле "Заметка о пробелах", что принуждает её проанализировать полноту информации вместо молчаливого додумывания.

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

Число итераций → В оригинале 4 цикла. Уменьши до 2 для простых вопросов (экономия токенов), увеличь до 5-6 для сложных многоисточниковых задач.

Набор доступных действий → Адаптируй под свои реальные источники. Вместо абстрактного "search_knowledge_base" укажи конкретно: "Попроси меня дать содержание раздела из Notion", "Попроси показать скриншот из Figma", "Задай вопрос пользователю через меня".

Условие выхода из циклов → В оригинале "пока агент не скажет provide_answer". Можешь заменить на: "собери минимум 3 факта из разных источников", "найди информацию в официальном документе, или признай что её нет", "продолжай пока уровень уверенности не станет высоким".

Структура финального вывода → Убери "Уровень уверенности" если для тебя не важен. Добавь "Альтернативные варианты ответа" если нужна вариативность. Добавь "Следующие шаги" если консультируешь по действиям.

Профиль пользователя → В оригинале система автоматически извлекает и сохраняет данные между сессиями. В чате ты можешь: (1) в начале каждой сессии давать краткий профиль, или (2) попросить модель "в первом сообщении всегда спрашивать у меня ключевые данные о пользователе".

⚠️

Ограничения

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

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

⚠️ Эффективность зависит от качества источников: Если твои материалы неструктурированы или информация размазана по множеству мест, процесс сбора станет трудоёмким. Метод работает лучше когда у тебя 3-5 чётких источников истины.

⚠️ Длинные циклы → большой расход токенов: Каждая итерация добавляет рассуждения и результаты в контекст. После 3-4 циклов промпт раздувается. Для частого использования может быть затратно.

⚠️ Не для срочных вопросов: Многофазный процесс с итерациями занимает время. Если нужен быстрый ответ "на ходу" — проще спросить напрямую. Метод для случаев когда важна точность и полнота выше скорости.

🔗

Ресурсы

AdvisingWise: Supporting Academic Advising in Higher Education Settings Through a Human-in-the-Loop Multi-Agent Framework — Wendan Jiang, Shiyuan Wang (оба Tufts University равные вклады), Hiba Eltigani, Rukhshan Haroon, Abdullah Bin Faisal, Fahad Dogar (все Tufts University).

Упоминаемые методы: ReAct (Reasoning and Acting) [50], RAG (Retrieval-Augmented Generation) [31], Chain-of-Thought prompting [48], LangGraph [28] framework.


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

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

Обнаружено: LLM лажает когда ответ требует синтеза данных из разных источников — модель либо додумывает детали, либо даёт поверхностный ответ без признания пробелов. Метод AdvisingWise позволяет готовить точные персонализированные ответы на запросы, требующие информации из нескольких источников, с явным указанием где модель не уверена. Фишка: модель не пытается ответить сразу. Сначала рассуждает что ей нужно узнать, потом действует (ищет информацию), видит результат, снова рассуждает на основе нового контекста. Повторяющийся цикл до 4 раз. В финале создаёт черновик с источниками и заметкой о пробелах — живой консультант проверяет перед отправкой.

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

Процесс идёт в три фазы. Фаза 1 (Обработка): Извлечь инфо о пользователе из разговора, переформулировать вопрос с учётом контекста, отфильтровать нерелевантное. Фаза 2 (Сбор): Итеративный сбор информации — модель рассуждает что нужно найти, выполняет действие (поиск в документах/база курсов/веб/вопрос пользователю), получает результат, снова рассуждает что ещё нужно. Повторяется до 4 циклов или пока информации не станет достаточно. Фаза 3 (Генерация): Один агент создаёт черновик с источниками и пробелами, второй проверяет на галлюцинации и точность цитирований.

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

LLM сильны в пошаговом рассуждении, но плохи в работе с распределённой информацией. Когда явно разделяешь "подумай что нужно" от "найди это", модель точнее определяет пробелы вместо молчаливого додумывания. ReAct-подход имитирует как работает человек-эксперт: не бросается отвечать сразу, а методично собирает все релевантные данные. Явное требование заполнить поле "Заметка о пробелах" принуждает модель проанализировать полноту информации. Многофазная структура предотвращает быстрые выводы на недостаточных данных.

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

Консультирование и экспертные ответы → конкретно для ситуаций когда ответ требует синтеза информации из нескольких источников (документы, базы данных, контекст пользователя), особенно когда важна точность и персонализация. Примеры: академическое консультирование студентов, HR-консультации по карьере, техподдержка продукта, менторство джуниоров в команде. НЕ подходит для срочных вопросов "на ходу" — многофазный процесс с итерациями занимает время и расходует токены.

Мини-рецепт

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

2. Фаза 1 — Анализ вопроса: Модель переформулирует вопрос с учётом контекста пользователя, определит какая информация уже есть, какая нужна дополнительно, и релевантен ли вопрос вообще.

3. Фаза 2 — Итеративный сбор: На каждой итерации модель сначала рассуждает что ей нужно узнать, потом определяет где это найти и какой запрос сформулировать. Ты предоставляешь материалы или отвечаешь на уточняющие вопросы. Модель видит результат, снова рассуждает на основе нового контекста. Повторяется 2-4 раза.

4. Фаза 3 — Генерация черновика: Модель создаёт структурированный вывод: детальный ответ (2-3 абзаца с форматированием), краткое саммари (1 строка), список источников, заметка о пробелах (если есть неопределённость), уровень уверенности (высокий/средний/низкий).

5. Проверка и отправка: Ты как живой консультант читаешь черновик, проверяешь точность, редактируешь если нужно, одобряешь перед отправкой.

Примеры

[ПЛОХО] : LLM, ответь на вопрос джуниора: "Можно ли мне взяться за задачу с интеграцией платёжной системы?"
[ХОРОШО] : Профиль джуниора: Frontend (React), 2 месяца в команде. Вопрос: "Можно мне взяться за задачу с интеграцией платёжной системы?" Фаза 1: Переформулируй вопрос с учётом профиля, определи что нужно узнать для ответа. Фаза 2: Итеративно собирай информацию (2-3 цикла): рассуждай что нужно → запроси у меня материалы или задай уточняющие вопросы → получи ответ → снова рассуждай на основе нового контекста. Фаза 3: Создай черновик: детальный ответ + краткое саммари + список источников + заметка о пробелах (если чего-то не хватает для полного ответа) + уровень уверенности.
Источник: AdvisingWise: Supporting Academic Advising in Higher Education Settings Through a Human-in-the-Loop Multi-Agent Framework
ArXiv ID: 2511.05706 | Сгенерировано: 2026-01-12 18:34

Концепты не выделены.

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

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

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