SQL Agent - Документация
Краткий обзор
SQL Agent — это CLI-приложение для работы с базами данных на естественном языке. Пользователь вводит запрос на обычном языке, а интеллектуальный агент на основе LLM преобразует его в SQL и выполняет против подключённой базы данных.
Основные возможности
- Естественный язык → SQL: Преобразование запросов на русском или английском языке в SQL-запросы
- Поддержка разных СУБД: PostgreSQL, MySQL, SQLite
- Множество LLM-провайдеров: OpenAI, Anthropic Claude, DeepSeek, Ollama (локальный), Groq
- Безопасность: Режим только-для-чтения по умолчанию, валидация запросов, шифрование учётных данных
- Профили подключений: Сохранение и управление несколькими базами данных
- История запросов: Журнал выполненных запросов с результатами
Пример использования
sql_agent connect --url "postgresql://user:pass@localhost/mydb"
> покажи всех пользователей, зарегистрированных за последний месяц
SQL: SELECT * FROM users WHERE created_at >= NOW() - INTERVAL '1 month';
[результат в виде таблицы]
> какая средняя сумма заказа по категориям?
SQL: SELECT category, AVG(amount) FROM orders GROUP BY category;
[результат в виде таблицы]
Бизнес-обзор
Модель монетизации
SQL Agent — это micro-SaaS продукт с лицензионной моделью:
| Тариф |
Цена |
Особенности |
| Free |
Бесплатно |
50 запросов/день, 1 подключение, только SQLite |
| Personal |
$9.99/мес |
500 запросов/день, 3 подключения, все СУБД |
| Professional |
$29.99/мес |
5000 запросов/день, 10 подключений, аналитика производительности |
| Enterprise |
По запросу |
Без ограничений, выделенная поддержка |
Архитектура продукта
┌─────────────────────────────────────────────────────────────────┐
│ Пользователь │
└─────────────────────────────────────────────────────────────────┘
│ │
│ Покупка лицензии │ Использование CLI
▼ ▼
┌─────────────────────────┐ ┌─────────────────────────────┐
│ Веб-приложение │ │ SQL Agent CLI │
│ (sqlagent.io) │ │ │
│ │ │ • Валидация лицензии │
│ • Регистрация │ ◄─────► │ • NL → SQL конвертация │
│ • Оплата (YooKassa) │ HTTPS │ • Подключение к БД │
│ • Генерация ключей │ │ • Выполнение запросов │
│ • Скачивание CLI │ │ • Форматирование │
└─────────────────────────┘ └─────────────────────────────┘
Путь пользователя
- Регистрация: Пользователь создаёт аккаунт на sqlagent.io
- Выбор тарифа: Выбирает подходящий план и оплачивает через YooKassa
- Получение ключа: Система генерирует уникальный API-ключ (формат: XXXX-XXXX-XXXX-XXXX)
- Установка CLI: Скачивает установщик для своей ОС
- Активация: Выполняет
sql_agent login <api-key>
- Работа: Подключается к БД и выполняет запросы на естественном языке
Целевая аудитория
- Аналитики данных — быстрый доступ к данным без знания SQL
- Менеджеры продукта — получение метрик без помощи разработчиков
- Разработчики — ускорение написания сложных SQL-запросов
- Небольшие команды — единый инструмент для работы с данными
Технический обзор
Стек технологий
| Компонент |
Технология |
Назначение |
| CLI Framework |
Typer + Rich |
Интерфейс командной строки и форматирование |
| LLM Agent |
LangGraph |
Конечный автомат для обработки запросов |
| LLM Providers |
LangChain |
Абстракция над OpenAI, Anthropic, Ollama и др. |
| Database ORM |
SQLAlchemy |
Подключение к БД и интроспекция схемы |
| Packaging |
PyInstaller |
Сборка исполняемых файлов |
Архитектура CLI-приложения
cli_app/
├── main.py # Точка входа, команды Typer, REPL-сессия
├── agent.py # LangGraph-агент с LLM-интеграцией
├── database.py # SQLAlchemy-менеджер подключений
├── query_executor.py # Безопасное выполнение запросов
├── config.py # Конфигурация и профили
└── license_validator.py # HTTP-клиент для валидации лицензии
Обработка запросов (LangGraph Workflow)
┌─────────────────┐
│ Ввод │
│ пользователя │
└────────┬────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐
│ analyze_input │────►│ Это SQL или │
│ │ │ естественный │
└────────┬────────┘ │ язык? │
│ └─────────────────┘
│
[если NL]
│
▼
┌─────────────────┐
│ generate_sql │ LLM генерирует SQL
│ │ на основе схемы БД
└────────┬────────┘
│
▼
┌─────────────────┐
│ validate_query │ Проверка безопасности:
│ │ - Блокировка DROP, TRUNCATE
│ │ - Добавление LIMIT
└────────┬────────┘
│
▼
┌─────────────────┐
│ format_response│ Форматирование
│ │ результата
└─────────────────┘
Поддерживаемые LLM-провайдеры
| Провайдер |
Модель по умолчанию |
Переменная окружения |
| OpenAI |
gpt-4 |
OPENAI_API_KEY |
| Anthropic |
claude-3-sonnet |
ANTHROPIC_API_KEY |
| DeepSeek |
deepseek-chat |
DEEPSEEK_API_KEY |
| Groq |
mixtral-8x7b |
GROQ_API_KEY |
| Ollama |
llama2 |
— (локальный) |
Конфигурация провайдера
sql_agent configuration llm.provider --value anthropic
sql_agent configuration llm.model --value claude-3-sonnet
sql_agent configuration llm.provider --value ollama
sql_agent configuration llm.model --value llama2
Безопасность
Защита запросов
- Режим только-для-чтения: По умолчанию блокируются INSERT, UPDATE, DELETE
- Блокировка опасных операций: DROP, TRUNCATE, ALTER, CREATE
- Таймаут: 30 секунд на выполнение запроса
- Автоматический LIMIT: Добавляется если отсутствует
Валидация лицензии
- Режим strict: Требует сетевое подключение для проверки
- Режим safe: Позволяет офлайн-работу с предупреждением
CLI-команды
| Команда |
Описание |
Требует лицензию |
login <api-key> |
Авторизация с API-ключом |
Нет |
logout |
Удаление сохранённого ключа |
Нет |
connect --url <url> |
Подключение к БД |
Да |
use-profile <name> |
Использование сохранённого профиля |
Да |
profiles |
Список профилей |
Нет |
delete-profile <name> |
Удаление профиля |
Нет |
configuration |
Просмотр/изменение настроек |
Нет |
history |
История запросов |
Нет |
Интерактивные команды (внутри сессии)
| Команда |
Описание |
help |
Справка по командам |
schema |
Схема базы данных |
insights <table> |
AI-анализ таблицы |
history |
Последние 5 запросов |
clear |
Очистка истории диалога |
exit |
Выход из сессии |
Сборка и распространение
pip install pyinstaller
pyinstaller packaging/sql_agent.spec
./dist/sql_agent --help
Поддерживаемые платформы
- macOS: PKG-установщик, Homebrew
- Windows: EXE, Scoop
- Linux: DEB, RPM, TAR.GZ
Веб-приложение (WebSQLAgent)
Серверная часть на Django для:
- Управления пользователями и лицензиями
- Приёма платежей через YooKassa
- Распространения установщиков
- Отслеживания активаций устройств
API-эндпоинты
| Метод |
URL |
Описание |
| POST |
/api/validate-license/ |
Валидация API-ключа |
| GET |
/api/license-info/ |
Информация о лицензии |
| GET |
/api/downloads/ |
Список установщиков |
| GET |
/download/<platform>/ |
Скачивание установщика |
Зависимости
typer>=0.9.0 # CLI-фреймворк
rich>=13.0.0 # Форматирование терминала
langgraph>=0.2.0 # Конечный автомат агента
langchain-core>=0.3.0 # Абстракции LLM
sqlalchemy>=2.0.0 # ORM и подключение к БД
cryptography>=41.0.0 # Шифрование Fernet
requests>=2.31.0 # HTTP-клиент
sqlparse>=0.4.0 # Парсинг SQL
# Провайдеры LLM
langchain-openai>=0.1.0
langchain-anthropic>=0.1.0
langchain-ollama>=0.1.0
langchain-groq>=0.1.0
Ограничения
- Таймаут: Использует SIGALRM (только Unix, не работает на Windows)
- История запросов: Не зашифрована (только учётные данные)
- Одна сессия: Одновременно одно подключение к БД
- Кэш схемы: Не обновляется автоматически во время сессии
Контакты и поддержка