Skip to content

Latest commit

 

History

History
124 lines (75 loc) · 7.82 KB

README.md

File metadata and controls

124 lines (75 loc) · 7.82 KB

ikanam-ai Logo

Проект: Napoleon IT Sales агент для сервиса "Отзывы"

Архитектура решения

Архитектура решения

Схема работы сервиса

Схема работы сервиса

Система состоит из следующих серверов:

  • MongoDB
  • Сервер бизнес логики и аналитики
  • Сервер обработки email
  • Сервер Telegram-бота

Коммуникация между серверами осуществляется через MongoDB.

Из-за нехватки ресурсов для запуска машины с GPU в Яндекс.Облаке, LLM (Large Language Model) была развернута на собственном сервере. Сервер бизнес-логики и аналитики взаимодействует с LLM через соединение MongoDB, используя публичный IP-адрес.

О чем клиент может поговорить с Sales агентом?

  • Попросить перестать писать
  • Запросить презентацию продукта
  • Запросить демонстрацию продукта
  • Переадресовать агента на другой контакт (консультанта)
  • Попросить таймаут в общении (агент напомнит если таймаут вышел, но клиент о нас забыл)
  • Рекламировать возможности сервиса 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.

  1. Для запуска системы перейдите в папку src/services и выполните: docker compose -d up
  2. Для остановки системы: docker compose down
  3. Для первоначального старта системы, в БД необходимо записать информацию об email аккаунте и создать .env файл:
  4. Запустите контейнеры и убедитесь что Mongo контейнер работает (docker ps)
  5. Отредактируйте src/services/init_data.json
  6. Из папки src/services запустите docker run -it -v ./:/my --network=host mail_worker bash Откроется консоль в свежезапущенном контейнере
  7. cd /my && python3 populate_data.py
  8. Отключитесь от контейнер Ctrl-d
  9. Для мониторинга системы используются логи в докере: docker logs app_logic

Как добавить новый контакт, чтобы агент начал общение?

  1. Из папки src/services запустите docker run -it -v ./:/my --network=host mail_worker bash Откроется консоль в свежезапущенном контейнере
  2. cd /my/app_logic && python3 client_utils.py

Утилита выдаст Help. С помощью этой утилиты можно создавать новые контакты чтобы сервис начал общение, просматривать текущий статус клиента с историей общения, перезапустить общение с клиентом.

Запуск LLM через Ollama с API

Для интеграции LLM с вашим сервисом можно использовать Ollama API. Это позволит отправлять запросы к модели через HTTP.

Шаги для запуска LLM через API:

  1. Установите библиотеку Ollama:

     pip install ollama
    
  2. Загрузите модель:

     ollama pull qwen2:72b-instruct-q4_0
    
  3. Запустите сервер Ollama:

     ollama serve
    
  4. Для отправки запроса к модели через API, используйте команду curl:

     curl -X POST http://localhost:11434/api/generate -d '{
           "model": "qwen2:72b-instruct-q4_0",
           "prompt": "Расскажите подробнее о вашем сервисе"
         }'
    

Эта команда отправит запрос к локальному серверу Ollama, который вернет ответ модели на основе запроса в поле prompt.

Запуск через CLI

Также можно напрямую запустить LLM через командную строку:

  1. Запустите модель через CLI:

     ollama run qwen2:72b-instruct-q4_0
    
  2. Укажите необходимый запрос (prompt):

     ollama run qwen2:72b-instruct-q4_0 -p "Расскажите подробнее о вашем сервисе"
    

CLI-интерфейс удобен для быстрого тестирования и выполнения одиночных запросов напрямую к модели.

Примеры ответов LLM в Mongo Express

Пример 1.

Пример 1.

Пример 2.

Пример 2.