Проект разработан в рамках хакатона, посвященного созданию ИИ-ассистента для Портала поставщиков.
Система состоит из следующих компонентов:
-
Основной бот (bot.py) - Telegram-бот, который отвечает на вопросы пользователей, используя базу знаний.
-
База данных (SQLite) - Хранит взаимодействия с пользователями, оценки и тематики запросов.
-
Административный бот (admin_bot.py) - Отдельный Telegram-бот для администраторов, предоставляющий статистику использования системы.
-
Модуль логирования (telegram_logger.py) - Отправляет логи активности в приватный Telegram-канал.
pip install -r requirements.txtСоздайте файл .env в корневой директории проекта со следующими переменными:
# Основные настройки
DATABASE_FILE=db.sqlite3
BOT_TOKEN=your_main_bot_token
# Настройки админ-бота
ADMIN_BOT_TOKEN=your_admin_bot_token
# Настройки логирования
TELEGRAM_CHANNEL_ID=-100your_channel_id
python bot.pypython admin_bot.py- Принимает вопросы пользователей и отвечает на них
- Предоставляет возможность оценить ответ (лайк/дизлайк)
- Сохраняет историю взаимодействий в базе данных
Предоставляет статистику:
- Общее количество запросов
- Количество лайков и дизлайков
- Топ-5 самых популярных вопросов по количеству лайков
В приватный Telegram-канал отправляются:
- Все новые вопросы пользователей
- Ответы бота
- Информация об оценках (лайк/дизлайк)
Хранит все взаимодействия между пользователем и ботом:
interaction_id- Уникальный ID взаимодействияuser_telegram_id- Telegram ID пользователяtimestamp- Время сообщенияis_from_user- Флаг: от пользователя (1) или от бота (0)message_text- Текст сообщенияrequest_interaction_id- ID запроса, на который дан ответmatched_kb_id- ID записи из базы знаний, используемой для ответаsimilarity_score- Оценка релевантности ответаassigned_theme_id- ID темы запроса
Хранит оценки ответов бота:
rating_id- Уникальный ID оценкиinteraction_id- ID взаимодействия (ответа), который был оцененuser_telegram_id- Telegram ID пользователя, поставившего оценкуrating_value- Значение оценки (1 для лайка, -1 для дизлайка)timestamp- Время оценки
Хранит информацию о темах запросов:
theme_id- Уникальный ID темыtheme_name- Название темыquery_count- Количество запросов по данной темеaverage_rating- Средняя оценка ответов по темеlast_updated- Время последнего обновления