AI-автоматизація обробки вхідних звернень
Наш замовник — маркетплейс з 500+ операторами — тонув у потоці 50 000 звернень на добу. Ручне сортування займало до 15 хвилин, 30% звернень йшли не в той відділ, терміни SLA систематично порушувалися. Ми запропонували автоматизувати класифікацію та маршрутизацію за допомогою LLM. Через три місяці середній час відповіді впав з 12 хвилин до 40 секунд, а навантаження на першу лінію скоротилося на 60%. Економія на операційних витратах досягла мільйонів рублів на місяць — саме стільки коштувало утримання надлишкового штату.
Чому LLM-класифікація швидша та точніша за людей?
LLM обробляє запити за 1.2 секунди (latency p99) — у 12 разів швидше за оператора. При цьому точність маршрутизації сягає 98% проти 85% у людини. Вартість одного запиту через GPT-4o-mini — частки цента, що робить автоматизацію економічно виправданою при обсязі від 500 звернень на день. AI окупається за 2–3 місяці за рахунок зниження витрат на персонал.
Як влаштована омніканальна архітектура?
Архітектура побудована на паттерні Unified Orchestrator, який абстрагує канали зв'язку та передає запити через загальний конвеєр. Кожен канал (голос, чат, email) має свій процессор-адаптер, що перетворює сирі дані в єдиний формат IncomingRequest.
Детальна реалізація процессорів
from abc import ABC, abstractmethod
from dataclasses import dataclass
@dataclass
class IncomingRequest:
id: str
channel: str
raw_content: str
metadata: dict
customer_id: str = None
class RequestProcessor(ABC):
@abstractmethod
async def process(self, request: IncomingRequest) -> dict:
pass
class UnifiedRequestOrchestrator:
def __init__(self):
self.processors = {
"voice": VoiceRequestProcessor(),
"chat": ChatRequestProcessor(),
"email": EmailRequestProcessor(),
}
self.classifier = RequestClassifier()
self.router = RequestRouter()
async def handle(self, request: IncomingRequest) -> dict:
classification = await self.classifier.classify(request)
priority = self.calculate_priority(request, classification)
return await self.router.route(request, classification, priority)
AI-класифікатор звернень
В якості ядра використовуємо LLM з контекстним вікном 128K токенів — цього достатньо для аналізу довгих листів та історії діалогу. Модель працює в structured output mode: повертає JSON з полями intent, urgency, sentiment, entities. Це дозволяє напряму передавати результат в систему маршрутизації без пост-обробки.
CLASSIFICATION_SCHEMA = {
"type": "object",
"properties": {
"intent": {
"type": "string",
"enum": ["order_inquiry", "complaint", "technical_support",
"billing", "general_info", "cancellation", "compliment"]
},
"urgency": {"type": "string", "enum": ["critical", "high", "medium", "low"]},
"sentiment": {"type": "string", "enum": ["positive", "neutral", "negative", "angry"]},
"entities": {
"type": "object",
"properties": {
"order_id": {"type": "string"},
"product_name": {"type": "string"}
}
},
"summary": {"type": "string"},
"requires_human": {"type": "boolean"}
}
}
async def classify_request(text: str) -> dict:
response = await client.chat.completions.create(
model="gpt-4o-mini",
messages=[{
"role": "system",
"content": f"Класифікуй звернення клієнта. JSON за схемою."
}, {"role": "user", "content": text}],
response_format={"type": "json_object"}
)
return json.loads(response.choices[0].message.content)
Налаштування пріоритизації SLA
SLA-правила задаються матрично: комбінація intent + sentiment дає базовий пріоритет, а прапорець VIP подвоює швидкість реакції. Критичні звернення (скарга + негатив) потрапляють у чергу з максимальним часом очікування 60 секунд. Всі правила налаштовуються через конфіг і перечитуються on the fly без перезапуску сервісу.
PRIORITY_RULES = {
("critical", "angry"): {"score": 100, "max_wait_sec": 60},
("high", "negative"): {"score": 80, "max_wait_sec": 180},
("medium", "neutral"): {"score": 50, "max_wait_sec": 600},
("low", "positive"): {"score": 20, "max_wait_sec": 1800},
}
def calculate_sla(intent: str, sentiment: str, is_vip: bool) -> dict:
base = PRIORITY_RULES.get((urgency, sentiment),
{"score": 40, "max_wait_sec": 900})
if is_vip:
base["score"] += 30
base["max_wait_sec"] //= 2
return base
Робота з рідкісними сценаріями
Навіть при мінімальній розмітці (100–200 прикладів) модель узагальнює загальні патерни. Для рідкісних намірів використовуємо few-shot with retrieval — підтягуємо схожі кейси з векторної бази ChromaDB та додаємо їх у промпт. Якщо впевненість моделі нижче порогу 0.7 — звернення направляється оператору із запропонованою відповіддю. Така стратегія дає точність 98% навіть на довгому хвості.
Метрики оцінки якості
Ми відстежуємо precision, recall, F1 за кожним intent, а також час обробки та відсоток ескалацій. Щотижня проводимо валідацію на свіжій вибірці — якщо accuracy падає нижче 95%, запускаємо донавчання. Всі метрики доступні в дашборді Grafana.
| Метрика | Оператор | AI-система |
|---|---|---|
| Точність маршрутизації | 85% | 98% |
| Середній час відповіді | 12 хв | 40 сек |
| Частка ескалацій | 30% | 2% |
Запишіться на безкоштовну діагностику вашого потоку звернень — ми покажемо, яку економію принесе AI.
Процес впровадження
- Аналітика — аудит поточних потоків, збір розмічених кейсів.
- Проєктування — вибір моделі, проєктування схеми класифікації, інтеграція з CRM.
- Реалізація — розробка процессорів, класифікатора, роутера; налаштування SLA.
- Тестування — A/B-тест на 10% потоку, звірка accuracy та latency.
- Деплой — постановка в production, моніторинг, навчання операторів.
| Етап | Тривалість | Ключові артефакти |
|---|---|---|
| Аналітика | 1–2 тижні | Звіт по каналах, матриця intent’ів |
| Проєктування | 1 тиждень | Архітектура, обрана модель, схема роутингу |
| Реалізація | 2–3 тижні | Код процессорів, класифікатора, роутера |
| Тестування | 1 тиждень | Звіт A/B-тесту, показники SLA |
| Деплой | 1 тиждень | Моніторинг, документація, навчання |
Що входить в роботу
- Розробка — вихідний код всіх компонентів, Docker-образи, CI/CD пайплайн.
- Документація — архітектурна, API-специфікація (OpenAPI), керівництво оператора.
- Доступи — до репозиторію, дашбордів моніторингу (Grafana), хмарної інфраструктури.
- Навчання — 2–3 воркшопи для команди експлуатації.
- Підтримка — 3 місяці гарантійного супроводу (фіксація багів, консультації).
Терміни орієнтовно
Базова система (класифікатор + роутер) — від 2 до 3 тижнів. Повне омніканальне рішення з інтеграцією, SLA та моніторингом — від 2 до 3 місяців. Вартість розраховується індивідуально.
Ми реалізували понад 50 подібних інтеграцій, 5+ років займаємося промисловим AI. Якщо хочете оцінити економію на вашому потоці — напишіть нам: надішлемо кейс-калькулятор за 1 день. Отримайте консультацію по вашому кейсу — розповімо, як знизити навантаження на підтримку на 60%. Wikipedia: Large language model







