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-диспетчера в вашу службу. Получите консультацию по оптимизации диспетчеризации. Наш опыт: сертифицированные инженеры, работа с крупными телеком-операторами.







