TL;DR
SEAL — метод для диалоговых систем над графами знаний, который разбивает сложную генерацию запроса на два этапа: сначала LLM извлекает минимальное ядро (core) — упрощённую версию запроса с основной логикой, затем агент калибрует его (исправляет синтаксис, привязывает к данным), а на втором этапе система выбирает шаблон под тип вопроса и заполняет его откалиброванным ядром и деталями.
Главная находка: LLM хорошо понимают суть запроса, но плохо генерируют точную структуру с первого раза. При генерации сложных структурированных запросов модель делает синтаксические ошибки, неправильно привязывает элементы к базе данных, создаёт валидные по форме, но семантически некорректные конструкции. Классический подход — проверять множество вариантов связывания элементов (entity linking) — экспоненциально растёт по сложности. Ещё проблема: в диалоге нужно разрешать отсылки к предыдущим репликам ("а его жена?", "те же, но старше 30").
Метод работает так: Этап 1 — LLM извлекает ядро запроса (JOIN, AND, базовые операции без деталей), агент проверяет синтаксис и привязывает к данным (выбирает одного самого похожего кандидата вместо десятков). Этап 2 — система предсказывает тип вопроса ("простой", "сравнение", "агрегация"), выбирает шаблон из библиотеки, заполняет плейсхолдеры ядром и функциями. Плюс механизм самообучения: локальная память (контекст диалога) + глобальная память (шаблоны, успешные паттерны) + рефлексия (анализ удачных решений) — система учится без переобучения.
Схема метода
ЭТАП 1: Извлечение и калибровка ядра
├─ LLM: Вопрос + контекст диалога → S-expression core (упрощённый запрос)
├─ Агент: Синтаксическая проверка → исправление ошибок
└─ Агент: Entity linking → привязка к базе (1 кандидат на элемент)
ЭТАП 2: Композиция через шаблон
├─ Система: Анализ вопроса → предсказание типа
├─ Система: Тип вопроса → выбор шаблона из библиотеки
└─ LLM: Шаблон + ядро + функции → полный запрос
САМООБУЧЕНИЕ (параллельно):
├─ Локальная память: Хранит контекст диалога, разрешает "он", "там" → конкретные сущности
├─ Глобальная память: Накапливает шаблоны и успешные паттерны
└─ Рефлексия: Анализирует успешные решения → обновляет глобальную память
Все этапы выполняются в рамках инфраструктуры системы (требуют API, базу знаний, код).
Пример применения
⚠️ Метод разработан для специфической задачи — запросов к графам знаний через структурированные языки (S-expressions, SPARQL). Ниже показаны извлечённые принципы, адаптированные для обычной работы в чате:
Задача: Анализ бизнес-идеи — подкаст про русских предпринимателей в стиле "Как делать деньги" Тинькова. Нужно оценить идею с разных сторон: рынок, монетизация, конкуренты, риски.
Промпт (принцип: ядро → детали + шаблоны):
ШАГ 1 — Извлечение ядра:
Вопрос: Оцени идею подкаста про русских предпринимателей в стиле Тинькова.
Извлеки ЯДРО анализа — 3-5 ключевых аспектов, которые нужно проверить для любой медиа-идеи. Без деталей, только структуру.
---
ШАГ 2 — Калибровка ядра:
Вот моё ядро: [вставить то, что выдала модель]
Проверь:
- Все ли критичные аспекты учтены (аудитория, монетизация, конкуренты)?
- Правильно ли приоритеты (сначала demand, потом детали)?
- Есть ли пропуски для медиа-проекта?
Исправь и дай откалиброванную версию.
---
ШАГ 3 — Заполнение шаблона:
Используй откалиброванное ядро. Для каждого аспекта:
[Аспект]:
- Данные: [конкретные цифры, примеры из рынка]
- Оценка: [хорошо/плохо/риск]
- Действие: [что проверить дальше]
Заполни под мою идею: подкаст про русских предпринимателей, стиль Тинькова, формат интервью 40-60 минут.
Результат:
Модель на первом шаге выдаст ядро анализа — короткий список критичных аспектов без деталей (размер аудитории, монетизация, конкуренты, формат, позиционирование).
На втором шаге проверит и исправит ядро — добавит пропущенное (например, уникальность, барьеры входа), переставит приоритеты, уберёт лишнее.
На третьем шаге заполнит шаблон под каждый аспект откалиброванного ядра: для "размера аудитории" подтянет данные по подкастам в России, для "монетизации" — модели заработка российских подкастов, для "конкурентов" — похожие проекты. Финальный результат — структурированный анализ: аспект → данные → оценка → что делать дальше.
Почему это работает
Слабость LLM: При генерации сложных структур модель хорошо понимает общий смысл, но плохо выдерживает точную структуру — делает синтаксические ошибки, путает вложенность, неправильно связывает элементы, создаёт валидные по форме, но семантически некорректные конструкции.
Сильная сторона LLM: Модель отлично извлекает суть — ключевые концепции, их логические связи, основные операции. Ещё одна сильная сторона — заполнение структурированных шаблонов по чётким правилам (если дана структура, модель хорошо подставляет значения).
Как метод использует это: Вместо генерации всей сложной структуры целиком, метод разбивает процесс: LLM сначала извлекает упрощённое ядро (только суть, базовые связи), потом агент калибрует его (проверяет синтаксис, привязывает к данным — одного самого похожего кандидата вместо множества), потом система выбирает готовый шаблон под тип задачи и LLM заполняет его откалиброванным ядром и деталями. Декомпозиция убирает ошибки за счёт того, что на каждом шаге задача проще: extract core (суть без деталей) → calibrate (проверить и исправить) → compose (заполнить шаблон).
Рычаги управления:
Что генерировать как ядро: Чем проще ядро, тем меньше ошибок на первом шаге (базовые связи vs детальная логика). Для сложных задач можно попросить несколько вариантов ядра.
Критерии калибровки: Можно задать свои правила проверки — синтаксис, полнота, приоритеты, соответствие контексту.
Библиотека шаблонов: Накапливай готовые структуры для частых задач (анализ, сравнение, генерация контента) — чем больше шаблонов, тем точнее выбор.
Локальная vs глобальная память: Локальная = краткосрочный контекст (диалог, текущая задача), глобальная = долгосрочные знания (шаблоны, успешные паттерны). Можно явно указать "используй как глобальное знание" или "это только для текущего контекста".
Глубина рефлексии: После решения задачи можно попросить модель проанализировать "что сработало хорошо" и сохранить как паттерн для будущих задач.
Шаблон промпта
⚠️ Оригинальный метод требует инфраструктуры (графы знаний, S-expressions, API). Ниже — адаптация принципов для работы в чате:
ЭТАП 1: Извлечение ядра
Задача: {описание задачи}
Извлеки ЯДРО решения:
- Ключевые элементы (что нужно для ответа)
- Связи между ними (как они взаимодействуют)
- Основные операции (что с ними делать)
Без деталей. Только структура.
---
ЭТАП 2: Калибровка
Вот ядро: [вставить вывод из Этапа 1]
Проверь и исправь:
1. Синтаксис: правильная ли структура?
2. Полнота: всё ли критичное учтено?
3. Приоритеты: правильный ли порядок?
4. Контекст: соответствует ли {специфике задачи}?
Дай откалиброванную версию.
---
ЭТАП 3: Композиция
Используй откалиброванное ядро.
Тип задачи: {простой вопрос / сравнение / агрегация / анализ / генерация}
Шаблон результата:
{твоя структура вывода — например:
[Аспект 1]: [данные] → [оценка] → [действие]
[Аспект 2]: [данные] → [оценка] → [действие]}
Заполни шаблон для: {конкретные данные задачи}
Что подставлять:
- {описание задачи} — твой вопрос или запрос
- {специфика задачи} — контекст, ограничения, критерии (например: "для российского рынка", "бюджет до 100к руб", "B2B сегмент")
- {тип задачи} — выбери из списка или опиши свой
- {твоя структура вывода} — как должен выглядеть финальный ответ
- {конкретные данные задачи} — детали: цифры, имена, параметры
🚀 Быстрый старт — вставь в чат:
Вот шаблон трёхэтапной генерации (ядро → калибровка → композиция).
Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы настроить этапы под мой контекст.
[вставить шаблон выше]
LLM спросит про специфику задачи (контекст, ограничения), предложит структуру ядра, уточнит критерии калибровки, подберёт формат вывода. Она возьмёт паттерн "суть → проверка → детали" и адаптирует под твой запрос.
Ограничения
⚠️ Оверхед на простых задачах: Трёхэтапный процесс избыточен для простых вопросов ("столица России?", "переведи текст"). Метод окупается на сложных структурированных задачах — анализ, сравнение, многоаспектная оценка.
⚠️ Требует структурированного источника знаний: Оригинальный метод работает с графами знаний — точно привязывает элементы запроса к базе данных. Адаптация для чата теряет эту точность — модель опирается на внутренние знания, а не на внешнюю структурированную базу.
⚠️ Принцип, не готовая система: В исследовании SEAL — это автоматическая инфраструктура (API, база, агенты). В адаптации — это workflow: ты вручную ведёшь модель через этапы. Можно автоматизировать через API/custom GPT, но из коробки в чате — ручное управление.
⚠️ Эффективность зависит от библиотеки шаблонов: Этап "композиция" работает лучше, если есть готовые шаблоны под типы задач. Без шаблонов — модель может генерировать менее структурированный результат.
Ресурсы
SEAL: Self-Evolving Agentic Learning for Conversational Question Answering over Knowledge Graphs Hao Wang, Jialun Zhong, Changcheng Wang, Zhujun Nie, Zheng Li, Shunyu Yao, Yanzeng Li, Xinchi Li Institute of Big Data and Artificial Intelligence (China Telecom Research Institute), Wangxuan Institute of Computer Technology (Peking University), School of Artificial Intelligence (China University of Geosciences), Institute of Artificial Intelligence and Future Networks (Beijing Normal University), Center for Cognition and Neuroergonomics (Beijing Normal University)
