- Telegram-бот для аналитики по видео на основе задач на естественном языке
-
Развернутая БД
- Таблицы VideoSnapshot, Video
- PostgreSQL с SQLAlchemy ORM
- Парсинг данных с JSON
-
Backend логика
- Работа с LLM асинхронно
- Обработка TEXT -> SQL/SQL -> TEXT
- Автоматизированный скрипт для загрузки данных с JSON
-
Телеграм бот
- Асинхроннный бот aiogram
- Принимает сообщения на русском языке и далее строит SQL запросы
- В ответе одно число
git clone https://github.com/N1chegons/AnalyticsBot.git
cd AnalyticsBot2. Создайте свой .env и измените переменные, исходя из ваших настроек для работы с переменными окружения на основе .env.example. Составляющее файла:
DB_HOST=localhost
DB_PORT=5432
DB_NAME=my_db
DB_USER=user
DB_PASS=pass
API_KEY_LLM=your_github_token
TELEGRAM_API_TOKEN=your_telegram_token
- Telegram Token — у @BotFather(/newbot - 'Name' - YourName_bot - Copy field(Use this token to access the HTTP API: ))
- GitHub Token — в настройках GitHub (поставьте галочку на
read:user)
docker-compose up --build[Пользователь] → Текстовый запрос ("Сколько видео?")
↓
[LLM Service] → Промпт + схема БД + few-shot examples
↓
[GitHub Models] → Генерирует SQL (gpt-4o-mini)
↓
[Query Service] → Передает SQL в репозиторий
↓
[Repository] → Выполняет SELECT запрос через asyncpg
↓
[БД PostgreSQL] → Возвращает число
↓
[Telegram Bot] → Отвечает пользователю ("📊 42")
- Только SELECT
- Возвращать ОДНО число
- Формат дат: YYYY-MM-DD
- Удаление markdown (```sql)
- Закрытие кавычек
- Очистка от пояснений
- Блокировка DROP/DELETE/UPDATE
- Только чтение
- Промпт содержит всю схему — модель не гадает, а знает точные имена таблиц
- Примеры покрывают 80% кейсов — даты, COUNT, SUM, DISTINCT
- Низкая температура (0.1) — детерминированные ответы без галлюцинаций
- Валидация на выходе — кавычки, опасные операторы
- Богдан
- GitHub: N1chegons
- Telegram: @Nichegons
- Email: nichegons@gmail.com