К тренажеру
ВопросHardnlp-agentsРеальный собес

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.