Разработка Voice AI Agent для обработки звонков
Ручная обработка повторяющихся звонков — проверка статуса заказа, запись на приём, перенос доставки — забивает каналы и увеличивает AHT до 8 минут. Операторы выгорают, клиенты уходят к конкурентам после 3 минут ожидания. Voice AI Agent берёт на себя до 80% таких диалогов, работая в реальном времени с LLM, STT/TTS и инструментами.
Мы создаём голосового ассистента, который ведёт полноценные переговоры: понимает контекст, задаёт уточняющие вопросы, принимает решения, вызывает CRM и базы данных, завершает диалог результатом. Наш опыт — 5+ лет в NLP и более 30 внедрений в ритейле, логистике и телемедицине.
Главная боль бизнеса — низкая пропускная способность колл-центра в пиковые часы. Voice AI Agent обрабатывает звонки без участия человека, сокращая нагрузку на операторов и уменьшая время ожидания клиента. При этом диалоговая система не следует жёсткому скрипту, а адаптируется к запросу: например, при звонке о задержке доставки агент проверит статус в CRM, предложит перенести дату и создаст задачу курьеру — всё в одном разговоре. В результате Containment Rate вырастает с типичных 20–30% до 55–65%, а среднее время обработки сокращается на 60%.
В одном из проектов для логистической компании агент обрабатывал 1500 звонков в день, из которых 68% завершились без переключения на оператора, а среднее время обработки сократилось с 6 до 2 минут. Средняя экономия на одном звонке достигает ₽35, а при нагрузке 10 000 звонков в месяц — ₽350 000 по сравнению с традиционным контакт-центром.
Архитектура Voice AI Agent
Telephony (Twilio/Voximplant)
↓
WebSocket Bridge
↓
STT (Deepgram/Whisper)
↓
Conversation Manager
├── State Machine
├── LLM (GPT-4o)
├── Tool Registry (CRM, DB, APIs)
└── Context Window
↓
TTS (ElevenLabs/OpenAI)
↓
Audio Back to Call
Детали компонентов
WebSocket Bridge конвертирует аудиопоток в текст и обратно, поддерживая до 100 одновременных звонков на одной инстанции. Conversation Manager управляет state machine с переходами на основе интентов, а Tool Registry регистрирует внешние функции, доступные LLM для вызова.Почему GPT-4o, а не открытая модель?
GPT-4 обеспечивает естественность диалога и низкий уровень галлюцинаций. При тестах на наборе из 500 звонков она показала Containment Rate на 18% выше, чем LLaMA 3. Для сценариев с высокой вариативностью запросов (например, техподдержка) это критично. Открытые модели уместны для узких сценариев с жёстким скриптом — тогда используем fine-tuned Mistral или Qwen с квантизацией INT4. По нашим замерам, GPT-4o лучше open-source моделей в сценариях с нестандартными запросами — False Transfer Rate ниже в 2 раза.
Как мы реализуем интеграцию с телефонией?
Базовый связующий слой — WebSocket Bridge между провайдером телефонии (Twilio/Voximplant) и Conversation Manager. На этом этапе происходит конвертация аудиопотока в текст (STT) и обратно. Пример интеграции с Twilio:
from twilio.rest import Client
from twilio.twiml.voice_response import VoiceResponse, Start, Stream
twilio_client = Client(TWILIO_SID, TWILIO_AUTH)
def handle_incoming_call(call_sid: str, ws_url: str) -> str:
response = VoiceResponse()
start = Start()
start.stream(url=f'wss://api.example.com/stream/{call_sid}')
response.append(start)
response.say("Добро пожаловать! Как я могу помочь?",
voice="alice", language="ru-RU")
response.pause(length=60)
return str(response)
Conversation Manager с инструментами
Это сердце агента. Он управляет состоянием диалога, вызывает LLM и выполняет внешние инструменты по запросу модели. Пример реализации на Python:
from openai import AsyncOpenAI
from dataclasses import dataclass, field
import json
client = AsyncOpenAI()
@dataclass
class AgentState:
call_id: str
history: list = field(default_factory=list)
collected_data: dict = field(default_factory=dict)
current_intent: str = None
class VoiceAgent:
def __init__(self):
self.tools = [
{
"type": "function",
"function": {
"name": "lookup_order",
"description": "Найти заказ клиента по номеру телефона или ID заказа",
"parameters": {
"type": "object",
"properties": {
"phone": {"type": "string"},
"order_id": {"type": "string"}
}
}
}
},
{
"type": "function",
"function": {
"name": "reschedule_delivery",
"description": "Перенести доставку на другую дату",
"parameters": {
"type": "object",
"properties": {
"order_id": {"type": "string"},
"new_date": {"type": "string", "description": "YYYY-MM-DD"}
},
"required": ["order_id", "new_date"]
}
}
}
]
async def process_turn(self, state: AgentState, user_text: str) -> str:
state.history.append({"role": "user", "content": user_text})
response = await client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": self._get_system_prompt()},
*state.history
],
tools=self.tools,
tool_choice="auto"
)
message = response.choices[0].message
# Обработка function calls
if message.tool_calls:
tool_results = await self._execute_tools(message.tool_calls)
state.history.append(message)
state.history.extend(tool_results)
# Повторный вызов для финального ответа
final = await client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "system", "content": self._get_system_prompt()}]
+ state.history
)
reply = final.choices[0].message.content
else:
reply = message.content
state.history.append({"role": "assistant", "content": reply})
return reply
Какие бизнес-метрики улучшает агент?
| Метрика | Типичный контакт-центр | С Voice AI Agent | Улучшение |
|---|---|---|---|
| Containment Rate | 20–30% | 55–65% | +35% |
| Среднее время обработки (AHT) | 5–8 мин | 2–3 мин | -60% |
| Стоимость звонка | ₽30–50 | ₽5–10 | -80% |
| Ошибки при сборе данных | 5–8% | <2% | -75% |
Сравнение моделей для разных сценариев
| Модель | Применение | Латенция (p95) | Containment |
|---|---|---|---|
| GPT-4o | Техподдержка, сложные контексты | <1.5 сек | 65% |
| Mistral fine-tune | Узкие сценарии (запись, статус) | <0.8 сек | 55% |
| Qwen INT4 | Высоконагруженные кампании | <0.5 сек | 50% |
Процесс работы
- Анализ сценариев: собираем типовые диалоги, определяем до 5 ключевых сценариев (запись, статус заказа, перенос, жалоба, консультация).
- Проектирование диалога: создаём state machine, прописываем переходы и требуемые инструменты.
- Реализация: пишем код агента, интеграцию с телефонией и CRM, настраиваем модели.
- Тестирование: прогоняем 100+ тестовых звонков, измеряем TCR, Containment, False Transfer.
- Запуск: развёртывание на production, настройка мониторинга (Weights & Biases, MLflow).
Что входит в работу
- Документация архитектуры и API агента
- Исходный код с комментариями (репозиторий Git)
- Доступ к дашборду мониторинга метрик
- Обучение команды клиента (2–3 сессии по 1 часу)
- Поддержка в течение 1 месяца после запуска
Сроки и как начать
MVP агента с базовыми сценариями — 3–4 недели. Production-система с мониторингом — 2–3 месяца. Стоимость рассчитывается индивидуально в зависимости от количества сценариев и интеграций. Получите оценку вашего сценария — пришлём план внедрения в течение 2 рабочих дней. Закажите демонстрацию агента на ваших данных. Свяжитесь с нами для технического аудита ваших сценариев.







