TL;DR
DataSage — фреймворк из четырёх модулей, работающих в итеративном цикле вопрос-ответ. Ключевая механика: (1) несколько "ролей" аналитиков независимо генерируют вопросы с разных перспектив, потом судья выбирает лучшие; (2) код генерируется тремя разными стратегиями рассуждений одновременно, затем выбирается лучший вариант; (3) код проверяется ревьюером и исправляется в цикле до 5 раз; (4) внешние знания из поиска Google подтягиваются когда нужно.
LLM-агенты плохо находят глубокие инсайты в данных по трём причинам: (1) генерируют поверхностные вопросы от одного "лица" — один взгляд видит только очевидное; (2) часто ошибаются в коде — один путь генерации даёт неправильный результат; (3) игнорируют специфику домена — без внешних знаний пропускают важный контекст. Результат — банальные выводы типа "продажи растут" вместо неочевидных паттернов типа "рост только по вторникам у клиентов из Сибири".
Метод решает через три техники: Multi-role debating — несколько персонажей (поведенческий аналитик, детектор аномалий, исследователь трендов) независимо генерируют вопросы со своей перспективы, затем судья выбирает самые перспективные. Multi-path reasoning — генерация кода тремя стратегиями (декомпозиция задачи, план запроса, негативное рассуждение), выбор лучшего варианта. Code refinement loop — код проверяется ревьюером по четырём критериям, исправляется, снова проверяется до 5 раз или пока не станет правильным.
Схема метода
Весь фреймворк (4 модуля):
1. Dataset Description → структурированное описание данных (размер, типы колонок, статистика)
2. RAKG Module → определяет нужны ли внешние знания → гуглит → синтезирует knowledge items
3. Question Raising Module:
- Divergent: несколько ролей независимо генерируют вопросы
- Convergent: судья выбирает лучшие вопросы
4. Insights Generation Module:
- Уточнение вопроса → привязка к схеме данных
- Multi-path: генерация кода 3 способами → выбор лучшего
- Refinement: код-ревью → исправление → повтор (до 5 раз)
- Execution → интерпретация результата → insight
Цикл 3-4 повторяется N раз, каждая итерация учитывает историю предыдущих вопросов-инсайтов.
Extractable для чата (две ключевые техники):
Multi-role debating:
Роль 1 (поведенческий аналитик) → вопросы про паттерны пользователей
Роль 2 (детектор аномалий) → вопросы про необычные выбросы
Роль 3 (исследователь трендов) → вопросы про динамику во времени
↓
Судья выбирает 2-3 самых перспективных вопроса
Multi-path reasoning:
Путь 1: Divide-and-Conquer → разбей задачу на подзадачи → реши каждую → собери
Путь 2: Query Plan → опиши план решения словами → переведи в код
Путь 3: Negative Reasoning → предвидь ошибки → объясни как избежать → напиши код
↓
Селектор выбирает лучший код из трёх вариантов
Пример применения
Задача: Проанализировать метрики подкаста за 6 месяцев — найти неочевидные паттерны для роста аудитории. У тебя CSV с данными: дата, количество прослушиваний, источник трафика, средняя длительность прослушивания, география.
Промпт (Multi-role debating для вопросов):
Ты — система из трёх аналитиков подкастов. Каждый генерирует 3 вопроса о данных со своей перспективы.
**Данные:** CSV с метриками подкаста за 6 месяцев
Колонки: дата, прослушивания, источник (соцсети/поиск/прямые), средняя_длительность_мин, город
**Роль 1: Поведенческий аналитик**
Фокус: паттерны поведения аудитории
Личность: внимателен к деталям, ищет связи между действиями
Генерируй вопросы про: когда слушают, как долго, что влияет на вовлечённость
**Роль 2: Детектор аномалий**
Фокус: необычные всплески или провалы
Личность: скептичен, любопытен к выбросам
Генерируй вопросы про: странные даты, неожиданные источники, необычные города
**Роль 3: Исследователь трендов**
Фокус: динамика во времени
Личность: видит большую картину, ищет тренды
Генерируй вопросы про: рост/падение по месяцам, сезонность, эволюцию источников
---
После того как каждая роль предложит 3 вопроса:
**Судья:** Выбери 3 самых перспективных вопроса из всех предложенных по критериям:
- Потенциал найти неочевидный инсайт (не "сколько всего прослушиваний")
- Можно ответить по имеющимся данным
- Дополняют друг друга (не дублируются)
Для каждого выбранного вопроса укажи: какая роль предложила, почему перспективен.
Результат: Модель сгенерирует 9 вопросов (по 3 от каждой роли) с разных углов. Поведенческий аналитик спросит про корреляцию длительности и источника, детектор аномалий найдёт странный всплеск в конкретном городе, исследователь трендов заметит сезонность. Судья отфильтрует и выберет 3 вопроса с наибольшим потенциалом обнаружить неочевидное. Ты получишь фокусные точки для анализа вместо банального "сколько прослушиваний в среднем".
Промпт (Multi-path reasoning для кода):
Вопрос: {один из вопросов, выбранных судьёй}
Данные: {описание CSV}
Сгенерируй Python-код для ответа на вопрос тремя способами:
**Путь 1: Divide-and-Conquer**
Разбей вопрос на подзадачи. Реши каждую отдельно. Объедини решения.
Формат:
- Подзадача 1: [что нужно] → [код]
- Подзадача 2: [что нужно] → [код]
- Финальная сборка: [код]
**Путь 2: Query Plan**
Опиши план обработки данных словами (фильтры, группировки, агрегации, что на выходе).
Потом переведи план в код.
Формат:
- План: [шаги словами]
- Код: [реализация плана]
**Путь 3: Negative Reasoning**
Предвиди типичные ошибки для этой задачи (двойной подсчёт, пропуск NULL, неправильная группировка).
Объясни как избежать. Напиши код с учётом этих рисков.
Формат:
- Возможные ошибки: [список]
- Как избежать: [объяснение]
- Код: [безопасная реализация]
---
После генерации трёх вариантов:
**Селектор:** Сравни три кода. Выбери лучший по критериям:
- Корректность логики
- Обработка крайних случаев
- Читаемость
Объясни почему выбрал этот вариант. Выведи финальный код.
Результат: Модель сгенерирует три версии кода с разными подходами. Divide-and-Conquer разобьёт на подзадачи (отфильтровать → сгруппировать → посчитать). Query Plan сначала опишет логику словами. Negative Reasoning предвидит что можно забыть обработать NaN или продублировать строки. Селектор выберет наиболее правильный и безопасный код. Ты получишь надёжное решение вместо кода с ошибкой от первой генерации.
Почему это работает
LLM генерирует шаблонные вопросы от одного "лица" — модель следует самому очевидному пути анализа. Результат: вопросы типа "каковы средние значения", "есть ли рост", "топ-5 категорий". Несколько ролей с разными личностями и фокусами видят данные под разными углами одновременно. Поведенческий аналитик заметит паттерн который пропустит детектор аномалий, и наоборот. Дивергентная фаза (каждая роль независимо) даёт разнообразие вопросов, конвергентная фаза (судья выбирает) отсеивает слабые и дублирующиеся. Вместо 3 похожих вопросов от одной модели получаешь 3 взаимодополняющих вопроса из 9 кандидатов.
LLM часто ошибается в коде при первой генерации — неправильная логика, забытые крайние случаи, ошибки в синтаксисе. Одна попытка = высокий шанс бага. Три пути рассуждений атакуют задачу с разных сторон: Divide-and-Conquer снижает сложность через декомпозицию, Query Plan заставляет сначала продумать логику словами (работает как Chain-of-Thought), Negative Reasoning явно предвидит ошибки. Если один путь сгенерирует баг, другой путь с иной стратегией может сгенерировать правильно. Селектор выбирает лучший из трёх вариантов — вероятность получить корректный код многократно выше чем от одной генерации.
Code refinement loop ловит оставшиеся ошибки: ревьюер проверяет код по четырём критериям (соответствие требованиям, работа со схемой данных, операционные риски, целостность данных), находит проблемы, фиксер исправляет с учётом фидбека. Цикл повторяется до 5 раз. Каждая итерация улучшает код, пока не останется критических ошибок. Исследование показало что код после рефайнмента генерирует графики на 15-20% более качественные по критериям Relevance, Clarity, Annotation, Interpretability.
Рычаги управления
Количество ролей (по умолчанию 3) — увеличь до 5 для сложных мультидоменных данных (больше перспектив), уменьши до 2 для простых задач (экономия токенов).
Личности ролей — дай конкретные имена и характеры вместо безликих ("Скептичный аналитик Игорь vs Оптимистичный стратег Алексей") → модель острее разделяет перспективы.
Критерии судьи — добавь свои приоритеты ("вопросы должны вести к actionable выводам для бизнеса" или "фокус на технические метрики продукта").
Количество путей reasoning (по умолчанию 3) — можешь использовать только 2 (Divide-and-Conquer + Negative Reasoning) если задача не очень сложная.
Количество итераций refinement (по умолчанию до 5) — уменьши до 3 для экономии токенов, увеличь для критичного кода.
Шаблон промпта
Multi-role debating для генерации вопросов:
Ты — система из {N} аналитиков. Каждый генерирует {M} вопросов со своей перспективы.
**Данные:** {описание датасета}
**Роль 1: {название роли}**
Фокус: {область фокуса}
Личность: {черты характера}
Генерируй вопросы про: {темы для вопросов}
**Роль 2: {название роли}**
Фокус: {область фокуса}
Личность: {черты характера}
Генерируй вопросы про: {темы для вопросов}
{...повтори для каждой роли}
---
После того как каждая роль предложит вопросы:
**Судья:** Выбери {K} самых перспективных вопросов по критериям:
- Потенциал найти неочевидный инсайт
- Можно ответить по имеющимся данным
- Дополняют друг друга (не дублируются)
- {дополнительные критерии под твою задачу}
Для каждого выбранного вопроса укажи: какая роль предложила, почему перспективен.
Заполни:
- {N} — количество ролей (обычно 3-5)
- {M} — вопросов от каждой роли (обычно 3-5)
- {K} — сколько вопросов выбрать финально (обычно 2-4)
- {название роли} — конкретная специализация (детектор аномалий, поведенческий аналитик, исследователь трендов, бизнес-стратег, технический аудитор)
- {область фокуса} — что ищет эта роль
- {черты характера} — как думает эта роль (скептичен, любопытен, видит детали, видит большую картину)
- {темы для вопросов} — какие аспекты исследует
- {описание датасета} — структура данных, колонки, размер, домен
🚀 Быстрый старт — вставь в чат:
Вот шаблон Multi-role debating для генерации вопросов. Адаптируй под мою задачу: {опиши что нужно проанализировать}.
Задавай вопросы чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про структуру данных, цель анализа, какие роли подходят для этого домена — потому что разные домены требуют разных перспектив (анализ продаж ≠ анализ медицинских данных). Она возьмёт паттерн multi-role debating из шаблона и адаптирует роли, критерии, формат под твою задачу.
Multi-path reasoning для генерации решений:
Задача: {описание задачи или вопрос}
Контекст: {данные, ограничения, формат вывода}
Сгенерируй решение тремя способами:
**Путь 1: Divide-and-Conquer**
Разбей задачу на подзадачи. Реши каждую отдельно. Объедини решения.
Формат:
- Подзадача 1: [что нужно] → [решение]
- Подзадача 2: [что нужно] → [решение]
- Финальная сборка: [итоговое решение]
**Путь 2: Query Plan**
Опиши план решения словами (шаги, логика, что на выходе).
Потом реализуй план.
Формат:
- План: [шаги словами]
- Решение: [реализация плана]
**Путь 3: Negative Reasoning**
Предвиди типичные ошибки для этой задачи.
Объясни как избежать. Создай решение с учётом этих рисков.
Формат:
- Возможные ошибки: [список]
- Как избежать: [объяснение]
- Решение: [безопасная реализация]
---
**Селектор:** Сравни три решения. Выбери лучшее по критериям:
- Корректность
- Полнота (учёт крайних случаев)
- {дополнительные критерии}
Объясни почему выбрал. Выведи финальное решение.
Заполни:
- {описание задачи} — что нужно сделать (может быть генерация кода, анализ ситуации, написание текста)
- {контекст} — входные данные, требования, формат
- {дополнительные критерии} — что важно для тебя (скорость, читаемость, креативность)
🚀 Быстрый старт — вставь в чат:
Вот шаблон Multi-path reasoning. Адаптируй под мою задачу: {опиши задачу}.
Задавай вопросы чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про детали задачи, какой формат решения нужен, какие ошибки наиболее критичны — потому что для кода важна корректность, для текста — смысл, для стратегии — учёт рисков. Она возьмёт паттерн multi-path reasoning из шаблона и адаптирует под специфику твоей задачи.
Ограничения
⚠️ Простые задачи: Для быстрых вопросов с очевидным ответом multi-role debating избыточен — потратишь токены на симуляцию ролей для банального вывода. Используй для сложного многомерного анализа где один взгляд пропускает важное.
⚠️ Затраты токенов: Multi-path reasoning генерирует три версии решения вместо одной — в 3 раза больше токенов на generation. Для несложных задач или при лимите бюджета используй один путь (лучше Negative Reasoning — самый безопасный).
⚠️ Субъективные критерии: Селектор выбирает "лучшее" решение по техническим критериям (корректность, полнота). Для креативных задач где важна оригинальность или стиль — критерии селектора нужно менять, иначе выберет самый "правильный", но скучный вариант.
⚠️ Требует структурированных данных: Фреймворк показал результаты на табличных данных (CSV). Для неструктурированного контента (тексты, изображения, аудио) принципы работают, но применимость code generation падает.
⚠️ История между итерациями: Полный фреймворк DataSage поддерживает историю вопросов-инсайтов через итерации для углубления анализа. В ручном применении в чате нужно самому копировать историю в следующие запросы или использовать длинный диалог (но контекст забывается).
Как исследовали
Исследователи из ByteDance проверили DataSage на InsightBench — бенчмарке из 100 табличных датасетов разного бизнеса (ритейл, здравоохранение, индустрия) с тремя уровнями сложности. Сравнивали с семью baseline: от простого GPT-4o без инструментов до AgentPoirot (предыдущий SOTA). Измеряли качество на двух уровнях: Insight-level (насколько каждый отдельный инсайт похож на ground truth) и Summary-level (насколько итоговое резюме соответствует эталону). Для оценки использовали G-Eval (LLM-as-a-judge метрика с хорошей корреляцией с человеческими оценками).
Главный результат: DataSage выиграл на всех уровнях сложности. На Insight-level улучшение над лучшим baseline — +7.5% в среднем, на Summary-level — +13.9%. Интересно что на сложных датасетах (Hard) отрыв больше (+9.3%) чем на простых (Easy, +7.8%) — фреймворк особенно силён там где одна простая стратегия не справляется. Также Summary-level выигрыш больше чем Insight-level — это означает что более точные инсайты помогают модели при финальном суммировании фокусироваться на правильной информации, улучшая связность итогового текста.
Отдельно проверили качество графиков — DataSage генерирует визуализации на 15-20% качественнее (Relevance, Clarity, Annotation, Interpretability) чем AgentPoirot. Это эффект code refinement loop — проверка и исправление кода 5 раз даёт более чистые и интерпретируемые графики.
Ablation study: убрали Code Refinement → качество упало. Убрали Multi-path Reasoning → качество упало больше. Обе техники критичны, но refinement loop даёт более заметный эффект для финального качества кода и графиков.
Почему domain-aware дизайн важен: даже простое добавление domain knowledge (baseline "GPT-4o domain") немного улучшило результаты. Это подтверждает что RAKG модуль (retrieval внешних знаний) в DataSage решает реальную проблему — чистые данные без контекста домена дают поверхностные выводы.
Адаптации и экстраполяции
🔧 Техника: Комбинация multi-role debating с Chain-of-Thought
Оригинальный метод использует роли для генерации вопросов. Но роли можно использовать для решения одного вопроса с разных сторон — как multi-perspective Chain-of-Thought.
Задача: {твоя проблема}
Реши задачу с трёх перспектив:
**Перспектива 1: Оптимист**
Личность: видит возможности, фокус на потенциале
Рассуждение: [как бы решил оптимист, какие преимущества видит]
**Перспектива 2: Пессимист**
Личность: видит риски, фокус на проблемах
Рассуждение: [как бы решил пессимист, какие опасности видит]
**Перспектива 3: Прагматик**
Личность: баланс, фокус на реализуемости
Рассуждение: [как бы решил прагматик, что реально выполнимо]
---
**Синтез:** Объедини три перспективы в одно сбалансированное решение, учитывающее возможности (оптимист), риски (пессимист) и практичность (прагматик).
Это расширяет multi-role debating за пределы анализа данных — работает для принятия решений, оценки бизнес-идей, анализа стратегий.
🔧 Техника: Multi-path reasoning для креатива
Оригинал использует три пути для кода. Но паттерн применим к креативным задачам — генерация текста, идей, стратегий. Измени стратегии рассуждений:
Задача: {написать текст / придумать идею / создать концепцию}
**Путь 1: Структурный подход**
Определи структуру (разделы, логику, поток). Заполни каждый элемент.
**Путь 2: Эмоциональный подход**
Определи желаемую эмоцию и реакцию аудитории. Создай контент который вызывает эту эмоцию.
**Путь 3: Референсный подход**
Найди аналоги и паттерны которые работают в этой области. Адаптируй под свою задачу.
---
**Селектор:** Выбери лучший вариант или объедини сильные стороны каждого пути.
Это переносит принцип multi-path reasoning из технических задач (код) в креативные (контент).
Ресурсы
DataSage: Multi-agent Collaboration for Insight Discovery with External Knowledge Retrieval, Multi-role Debating, and Multi-path Reasoning
InsightBench — бенчмарк для оценки insight discovery агентов
Авторы: Xiaochuan Liu, Yuanfeng Song, Xiaoming Yin, Xing Chen (ByteDance, China)
