AI-диспетчер — цифровой сотрудник для координации задач
Диспетчерская служба часто тонет в заявках. Операторы вручную перебирают почту и чаты, назначают исполнителей на глаз. SLA постоянно срываются. Такая ситуация знакома многим. Мы сталкивались с ней в телекоме, где ежедневно обрабатывалось 800 заявок на технические выезды. Ручная диспетчеризация не справлялась: среднее время назначения задачи составляло 12 минут, перегрузка отдельных инженеров достигала 30%, а соблюдение SLA держалось на уровне 71%. После внедрения AI-диспетчера время назначения сократилось до 45 секунд, соблюдение SLA выросло до 89%, а нагрузка на инженеров выровнялась. Модель классификации дообучается на ваших исторических данных, что повышает точность с каждым месяцем.
Наш цифровой диспетчер автоматически принимает входящие заявки, классифицирует их, назначает исполнителей с учётом загрузки и компетенций, отслеживает выполнение и эскалирует просроченные задачи. Всё это — без участия человека. Мы внедряем такие системы под ключ: от настройки классификатора до интеграции с вашей CRM.
Как AI-диспетчер маршрутизирует заявки?
Ядро системы — интеллектуальный intake и маршрутизация. Процесс состоит из трёх шагов: классификация заявки, скоринг исполнителей, мониторинг выполнения. Рассмотрим на примере кода:
from openai import AsyncOpenAI from pydantic import BaseModel from typing import Literal, Optional client = AsyncOpenAI() class TaskClassification(BaseModel): category: str priority: Literal["critical", "high", "normal", "low"] required_skill: str estimated_duration_minutes: int location: Optional[str] sla_hours: float special_requirements: list[str] class DispatcherAgent: def __init__(self, team_db, task_db): self.team_db = team_db self.task_db = task_db async def process_incoming_request(self, request: dict) -> dict: cls = await client.beta.chat.completions.parse( model="gpt-4o", messages=[{ "role": "system", "content": "Классифицируй входящую заявку для диспетчеризации. Определи приоритет, категорию, необходимые компетенции и ожидаемое время выполнения." }, { "role": "user", "content": f"Заявка: {request['description']}\nОт: {request['client']}\nКонтакт: {request['contact']}" }], response_format=TaskClassification, temperature=0, ) task_class = cls.choices[0].message.parsed assignee = await self.select_best_assignee(task_class, request.get("location")) task = await self.task_db.create({ "title": request.get("title", f"Заявка от {request['client']}"), "description": request["description"], "category": task_class.category, "priority": task_class.priority, "required_skill": task_class.required_skill, "assignee_id": assignee["id"] if assignee else None, "sla_deadline": datetime.now() + timedelta(hours=task_class.sla_hours), "status": "assigned" if assignee else "pending", }) if assignee: await self.notify_assignee(assignee, task) return {"task_id": task["id"], "assignee": assignee, "sla": task["sla_deadline"]} async def select_best_assignee(self, task, location): available = await self.team_db.get_available(skill=task.required_skill, shift="current") if not available: return None scored = [] for person in available: score = 100 current_load = await self.task_db.count_active(person["id"]) score -= current_load * 10 if location and person.get("current_location"): distance = calculate_distance(location, person["current_location"]) score -= min(distance / 10, 30) if task.required_skill in person.get("specializations", []): score += 20 scored.append({**person, "score": score}) return max(scored, key=lambda x: x["score"]) if scored else None На первом шаге модель GPT-4o анализирует описание заявки и извлекает категорию, приоритет, требуемые навыки. Алгоритм скоринга использует базу 100 баллов: штраф за загрузку (10 баллов за активную задачу) и дистанцию (до 30 баллов), бонус за специализацию (20 баллов). Это обеспечивает оптимальное распределение с учётом текущей ситуации.
Детали алгоритма скоринга
Алгоритм также учитывает историю выполненных задач исполнителя, его рейтинг и доступность по графику. Модель может быть дополнена бизнес-правилами, например, приоритетом для VIP-клиентов или обязательным наличием сертификата.
Почему SLA-мониторинг критичен?
Любая задача имеет Service Level Agreement (SLA) — срок выполнения. Если его нарушить, страдает репутация бизнеса. Наш AI-диспетчер не просто создаёт задачи — он следит за ними в реальном времени. Каждые 15 минут система проверяет оставшееся время до дедлайна. Если до SLA меньше часа — отправляется напоминание исполнителю, меньше 30 минут — срочное уведомление, при нарушении — эскалация руководителю. Код мониторинга:
class SLAMonitor: async def check_and_escalate(self): tasks = await self.task_db.get_active_tasks() now = datetime.now() for task in tasks: sla_deadline = task["sla_deadline"] time_to_sla = (sla_deadline - now).total_seconds() / 3600 if time_to_sla < 0: await self.handle_sla_breach(task) elif time_to_sla < 0.5: await self.send_urgent_reminder(task) elif time_to_sla < 1 and task["status"] == "assigned": await self.escalate_to_supervisor(task, reason="task_not_started") async def handle_sla_breach(self, task): breach_message = await client.chat.completions.create( model="gpt-4o-mini", messages=[{ "role": "system", "content": "Создай сообщение об эскалации нарушения SLA для руководителя. Краткое, конкретное." }, { "role": "user", "content": f"Задача: {task['title']}, нарушение SLA на {abs(int((datetime.now() - task['sla_deadline']).total_seconds() / 60))} мин" }], ) await slack_client.post_message( channel="#dispatcher-escalations", text=f"🚨 SLA нарушен:\n{breach_message.choices[0].message.content}", ) await self.task_db.update(task["id"], {"sla_status": "breached"}) Как обучить классификатор заявок?
Для обучения классификатора мы используем ваши исторические данные. Этапы:
- Сбор датасета: не менее 500 размеченных заявок.
- Предобработка: очистка, лемматизация.
- Тюнинг модели: fine-tuning GPT-4o или другого LLM на задачах классификации.
- Валидация: проверка accuracy на отложенной выборке (не менее 85%).
- Развёртывание: загрузка модели в SageMaker или Vertex AI.
Какие результаты показал AI-диспетчер в телекоме?
Из нашей практики: телеком-оператор с полевыми инженерами, 800 заявок на технические выезды в день. До внедрения — ручное распределение, 12 минут на назначение задачи, 71% соблюдения SLA. После — AI-диспетчер.
| Параметр | До | После |
|---|---|---|
| Время назначения задачи | 12 мин | 45 сек |
| Соблюдение SLA | 71% | 89% |
| Перегрузка инженеров | ~30% неравномерность | -34% (равномерное распределение) |
AI-диспетчер назначает задачи в 16 раз быстрее человека, а соблюдение SLA повышается на 18 процентных пунктов. Система принимает заявки через чат, email, API CRM; классифицирует их по 8 типам (подключение, ремонт, замена оборудования); назначает инженера с учётом навыков, загрузки, геолокации; контролирует SLA (4 ч для критических, 24 ч для стандартных); автоматически напоминает и эскалирует просроченные задачи.
Что входит в разработку AI-диспетчера
- Классификатор заявок: настройка категорий, приоритетов, необходимых навыков
- Алгоритм назначения: скоринг исполнителей по загрузке, навыкам, геолокации
- SLA-мониторинг: автоматические проверки, напоминания, эскалации
- Интеграция: с CRM, мессенджерами (Slack/Telegram), API уведомлений
- Документация: описание архитектуры, инструкции для администратора
- Обучение: тренировка модели классификации на ваших данных
- Поддержка: гарантийное обслуживание 3 месяца после запуска
Сроки внедрения
| Этап | Длительность |
|---|---|
| Классификатор заявок | 1–2 недели |
| Алгоритм назначения | 1–2 недели |
| SLA-мониторинг и эскалации | 1 неделя |
| Интеграция с CRM и уведомлениями | 1–2 недели |
| Итого | 4–7 недель |
Свяжитесь с нами, чтобы обсудить внедрение AI-диспетчера в вашу службу. Получите консультацию по оптимизации диспетчеризации. Наш опыт: сертифицированные инженеры, работа с крупными телеком-операторами.







