Назад к подготовке

Agent critic для Text2SQL

Text2SQL copilot возвращает SQL для закрытой продовой базы. Как спроектировать agent critic, который валидирует запрос до запуска?

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

Нужен многоступенчатый critic: SQL parser, dry-run/EXPLAIN в безопасном контуре, проверка разрешенных таблиц, schema metadata, semantic judge и confidence/fallback.

Полный разбор

Хороший critic не должен быть еще одной LLM без ограничений. Первый слой - deterministic checks: SQL parser под нужный диалект, запрет DDL/DML, allowlist таблиц и колонок, лимиты, EXPLAIN или dry-run в sandbox. Второй слой - schema-aware validation: существуют ли таблицы, join keys, типы фильтров, агрегаты и доступы.

Третий слой проверяет соответствие пользовательскому запросу. Можно извлечь из natural language intent, метрики, dimensions, filters, time range и сравнить с SQL AST. Для спорных случаев LLM полезна как judge, но ее ответ должен быть structured и сопровождаться reasons/confidence.

В production нужны fallback: не запускать запрос при низкой уверенности, вернуть пользователю уточняющий вопрос или отправить на human review. Отдельно логируются причины reject/accept, чтобы улучшать copilot и critic.

Теория

Text2SQL validation объединяет compiler checks, access control, schema linking и semantic parsing. Самый важный принцип: LLM не должна быть единственным барьером перед продовой базой.

Типичные ошибки

  • Проверять только синтаксис и считать запрос безопасным.
  • Не различать runnable SQL и SQL, который отвечает на исходный вопрос.
  • Давать агенту прямой доступ к production без sandbox/dry-run.

Как отвечать на собеседовании

  • Раздели deterministic checks и semantic checks.
  • Назови SQL AST, EXPLAIN/dry-run, allowlist и confidence fallback.