Skip to content

Cyber-Zhaba/SmartPartner

Repository files navigation

☎️ Умный напарник: мультиагентная LLM-система для поддержки операторов контакт-центра

Команда: Заходит как-то улитка в бар...


Мультиагентная система на базе языковых моделей, которая в реальном времени помогает оператору контакт-центра обрабатывать клиентские запросы.

Содержание

  1. Архитектура всего приложения
  2. Роль каждого компонента системы
  3. Агенты
  4. Задания ИИ агентов
  5. CRM | Оценка операторов (Quality assurance & Summary)
  6. Запуск
  7. API

📐 Архитектура всего приложения

flowchart TD
    User[<img src='https://www.svgrepo.com/show/525577/user-circle.svg' width='40' height='40' />]
    Nginx[<img src='https://www.logo.wine/a/logo/Nginx/Nginx-Logo.wine.svg' width='40' height='40' />]
    Back[<img src='https://icon.icepanel.io/Technology/svg/Go.svg' width='40' height='40' />]
    React[<img src='https://cdn.worldvectorlogo.com/logos/react-1.svg' width='40' height='40' />]
    Redis[<img src='https://upload.wikimedia.org/wikipedia/commons/6/64/Logo-redis.svg' width='40' height='40' />]
    AIAgents[<img src='https://www.svgrepo.com/show/376344/python.svg' width='40' height='40' />]
    Qdrant[<img src='https://qdrant.tech/img/brand-resources-logos/logo.svg' width='40' height='40' />]

    User --> Nginx
    Nginx --> User
    Nginx --> Back
    Back --> Nginx
    Back --> Redis
    Redis --> Back
    Redis --> AIAgents
    AIAgents --> Redis
    AIAgents --> API[MWS GPT API]
    API --> AIAgents
    AIAgents --> Qdrant
    Qdrant --> AIAgents


    Nginx --> React
    React -->|static files| Nginx
Loading

Роль каждого компонента системы

  • Nginx балансировщик и хост статических файлов фронтенда. Также позволяет масштабировать систему в ширину.
  • Frontend - интерфейс, написанный на React. Позволяет взаимодействовать с системой и получать подсказки от агентов.
  • Messenger Backend - бэкенд на Go, который отвечает за взаимодействие с фронтендом и Redis. Есть возможность создать сколько угодно реплик этого сервиса.
  • Redis - кэш и очередь сообщений. Используется для хранения запросов на обработку от пользователей.
  • AI Agents - сервис на Python, который обрабатывает запросы от пользователей, аркестрирует ИИ агентов и выполняет поиск в векторной базе данных.
  • Qdrant - векторная база данных, которая хранит векторные представления документов и позволяет быстро находить нужные данные по запросу.
  • MWS GPT API - API, который позволяет взаимодействовать с LLM. Используется для генерации ответов на запросы пользователей и агентов.

🤖 Агенты

Intent Agent

Агент, определяющий намерение пользователя. Он анализирует текстовые сообщения и определяет, с какой проблемой пользователь обращается в поддержку.

Knowledge Agent

Этот агент отвечает за предоставление релевантной информации пользователю. В его распоряжении находится инструмент для обращения в векторную базу данных, чтобы подобрать наиболее подходящую информацию из справки.

Emotion Agent

Данный агент анализирует сообщения пользователя и определяет его эмоциональное состояние. Он помогает подобрать правильный подход к пользователю, чтобы улучшить качество обслуживания.

Action Suggestion Agent

Агент, который помогает оператору сформировать ответ на сообщения пользователя. Он использует информацию от Intent, Knowledge и Emotion агентов, чтобы предложить оператору наиболее подходящий ответ.

Summary Agent

Данный агент отвечает за создание резюме диалога. Он анализирует сообщения диалога и работу предыдущих агентов, формируя краткое содержание, которое потом передается в CRM.

Quality Assurance Agent

Этот агент отвечает за контроль качества работы операторов. Он анализирует сообщения оператора и пользователя, а также контекст от прошлых агентов, чтобы определить как оператор справляется с задачей.

📓 Здесь вы можете посмотреть некоторые наши эксперименты по усовершенствованию агентов.

🔮 Задания ИИ агентов

Ниже можно увидеть как выглядит схема контекстов взаимодействия между заданиями для агентов.

ActionSuggestionCrew

flowchart TD
IntentTask --> ActionSuggestionTask
EmotionTask --> ActionSuggestionTask
KnowledgeTask --> ActionSuggestionTask
Loading

SummaryCrew

flowchart TD
IntentTask --> SummaryTask
EmotionTask --> SummaryTask
KnowledgeTask --> SummaryTask
Loading

QualityAssuranceCrew

flowchart TD
IntentTask --> QualityAssuranceTask
EmotionTask --> QualityAssuranceTask
KnowledgeTask --> QualityAssuranceTask
Loading

💡 ActionSuggestionCrew это группа агентов, которые помогают оператору отвечать пользователю в чате. Чтобы сформировать подходящий ответ, используется информация об эмоции, намерении и знаниях из справки.

📊 SummaryCrew это группа агентов, которая формирует резюме диалога ("issue_type", "client_sentiment", "resolution") и отправляет его в CRM. Для этого используются намерение, эмоция и знания из справки.

📈 QualityAssuranceCrew анализирует работу операторов и предлагает улучшения, делает выводы на основе намерения и настроения пользователя, а также данных из базы знаний. Результаты выполнения отправляется в CRM.

CRM | Оценка операторов (Quality assurance & Summary)

Поскольку не было предоставлено внешней CRM-системы, мы эмулируем вывод в подобную систему, записывая информацию в файл. Эту информацию в некоторых ситуациях не стоит предоставлять операторам поддержки, поэтому мы не сделали её вывод в пользовательском интерфейсе.

Для просмотра данных необходимо обратиться к Docker контейнеру с помощью приведённой ниже команды:

docker exec -it zadacha-168-ai_helper-1 cat crm_report.csv

🚀 Запуск

Для начала необходимо создать файл .env в корневой папке проекта (рядом с .env.template). Там необходимо обязательно указать MWS_API_KEY.

Остальные переменные окружения:

  • TEXT_MODEL название модели для генерации/обработки текста
  • MWS_BASE_URL Базовый URL API внешнего сервиса
  • VERBOSE Режим детального логирования (true/false) для ИИ агентов
  • QDRANT_URL Адрес векторной базы данных Qdrant
  • OTEL_SDK_DISABLED Отключает телеметрию CrewAI при значении true
  • REDIS_HOST Адрес Redis-сервера (например, имя контейнера или IP)
  • REDIS_PORT Порт для подключения к Redis
  • REDIS_HOST_PASSWORD Пароль для доступа к Redis
  • REDIS_QUEUE_NAME Название очереди задач в Redis

Для запуска вам понадобится docker, инструкция по установке тут

docker compose up

📡 API

Для взаимодействия с системой используется REST API. Ниже приведены основные эндпоинты:


📥 GET /allChats

Описание: Получить список всех чатов.

Пример ответа:

{
  "chats": [
    {
      "chatId": "string",
      "message": "string",
      "resolution": "string | null",
      "intent": "string",
      "emotion": "string",
      "datetime": "2011-10-05T14:48:00.000Z"
    }
  ]
}


📥 GET /getChat?chatId=string

Описание: Получить переписку по chatId.

Пример ответа:

{
  "messages": [
    {
      "messageId": "string",
      "chatId": "string",
      "role": "string",
      "message": "string",
      "datetime": "2011-10-05T14:48:00.000Z"
    }
  ]
}

📥 GET /getAiAnswer?chatId=string

Описание: Получить AI-ответ по chatId.

Пример ответа:

{
  "message": "string"
}

📥 GET /getCRMReport?chatId=string

Описание: Получить CRM-отчет по chatId.

Тело запроса:

{
  "chatId": "string"
}

Пример ответа:

{
  "issue_type": "string",
  "client_sentiment": "string",
  "resolution": "string",
  "summary": "string"
}

📥 GET /getAllCRMReports

Описание: Получить все CRM-отчеты.

Пример ответа:

[
    {
      "issue_type": "string",
      "client_sentiment": "string",
      "resolution": "string",
      "summary": "string"
    }
]

✉️ POST /newChat

Описание: Получить список всех чатов.

Тело запроса:

{
  "firstMessage": "string"
}

Пример ответа:

{
  "chatId": "string"
}

✉️ POST /newMessage

Описание: Отправить новое сообщение в существующий чат.

Тело запроса:

{
  "chatId": "string",
  "role": "string",
  "message": "string",
  "dateTime": "2011-10-05T14:48:00.000Z"
}

Пример ответа:

{
  "messageId": "string"
}

✉️ POST /endChat

Описание: Завершить чат.

Тело запроса:

{
  "chatId": "string"
}

About

Умный напарник: мультиагентная LLM-система для поддержки операторов контакт-центра. Проект выполнен в рамках МТС True Tech Hack 2025

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors