ИИ-агент для классификации сообщений пользователей и автоматической обработки:
- Вопросы — обрабатываются с помощью RAG
- Запросы — изменяют данные пользователя
- Жалобы — сохраняются в файл
support_filter_bot/
├── app
│ ├── action_handler.py
│ ├── classifier.py
│ ├── main.py
│ └── rag_handler.py
├── data
│ ├── complaints
│ │ └── complaint_123_1754324076.json
│ ├── qa_pairs.json
│ └── users.json
├── pyproject.toml
├── qdrant_storage
├── README.md
├── requirements.txt
├── train
│ ├── fine_tuned_classifier
│ ├── results
│ ├── train_classifier.py
│ └── train_data
│ └── training_data.json
└── uv.lock
# Если есть uv
uv pip install
# Иначе
pip install -r requirements.txt# Если есть uv
uv run train/train_classifier.py # Для обучения модели и сохранения весов
uv run app/main.py # Запуск скрипта
# Иначе
python train/train_classifier.py
python app/main.pyПри первом запуске:
- Инициализируется база Qdrant с вопросами
- Загружается классификатор
- Предлагается ввести сообщение для тестирования
После запуска введите сообщение, и система автоматически:
- Определит категорию (вопрос/запрос/жалоба)
- Выполнит соответствующее действие
- Покажет результат
Жалобы сохраняются в data/complaints/ в формате JSON
Данные пользователей хранятся в data/users.json
Вопрос: "Как я могу сменить пароль?"
Запрос: "Пожалуйста, измените мой статус на премиум"
Жалоба: "Служба поддержки не отвечает уже 24 часа"
transformers- для работы с языковыми моделямиtorch- основа для нейронных сетейsentence-transformers- для создания embeddingsqdrant-client- клиент для векторной базы данныхscikit-learn- для метрик обученияnumpy- для числовых операций
Т.к. проект создан исключительно для демонстрации возможностей, зачастую категории могут распознаваться неверно.
Категория "жалоба" плохо распознается без явного ввода слова "жалоба" в тексте сообщения
- Улучшение классификатора - расширение обучающего датасета
- Улучшение RAG - расширение списка вопросов в qa_pairs.json
- Улучшение обработки запросов - добавление новых функций в action_handler.py