Разработка AI-системы подсказок оператору в реальном времени (Agent Assist)

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Разработка AI-системы подсказок оператору в реальном времени (Agent Assist)
Сложная
~1-2 недели
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Разработка AI-системы подсказок оператору в реальном времени (Agent Assist)

Agent Assist слушает разговор в реальном времени и выводит на экран оператора подсказки: ответы на вопросы клиента, следующий шаг по скрипту, предупреждение о негативной тональности. Снижает AHT на 15–25%, повышает FCR на 8–12%.

Архитектура Agent Assist

Call Audio → STT (Streaming) → NLU Pipeline → Suggestions Engine → Operator UI
                ↓                    ↓                ↓
          Live Transcript      Intent/Entities    Knowledge Base
          (100–300ms)                             CRM Context
                                                 Script State

Real-time NLU pipeline

import asyncio
from dataclasses import dataclass

@dataclass
class AssistSuggestion:
    type: str       # answer | next_step | warning | document | offer
    content: str
    confidence: float
    source: str = None  # knowledge base URL, CRM field, etc.

class AgentAssistProcessor:
    def __init__(self):
        self.kb = KnowledgeBase()
        self.crm = CRMConnector()
        self.llm = AsyncOpenAI()

    async def process_utterance(
        self,
        speaker: str,      # "customer" | "agent"
        text: str,
        session: dict
    ) -> list[AssistSuggestion]:
        suggestions = []

        if speaker == "customer":
            # Клиент задал вопрос — ищем ответ
            if "?" in text or await self.is_question(text):
                kb_results = await self.kb.search(text, top_k=3)
                if kb_results:
                    suggestions.append(AssistSuggestion(
                        type="answer",
                        content=kb_results[0]["answer"],
                        confidence=kb_results[0]["score"],
                        source=kb_results[0]["url"]
                    ))

            # Детектируем жалобу
            sentiment = await self.analyze_sentiment(text)
            if sentiment["label"] == "negative" and sentiment["score"] > 0.8:
                suggestions.append(AssistSuggestion(
                    type="warning",
                    content="Клиент выражает недовольство. Рекомендуется эмпатийная реакция.",
                    confidence=sentiment["score"]
                ))

        # Следующий шаг по скрипту
        next_step = await self.get_next_script_step(session)
        if next_step:
            suggestions.append(AssistSuggestion(
                type="next_step",
                content=next_step,
                confidence=1.0
            ))

        return suggestions

База знаний с семантическим поиском

from sentence_transformers import SentenceTransformer
import faiss
import numpy as np

class KnowledgeBase:
    def __init__(self):
        self.encoder = SentenceTransformer("intfloat/multilingual-e5-large")
        self.index = faiss.IndexFlatIP(1024)
        self.articles = []

    def add_article(self, question: str, answer: str, url: str = None):
        embedding = self.encoder.encode(
            f"query: {question}", normalize_embeddings=True
        )
        self.index.add(embedding.reshape(1, -1))
        self.articles.append({"question": question, "answer": answer, "url": url})

    async def search(self, query: str, top_k: int = 3) -> list[dict]:
        embedding = self.encoder.encode(
            f"query: {query}", normalize_embeddings=True
        )
        scores, indices = self.index.search(embedding.reshape(1, -1), top_k)
        results = []
        for score, idx in zip(scores[0], indices[0]):
            if score > 0.7 and idx >= 0:
                results.append({**self.articles[idx], "score": float(score)})
        return results

UI для оператора (React)

const AgentAssistPanel: React.FC<{sessionId: string}> = ({sessionId}) => {
  const [suggestions, setSuggestions] = useState<Suggestion[]>([]);

  useEffect(() => {
    const ws = new WebSocket(`wss://assist.api/session/${sessionId}`);
    ws.onmessage = (e) => setSuggestions(JSON.parse(e.data));
    return () => ws.close();
  }, [sessionId]);

  return (
    <aside className="agent-assist-panel">
      <h3>Подсказки AI</h3>
      {suggestions.map(s => <SuggestionCard key={s.id} suggestion={s} />)}
    </aside>
  );
};

Сроки: Agent Assist с KB и real-time STT — 6–8 недель. С полной CRM-интеграцией и A/B тестами — 3–4 месяца.