TL;DR
PLANTA — метод работы с таблицами, который сначала строит полный план действий, потом выполняет его по шагам. Вместо того чтобы рассуждать "на ходу" (как в Chain-of-Thought) или разбивать вопрос на подвопросы, метод создаёт долгосрочный план с явными зависимостями между шагами. Каждый шаг знает, от каких предыдущих шагов он зависит и что именно ему нужно. План выполняют специализированные эксперты: один ищет данные в таблице, другой считает, третий сравнивает. В конце эксперт-оценщик проверяет результат и решает — достаточно данных для ответа или план нужно скорректировать.
Главная проблема, которую решает метод: CoT и question decomposition пропускают зависимости между шагами. Например, вопрос "найди выручку продуктов, которые продавались И в регионе A И в регионе B с объёмом >500 в каждом". Стандартные методы фильтруют: (1) год 2023, (2) количество >500, (3) суммируют выручку. Результат — 3800 вместо правильных 2500, потому что пропустили условие: нужны только продукты из обоих регионов одновременно. Шаг 3 не знает о результатах шагов 1 и 2 как о связанных условиях.
Метод работает через четыре типа экспертов. (1) Planning expert — получает вопрос и таблицу, создаёт план из коротких целей (short-term goals) с явными зависимостями между ними. (2) Router — распределяет цели между исполнителями по специализации. (3) Execution experts (Search, Calculation, Comparison) — выполняют конкретные операции: ищут строки в таблице через SQL, считают, сравнивают. Передают только финальный результат, не промежуточные рассуждения. (4) Assessment expert — после нескольких шагов проверяет: хватит ли данных для ответа? План работает или нужны правки? Если да — корректирует план или даёт ранний ответ.
Схема метода
ЭТАП 1 — ПЛАНИРОВАНИЕ (один промпт):
Planning expert → долгосрочный план из N коротких целей
├─ Цель 1: [что сделать] → зависит от: [—]
├─ Цель 2: [что сделать] → зависит от: [Цель 1]
└─ Цель N: [что сделать] → зависит от: [Цель 2, Цель 5]
ЭТАП 2 — ВЫПОЛНЕНИЕ (итеративно):
Для каждой цели:
├─ Router → определяет тип задачи (search / calculation / comparison)
├─ Execution expert → выполняет цель, передаёт только результат
└─ Обновление плана: Цель X [выполнена] → результат: [данные]
ЭТАП 3 — ПРОВЕРКА (периодически):
Assessment expert → анализирует выполненные шаги
├─ Достаточно данных? → выдаёт ответ
├─ План не работает? → корректирует план
└─ Иначе → продолжаем выполнение
Пример применения
Задача: У тебя на столе три предложения от поставщиков мебели для офиса. Нужно понять: какой поставщик даст минимальную общую стоимость, если заказать 15 стульев и 3 стола, при условии что у поставщика есть оба товара в наличии?
| Поставщик | Товар | Цена за ед. | В наличии |
|---|---|---|---|
| ООО "МебельПро" | Стул | 3500₽ | Да |
| ООО "МебельПро" | Стол | 12000₽ | Да |
| ИП Сидоров | Стул | 3200₽ | Да |
| ИП Сидоров | Стол | 11500₽ | Нет |
| "ОфисСнаб" | Стул | 3800₽ | Да |
| "ОфисСнаб" | Стол | 10500₽ | Да |
Промпт (ЭТАП 1 — Planning):
Ты — Planning expert. Создай долгосрочный план для решения задачи.
Таблица:
[вставить таблицу]
Вопрос: Какой поставщик даст минимальную общую стоимость для заказа 15 стульев и 3 столов, если у поставщика должны быть оба товара в наличии?
Требования к плану:
1. Разбей на короткие цели (short-term goals)
2. Для каждой цели укажи: что делать, зависимости от предыдущих целей
3. Используй типы операций: search (поиск/фильтрация), calculation (расчёты), comparison (сравнение)
4. Не выполняй план, только опиши
Формат ответа:
Цель 1: [описание] | Тип: [search/calculation/comparison] | Зависит от: [—]
Цель 2: [описание] | Тип: [...] | Зависит от: [Цель X]
...
Промпт (ЭТАП 2 — Execution, для каждой цели):
Ты — Search expert / Calculation expert / Comparison expert.
Твоя цель: [цель из плана]
Зависимости: [результаты предыдущих целей, если есть]
Таблица: [таблица]
Выполни цель. Используй только доступные инструменты:
- Search: SQL-запросы для фильтрации строк
- Calculation: базовая арифметика
- Comparison: поиск мин/макс, сравнение значений
Верни только финальный результат, без промежуточных рассуждений.
Промпт (ЭТАП 3 — Assessment, после N целей):
Ты — Assessment expert. Проверь выполненный план.
Оригинальный вопрос: [вопрос]
План: [план с результатами выполненных целей]
Таблица: [таблица]
Оцени:
1. Достаточно ли данных для ответа на вопрос? Если да — дай ответ.
2. Есть ли ошибки в выполнении? Если да — скорректируй план.
3. Если всё ОК, но данных мало — продолжай выполнение.
Результат: Модель построит план из 4-5 целей: (1) найти поставщиков, у которых есть оба товара в наличии, (2) для каждого посчитать стоимость 15 стульев, (3) для каждого посчитать стоимость 3 столов, (4) суммировать для каждого поставщика, (5) найти минимум. На этапе Assessment модель проверит, что зависимость "оба товара у одного поставщика" соблюдена, и выдаст правильный ответ: "ОфисСнаб" — 88 500₽ (исключив ИП Сидоров, у которого нет столов).
Почему это работает
LLM плохо держат сложные зависимости в голове при генерации "на ходу". Chain-of-Thought генерирует следующий шаг, глядя на весь предыдущий текст — от начала вопроса до последнего действия. Чем длиннее цепочка, тем больше шанс забыть ключевое условие из вопроса (особенно если оно в середине) или утонуть в деталях промежуточных шагов. Question decomposition разбивает вопрос на подвопросы, но не видит связей между ними — каждый подвопрос решается изолированно, потом результаты склеиваются. Условия типа "И в регионе A И в регионе B" теряются.
LLM отлично планируют, если им дать время подумать до выполнения. Модель может построить граф зависимостей: "Цель 3 нужен результат Цели 1, но не Цели 2". Явная структура плана снимает с модели нагрузку "держать всё в уме" во время выполнения. Каждый шаг получает только то, от чего он зависит, без лишнего контекста. Это как разница между "решай задачу вслух, думай одновременно" и "сначала распиши план, потом делай по пунктам".
Специализация экспертов использует сильные стороны LLM для конкретных типов задач. Search expert генерирует SQL-запросы — модель умеет в структурированные языки. Calculation expert вызывает функции арифметики — вместо того чтобы считать "в уме", модель делегирует вычисления инструменту. Comparison expert фокусируется только на логике сравнения. Каждый эксперт работает локально, не отвлекаясь на чужие задачи. Результат: меньше ошибок, чем если бы одна модель делала всё сразу.
Assessment expert играет роль рефлексии — проверяет гипотезы, ловит ошибки, корректирует план. Это имитирует то, как человек периодически останавливается и спрашивает себя: "Правильно ли я иду? Хватит ли мне этих данных?". Без этого шага модель может упорно выполнять неработающий план до конца, вместо того чтобы вовремя свернуть.
Рычаги управления методом:
- Частота Assessment (k шагов) → чаще = больше проверок и ранних ответов, но выше риск ненужных корректировок и расход токенов
- Число экспертов → можно добавить эксперта для логического вывода или работы с текстом
- Структура плана → требовать явные зависимости или разрешить гибкие связи
- Глубина reasoning → позволить экспертам использовать CoT внутри своей задачи или требовать только прямой вызов функций
Шаблон промпта
ПРОМПТ 1: Планирование
Ты — Planning expert. Твоя задача: создать долгосрочный план решения задачи над таблицей.
Таблица:
{таблица}
Вопрос:
{вопрос}
Требования к плану:
1. Разбей задачу на короткие цели (short-term goals) — каждая цель это одна операция
2. Для каждой цели укажи:
- Что нужно сделать
- Тип операции: search (поиск/фильтрация в таблице), calculation (вычисления), comparison (сравнение значений)
- От каких предыдущих целей зависит (указать номера целей или "—" если независима)
3. Цели должны быть атомарными — одна операция, не комбо
4. Явно прописывай зависимости: если Цель 3 использует результат Цели 1 — укажи это
НЕ выполняй план, только опиши его.
Формат ответа:
Цель 1: [описание действия] | Тип: [search/calculation/comparison] | Зависит от: [—]
Цель 2: [описание действия] | Тип: [...] | Зависит от: [Цель 1]
...
Что подставлять:
{таблица}— твоя таблица в формате Markdown или описание структуры{вопрос}— вопрос над таблицей
ПРОМПТ 2: Выполнение (для каждой цели отдельно)
Вариант A: Search Expert
Ты — Search expert. Работаешь с таблицами через SQL-запросы.
Твоя цель: {цель_из_плана}
Доступные данные: {результаты_зависимостей}
Таблица: {таблица}
Задача:
1. Проанализируй цель
2. Сгенерируй SQL-запрос для извлечения нужных данных
3. Опиши результат в структурированном виде
Верни ТОЛЬКО финальный результат (найденные строки или числа), без промежуточных рассуждений.
Вариант B: Calculation Expert
Ты — Calculation expert. Выполняешь вычисления.
Твоя цель: {цель_из_плана}
Доступные данные: {результаты_зависимостей}
Инструменты:
- Сложение, вычитание, умножение, деление
- Округление, проценты
Выполни расчёт. Верни ТОЛЬКО итоговое число с пояснением что это.
Вариант C: Comparison Expert
Ты — Comparison expert. Сравниваешь значения, ищешь min/max.
Твоя цель: {цель_из_плана}
Доступные данные: {результаты_зависимостей}
Операции:
- Поиск минимума/максимума
- Сравнение "больше/меньше/равно"
- Сортировка по критерию
Выполни сравнение. Верни ТОЛЬКО результат (значение + что это).
Что подставлять:
{цель_из_плана}— конкретная цель из плана (например, "Найти строки где Region = A и Quantity > 500"){результаты_зависимостей}— результаты предыдущих целей, от которых зависит текущая (если есть)
ПРОМПТ 3: Проверка
Ты — Assessment expert. Проверяешь качество выполненного плана.
Исходный вопрос: {вопрос}
Таблица: {таблица}
Долгосрочный план: {план}
Выполненные цели: {выполненные_цели_с_результатами}
Оцени ситуацию:
1. Достаточно ли собранных данных для полного ответа на вопрос? Если ДА — сформулируй финальный ответ.
2. Есть ли ошибки в выполнении (неверные данные, нарушение зависимостей)? Если ДА — предложи корректировку плана.
3. Если данных мало и ошибок нет — продолжай выполнение следующих целей.
Формат ответа:
- Если готов ответ: "ОТВЕТ: [ответ]"
- Если нужна корректировка: "КОРРЕКТИРОВКА: [новый план]"
- Если продолжать: "ПРОДОЛЖИТЬ"
Что подставлять:
{выполненные_цели_с_результатами}— список выполненных целей и их результатов в формате "Цель X: [описание] → Результат: [данные]"
🚀 Быстрый старт — вставь в чат:
Вот шаблон PLANTA для работы с таблицами. Адаптируй под мою задачу: [твоя задача с таблицей].
Задавай вопросы, чтобы заполнить поля.
[вставить ПРОМПТ 1 выше]
LLM спросит про структуру таблицы, тип вопроса, какие операции могут понадобиться — потому что для построения хорошего плана нужно понять сложность задачи и зависимости. Она возьмёт паттерн из шаблона и создаст план под твою задачу. Потом используй ПРОМПТ 2 для выполнения целей по очереди, ПРОМПТ 3 для проверки.
Ограничения
⚠️ Требует структурированных данных: Метод заточен под таблицы с чёткой структурой (строки, столбцы, типы данных). Для неструктурированного текста или смешанных форматов эффективность падает — Planning expert не сможет построить чёткий план операций.
⚠️ Критичность планирования: Если Planning expert построит слабый план (пропустит зависимости, неправильно разобьёт задачу), весь метод рушится. Улучшение LLM для планирования даёт скачок +16% accuracy (GPT-3.5 → GPT-4 в эксперименте), в то время как улучшение LLM для выполнения даёт только +5%. Планирование — узкое горлышко метода.
⚠️ Overhead для простых задач: Если вопрос решается одним SQL-запросом ("Сколько строк где Region = A?"), полный цикл Planning → Execution → Assessment избыточен. Метод окупается на сложных вопросах с множественными условиями и зависимостями (3+ операции).
⚠️ "Ленивые исполнители": 11.7% ошибок в эксперименте связаны с тем, что Execution experts пытаются решить задачу рассуждениями вместо использования инструментов (SQL, калькулятор). Например, LLM "в уме" считает 3+3+1=6 вместо 7, хотя есть функция для вычислений. Требуется явно требовать использование инструментов в промпте.
⚠️ Непредсказуемые данные: LLM теряется на нетиповых значениях в таблицах — "TBA" вместо даты, столбцы "Примечания" с контекстом, который переворачивает основную информацию. 37.7% ошибок связаны с недостатком "экспертного знания" о реальных данных — модель не знает, что "1990-1991" это один сезон, а не два года.
Как исследовали
Команда проверила PLANTA на двух бенчмарках: WikiTableQuestions (4343 вопроса над 421 таблицей) и TabFact (2024 задачи на верификацию фактов по 298 таблицам). Вопросы в WikiTQ живые — не из шаблонов, а написаны людьми, с разнообразной формулировкой. TabFact требует не только мягкого лингвистического reasoning, но и жёсткого символьного — операции агрегации, отрицания, сравнения, подсчёта.
Сравнивали с восемью сильными baseline: TEXT2SQL (прямой перевод в SQL), Chain-of-Thought, Dater и StructGPT (CoT-based методы), BINDER и DP&PYAGENT (question decomposition), TabSQLify и Chain-of-Table (state-of-the-art на момент публикации). Метрика: denotation accuracy для WikiTQ (совпадение ответа) и binary accuracy для TabFact (верно/неверно).
Результаты удивили соотношением вклада планирования vs выполнения. PLANTA с GPT-4o-mini показала 75.7% на WikiTQ и 90.4% на TabFact — новый state-of-the-art, обогнав DP&PYAGENT (74.7% и 89.9%). Но самое интересное в ablation study: когда зафиксировали Planning на GPT-4o-mini, а Execution прокачали с GPT-3.5 до GPT-4 — accuracy выросла с 74% до 79% (+5%). Когда же зафиксировали Execution на GPT-4o-mini, а Planning прокачали — скачок с 72% до 88.5% (+16.5%). Это значит планирование в 3+ раза критичнее для качества, чем выполнение.
Инсайт для практики: вкладывайся в качество плана, а выполнение можно делать дешёвой моделью. Используй топовую LLM (GPT-4, Claude Opus) для Planning expert, а для Execution experts хватит быстрой и дешёвой модели. Это экономит токены и деньги без потери качества.
Второй инсайт из ошибок: 37.7% ошибок связаны с неправильным планированием (пропущенные зависимости, неверные связи между шагами), 20.8% — с недостатком common sense (модель не знает что "1990-1991 season" это один сезон, а не два года). LLM лучше формальной логики, чем реального "экспертного" знания предметной области.
Ресурсы
Planning for Success: Exploring LLM Long-term Planning Capabilities in Table Understanding Авторы: Thi-Nhung Nguyen, Hoang Ngo, Dinh Phung, Thuy-Trang Vu, Dat Quoc Nguyen Организации: Monash University, Qualcomm AI Research Код: https://github.com/nhungnt7/PLANTA
