Журнал · Rit.work

PlanPool не даёт Text-to-SQL-агенту забыть уточняющие вопросы

PlanPool хранит вопросы Text-to-SQL-агента во внешнем состоянии и запрещает генерировать SQL, пока система не разберёт каждый пункт.

Rit.work
Студия разработки
5 октября 2026 г.3 мин чтения

Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.

Text-to-SQL-агента научили не забывать уточнения, которые он сам счёл нужными до генерации запроса. В нерецензированном препринте Cornell University и AWS все числа получили сами авторы: новый протокол снизил долю тихих ошибок на BIRD-Lite с 10,5% до 8,2%. Для продуктовой команды вывод практический: план вопросов надо хранить как состояние системы, а не как текст в истории диалога.

Почему правильный SQL ещё не означает правильного понимания

Интерактивный Text-to-SQL-агент может изучить схему и данные, спросить пользователя о пропущенных условиях, а затем собрать запрос. Переход от генерации за один ход к диалогу более чем утроил точность выполнения SQL на BIRD-Lite, но не устранил догадки.

Запрос «расставить товары по рейтингу» не задаёт показатель и направление сортировки. Агент может выбрать популярность и порядок по убыванию, случайно получить ожидаемый результат и пройти обычную проверку. Однако такой успех не опирается на явно подтверждённое намерение пользователя.

Работа разделяет точность выполнения и обоснованность ответа. Обоснованный успех означает, что SQL вернул правильный результат, а агент уточнил все размеченные неоднозначности. Тихой ошибкой авторы называют неверный результат, при котором хотя бы одна неоднозначность осталась неразрешённой.

Принудительное увеличение числа вопросов повышало точность, но быстро создавало лишний диалог: поздние вопросы чаще касались второстепенных деталей или того, на что пользователь не мог ответить. Текстовый план тоже не решил проблему. На BIRD-Lite агент намечал в среднем 4,1 вопроса, а задавал 3,3: после нескольких ответов модель начинала считать задачу понятной и переходила к SQL.

PlanPool повысил полноту выявления неоднозначностей с 80,8% у планирования через подсказку до 87,5%. Эта метрика показывает, какую долю заранее размеченных проблем агент затронул своими вопросами.

Как PlanPool удерживает незакрытые вопросы

PlanPool выносит план из контекста модели в отдельное изменяемое состояние. Сначала агент изучает источник данных и составляет упорядоченный набор вопросов. Дальше этот набор сохраняет управляющий слой, поэтому очередной ответ модели не может незаметно стереть ранее найденную проблему.

Во время диалога агент выполняет три операции: задаёт ожидающий вопрос, удаляет его с явным обоснованием или добавляет новую неоднозначность. Удаление нужно, если ответ на другой вопрос уже дал нужные сведения либо сделал пункт лишним. Поэтому PlanPool работает не как жёсткая анкета, а как обновляемая очередь обязательств.

Главное правило срабатывает перед отправкой результата: пока в наборе остаётся хотя бы один пункт, агент не может передать финальный SQL. Система требует не задать все первоначальные вопросы, а явно разобрать каждый из них. Модель сохраняет свободу менять план, но теряет возможность молча его бросить.

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

Проверку провели на наборах, собранных из BIRD-Interact-Lite, BIRD-Interact-Full и Spider. Claude-Opus-4.8 работала и системным агентом, и симулятором пользователя; модель, инструменты и среду сохраняли одинаковыми для всех вариантов. Поэтому эксперимент сравнивает способы управлять уточнениями, но не показывает поведение реальных пользователей или других моделей.

Когда внешний план стоит добавить в продукт

Работа меняет планы команд, если цена неверного предположения выше цены дополнительного вопроса. Это относится к аналитическим помощникам, внутренним системам отчётности и интерфейсам к данным, где одинаково исполнимые SQL-запросы могут выражать разные бизнес-правила.

Одной инструкции «сначала составь план» для такого сценария недостаточно. Надёжная схема должна хранить ожидающие вопросы вне переписки, разрешать их явное добавление и удаление и блокировать финальное действие до опустошения набора. Проверку выполнения SQL при этом убирать нельзя: PlanPool дополняет её контролем намерения, а не заменяет.

За контроль приходится платить более длинным контекстом. На BIRD-Lite PlanPool стоил примерно на десятую часть дороже планирования только через подсказку, хотя кэширование контекста сгладило разницу. Эти расходы относятся к использованной модели и экспериментальной среде, поэтому для продукта важнее сначала измерить длину реальных диалогов и цену тихой ошибки.

Метрики тоже стоит разделить. Точность выполнения отвечает, сработал ли SQL на тестовых данных. Полнота неоднозначностей показывает, какие допущения агент обсудил, а обоснованный успех требует одновременно правильного результата и закрытых вопросов. Без такого разделения случайно угаданный запрос выглядит таким же надёжным, как запрос, собранный по подтверждённым требованиям.

Основной результат шире Text-to-SQL: найденное моделью обязательство не становится надёжным только потому, что присутствует в истории диалога. Если агент не должен забывать условие перед необратимым действием, это условие лучше превратить во внешнее состояние и проверять программно.

Источники

Пауза в чтении

Похоже на вашу задачу?

Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.

Rit.work

Студия разработки

Собираем мобильные приложения и помогаем командам получать от AI реальную пользу. Основатель и команда, работаем удалённо — с клиентами в России и за рубежом.

← Ко всем материалам
Понравилось? Обсудим вашу задачу