← Все статьи
2026-07-03 10:05 · 🤖 AI World

DSPy нашёл баг в SQL-агенте, который вы бы не заметили

Simon Willison попросил Claude Fable 5 через DSPy оценить промпты Datasette Agent — и фреймворк сразу нашёл структурный баг: схема без колонок плюс запрет лишних вызовов гонял агент в петли ошибок. Ручной промпт-инжиниринг такое не ловит.

DSPy нашёл баг в SQL-агенте, который вы бы не заметили

Simon Willison — автор Datasette и один из самых известных LLM-практиков — запустил через Claude Code асинхронную задачу: установить DSPy, подключить Datasette Agent и автоматически оценить системный промпт для функции SQL-запросов. Claude Fable 5 провёл исследование, выбрал для тестирования GPT-4.1 mini и GPT-4.1 nano, и нашёл конкретную проблему. Промпт передавал схему только с именами таблиц — без колонок, — но при этом запрещал вызывать describe_table «если информация уже есть». Агент начинал угадывать имена вроде page_count или first_name, ошибался, уходил в retry-петли. Классический production-баг без внешнего eval.

Контекст

DSPy — фреймворк из Стэнфорда, который меняет сам подход к работе с промптами. Вместо ручного перебора формулировок вы задаёте метрики качества и набор примеров, а DSPy компилирует и оптимизирует промпты программно. Это ближе к машинному обучению, чем к традиционному prompt crafting — отсюда и название: Declarative Self-improving Python.

Datasette Agent — плагин для Datasette, open-source инструмента публикации SQLite-баз в браузере. Агент принимает вопрос на естественном языке и транслирует его в read-only SQL-запрос. Паттерн text-to-SQL встречается в десятках продуктов: BI-инструменты, корпоративные аналитические платформы, чат-боты поверх баз данных.

Примечательна сама механика эксперимента: Willison не занимался этим вручную — он делегировал исследование агенту. Агент исследовал, как улучшить другого агента. Это рабочий паттерн, который всё чаще используется в разработке AI-продуктов: вместо того чтобы самому копаться в трейсах, вы ставите задачу Claude Code и получаете результат асинхронно.

Аналитика

Найденный баг показывает системную проблему SQL-агентов: неполная схема в промпте ведёт к деградации под нагрузкой реальных запросов. Агент видит таблицу, но не знает колонки. Промпт говорит не запрашивать метаданные лишний раз. Агент угадывает — и ошибается. Без автоматического eval этот баг может годами жить в production под видом «иногда агент тупит».

DSPy переводит оценку промптов из субъективного в измеримое: вы задаёте входные вопросы, ожидаемые результаты, метрику — фреймворк прогоняет baseline, находит слабые места, предлагает улучшения. Для агентов с SQL-доступом к реальным данным это вопрос надёжности, а не удобства. Ошибочный запрос к боевой базе — уже инцидент.

Важнее сама культурная сдвижка: раньше цикл был «написал промпт → попробовал на паре примеров → задеплоил». Теперь появляется инструментарий для систематического eval до деплоя. В контексте роста числа agentic-систем — где агенты вызывают инструменты, работают с реальными данными и принимают последовательные решения — это уже не опциональная практика. Это инженерная гигиена.

Кейсы применения в бизнесе

B2B-SaaS стартап с аналитическим модулем. Если у вас есть фича «задай вопрос своим данным» — добавьте DSPy в CI. Соберите 50–100 реальных пользовательских вопросов, разметьте ожидаемые SQL-результаты, запустите eval перед каждым релизом. Промпт, который деградировал после очередного «небольшого улучшения», будет пойман до прода.

Корпорация с legacy SQL-базами. У вас скорее всего схемы с сотнями таблиц и неочевидными именами колонок. Именно там баг «угадывание колонок» проявляется сильнее. Решение прямое: включите колонки в схему, которую получает агент. DSPy поможет найти оптимальный формат — насколько детальная схема нужна, чтобы агент не терялся, но и не захлёбывался контекстом.

SMB в КР и СНГ. Небольшой e-commerce или логистика с базой на PostgreSQL или SQLite может использовать Datasette как быстрый способ дать команде аналитику без SQL-знаний. Это не корпоративный BI — это инструмент на несколько часов настройки. DSPy для такого масштаба может оказаться избыточным, но принцип «включи колонки в схему агента» применим напрямую к любому промпту сразу.

Кейсы в личной жизни

Разработчик, строящий AI-агента с доступом к данным. Возьмите DSPy, создайте eval-набор из 20–30 вопросов к вашей базе с ожидаемыми результатами. Запустите оценку текущего системного промпта. Высока вероятность найти проблемы, похожие на описанные: неполная схема, противоречивые инструкции, edge cases. Это займёт день — сэкономит недели отладки в production.

Data analyst или исследователь. Datasette позволяет быстро опубликовать любой CSV или SQLite как интерактивную базу, а Datasette Agent — задавать вопросы на естественном языке прямо к данным. Полезно для журналистов, исследователей, аналитиков, которые хотят быстро исследовать набор данных без написания SQL-запросов вручную.

Студент или начинающий разработчик. DSPy — практическое введение в оптимизацию LLM-систем. Берёте реальную задачу, например text-to-SQL на учебном датасете, пишете метрики, запускаете. Вы поймёте на практике, почему качество промпта зависит от структуры данных, а не только от формулировок — и это понимание дороже любого курса.

Как применить сегодня

  • Установите DSPy: pip install dspy. Если есть любой SQL-агент — начните с него, Datasette необязателен.
  • Соберите eval-набор: 20–50 пар «вопрос пользователя → ожидаемый SQL или результат». Реальные вопросы от пользователей работают лучше придуманных.
  • Запустите baseline: прогоните текущий промпт через DSPy-evaluator, зафиксируйте метрики — точность, количество tool calls, retry. Это точка отсчёта.
  • Проверьте схему в промпте: если агент получает только имена таблиц — добавьте колонки с типами. Это самое быстрое улучшение по кейсу Willison, применимое без DSPy прямо сейчас.
  • Делегируйте исследование агенту: задача «проверь и улучши промпт X с помощью DSPy» хорошо решается в асинхронном режиме Claude Code — вы получаете конкретные находки без ручной работы с трейсами.
← Все статьи