Система состоит из следующих серверов:
- MongoDB
- Сервер бизнес логики и аналитики
- Сервер обработки email
- Сервер Telegram-бота
Коммуникация между серверами осуществляется через MongoDB.
Из-за нехватки ресурсов для запуска машины с GPU в Яндекс.Облаке, LLM (Large Language Model) была развернута на собственном сервере. Сервер бизнес-логики и аналитики взаимодействует с LLM через соединение MongoDB, используя публичный IP-адрес.
- Попросить перестать писать
- Запросить презентацию продукта
- Запросить демонстрацию продукта
- Переадресовать агента на другой контакт (консультанта)
- Попросить таймаут в общении (агент напомнит если таймаут вышел, но клиент о нас забыл)
- Рекламировать возможности сервиса Napoleon IT Отзывы
В текущей реализации, при ответе на письма агента нужно удалять историю общения иначе агент может не точно отвечать.
P.S. Мы знаем как это исправить в будущем релизе.
Телеграм предоставляет два варианта API:
- API который предоставляет доступ ко всем функциям Телеграмма, которые может совершать пользователь из приложения
- API для телеграмм бота
Телеграмм бот имеет ограничения
- Бот не может сам инициировать общение с клиентом. Из-за этого ограничения клиент должен самостоятельно начать общение с ботом, что не подходит для Sales агента.
Мы реализовали доступ к телеграмм через полный API (см. src/services/tg_processor/tg_server), но Телеграмм заблокировал наши демонстрационные аккаунты. Поэтому в рамках хакатона мы реализовали альтернативный вариант API для бота (src/services/tg_processor/bot.py).
Из-за этого потенциальному "клиенту" необходимо самостоятельно найти бота по ссылке или @NapoleonIT_Sales_Agent_test_bot и выдать комманду /start.
Для перезапуска общения пользователь всегда может отправить команду /start.
P.S. В варианте с email каналом коммуникации, система сама отправляет инициирующее сообщение.
Каждый сервер системы запускается в собственном Docker контейере. Управдение контейнерами реализовано через docker-compose.
- Для запуска системы перейдите в папку src/services и выполните:
docker compose -d up
- Для остановки системы:
docker compose down
- Для первоначального старта системы, в БД необходимо записать информацию об email аккаунте и создать .env файл:
- Запустите контейнеры и убедитесь что Mongo контейнер работает (
docker ps
) - Отредактируйте src/services/init_data.json
- Из папки src/services запустите
docker run -it -v ./:/my --network=host mail_worker bash
Откроется консоль в свежезапущенном контейнере cd /my && python3 populate_data.py
- Отключитесь от контейнер Ctrl-d
- Для мониторинга системы используются логи в докере:
docker logs app_logic
- Из папки src/services запустите
docker run -it -v ./:/my --network=host mail_worker bash
Откроется консоль в свежезапущенном контейнере cd /my/app_logic && python3 client_utils.py
Утилита выдаст Help. С помощью этой утилиты можно создавать новые контакты чтобы сервис начал общение, просматривать текущий статус клиента с историей общения, перезапустить общение с клиентом.
Для интеграции LLM с вашим сервисом можно использовать Ollama API. Это позволит отправлять запросы к модели через HTTP.
-
Установите библиотеку Ollama:
pip install ollama
-
Загрузите модель:
ollama pull qwen2:72b-instruct-q4_0
-
Запустите сервер Ollama:
ollama serve
-
Для отправки запроса к модели через API, используйте команду curl:
curl -X POST http://localhost:11434/api/generate -d '{ "model": "qwen2:72b-instruct-q4_0", "prompt": "Расскажите подробнее о вашем сервисе" }'
Эта команда отправит запрос к локальному серверу Ollama, который вернет ответ модели на основе запроса в поле prompt.
Также можно напрямую запустить LLM через командную строку:
-
Запустите модель через CLI:
ollama run qwen2:72b-instruct-q4_0
-
Укажите необходимый запрос (prompt):
ollama run qwen2:72b-instruct-q4_0 -p "Расскажите подробнее о вашем сервисе"
CLI-интерфейс удобен для быстрого тестирования и выполнения одиночных запросов напрямую к модели.