Разработка голосовых AI-агентов на VAPI: внедрение и оптимизация

Разработка голосовых агентов на платформе VAPI

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    982
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1241
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    697
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    983

Разработка голосовых агентов на платформе VAPI

Клиент жалуется, что бот перебивает или медленно отвечает? Чаще всего проблема в неверной конфигурации прерываний и выборе STT. Мы разрабатываем голосовых AI-агентов на VAPI — платформе, которая даёт полный контроль над стеком: от транспорта до модели. Наш опыт — 5+ лет и 50+ внедрённых проектов, поэтому мы гарантируем снижение p99 latency до 800 мс и естественный диалог.

VAPI (Voice API) — инфраструктурная платформа для построения голосовых AI-агентов с акцентом на разработчиков. В отличие от no-code решений, VAPI предоставляет полный контроль над стеком: выбор провайдера STT (Deepgram, AssemblyAI), LLM (GPT-4o, Claude, Llama), TTS (ElevenLabs, Azure, OpenAI) и транспортного уровня (WebRTC, PSTN, SIP). Это позволяет создавать агентов с RAG, function calling и кастомными голосами, которые работают в 10 раз быстрее стандартных IVR-систем.

Архитектура VAPI-агента

Phone Call / WebRTC ↓ [VAPI Transport Layer] ↓ [STT: Deepgram / Whisper] ↓ [LLM: GPT-4o / Claude] ←→ [Function Calls / Tools] ↓ [TTS: ElevenLabs / Azure] ↓ Audio Response 

Почему VAPI, а не Twilio или собственное решение?

Twilio Voice API — это низкоуровневый SIP-стек, где каждую задержку (STT, LLM, TTS) приходится соединять самому. VAPI агрегирует все этапы в одном вызове API, управляет таймаутами и прерываниями из коробки. Результат: p99 latency на 40% ниже, а стоимость разработки — в 2–3 раза меньше. Для продакшена это означает экономию на инфраструктуре и операторах до 40%.

Создание агента через VAPI API

import requests from typing import Optional class VAPIAgentBuilder: def __init__(self, api_key: str): self.api_key = api_key self.base_url = "https://api.vapi.ai" self.headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } def create_assistant(self, name: str, system_prompt: str, model: str = "gpt-4o", voice_provider: str = "elevenlabs", voice_id: str = "rachel", tools: Optional[list] = None) -> dict: assistant_config = { "name": name, "model": { "provider": "openai" if "gpt" in model else "anthropic", "model": model, "systemPrompt": system_prompt, "temperature": 0.7, }, "voice": { "provider": voice_provider, "voiceId": voice_id, "speed": 1.0, "stability": 0.5, }, "transcriber": { "provider": "deepgram", "model": "nova-2", "language": "ru", }, "firstMessage": "Здравствуйте! Чем могу помочь?", "endCallMessage": "Спасибо за звонок. До свидания!", "endCallFunctionEnabled": True, "silenceTimeoutSeconds": 20, "maxDurationSeconds": 600, } if tools: assistant_config["model"]["tools"] = tools response = requests.post( f"{self.base_url}/assistant", json=assistant_config, headers=self.headers ) return response.json() def create_tool(self, name: str, description: str, parameters: dict, server_url: str) -> dict: return { "type": "function", "function": { "name": name, "description": description, "parameters": { "type": "object", "properties": parameters, "required": list(parameters.keys()) } }, "server": { "url": server_url, "timeoutSeconds": 5, } } def create_outbound_call(self, assistant_id: str, phone_number: str, customer_data: dict = None) -> dict: payload = { "assistantId": assistant_id, "customer": { "number": phone_number, "name": customer_data.get("name", "") if customer_data else "", }, } if customer_data: payload["assistantOverrides"] = { "variableValues": customer_data } response = requests.post( f"{self.base_url}/call", json=payload, headers=self.headers ) return response.json() def setup_inbound_phone_number(self, phone_number: str, assistant_id: str) -> dict: payload = { "number": phone_number, "assistantId": assistant_id, "fallbackDestination": { "type": "number", "number": "+1234567890" } } response = requests.post( f"{self.base_url}/phone-number", json=payload, headers=self.headers ) return response.json() 

Как уменьшить latency до комфортного минимума?

Задержка складывается из трёх этапов: распознавание речи (STT), логика модели (LLM) и синтез (TTS). В VAPI можно влиять на каждый:

  • Выбор STT: Deepgram Nova-2 даёт ~250 мс при WER 8%, OpenAI Whisper — ~600 мс, но точнее. Для русскоязычных проектов часто выбирают Whisper.
  • Прерывания: включение interruptionsEnabled и установка numWordsToInterruptAssistant = 1 позволяют пользователю прерывать агента без задержки.
  • Transport: WebRTC быстрее PSTN — используйте его для клиентов в регионе.
  • Балансировка: загружайте LLM на эндпоинтах с низкой latency, например, через vLLM или Groq.

На практике после оптимизации p99 latency составляет 600–900 мс — это комфортный уровень для диалога.

Как настроить прерывания для естественного диалога?

VAPI позволяет тонко настраивать параметры, влияющие на естественность разговора:

  • interruptionsEnabled — разрешает пользователю прерывать агента. Критично для натуральности диалога.
  • backgroundDenoisingEnabled — фильтрация фонового шума через Krisp.
  • numWordsToInterruptAssistant — сколько слов пользователя нужно для прерывания агента (рекомендуется 1-2).
  • backchannelingEnabled — агент произносит «угу», «понятно» во время пауз.
Пример конфигурации для низкой задержки
{ "model": { "provider": "openai", "model": "gpt-4o", "temperature": 0.7 }, "voice": { "provider": "elevenlabs", "voiceId": "rachel", "speed": 1.0 }, "transcriber": { "provider": "deepgram", "model": "nova-2", "language": "ru" }, "interruptionsEnabled": true, "numWordsToInterruptAssistant": 1, "backchannelingEnabled": false } 

Интеграция с WebRTC для веб-звонков

import Vapi from "@vapi-ai/web"; const vapi = new Vapi("YOUR_PUBLIC_KEY"); vapi.start({ assistantId: "your-assistant-id", }); vapi.on("call-start", () => console.log("Call started")); vapi.on("call-end", () => console.log("Call ended")); vapi.on("message", (message) => { if (message.type === "transcript") { console.log(message.role, message.transcript); } if (message.type === "function-call") { console.log("Tool:", message.functionCall.name); } }); 

Сравнение STT провайдеров в VAPI

Провайдер Latency (WER) Русский Стоимость
Deepgram Nova-2 ~250ms, WER 8% хорошо $0.0059/мин
AssemblyAI Universal ~400ms, WER 7% хорошо $0.0065/мин
OpenAI Whisper ~600ms, WER 6% отлично $0.006/мин
Azure Cognitive ~300ms, WER 9% хорошо $0.016/мин

Параметры оптимизации latency

Параметр Значение по умолчанию Рекомендация
interruptionsEnabled false true
numWordsToInterruptAssistant 3 1-2
backgroundDenoisingEnabled false true (если шум)
Transport PSTN WebRTC

Что входит в работу

Каждый проект включает:

  • Архитектуру агента с выбором оптимальных провайдеров под ваш сценарий.
  • Реализацию Function Calls для интеграции с вашими системами (CRM, базы знаний).
  • Настройку прерываний и лимитов для естественного диалога.
  • Развёртывание в production (SageMaker, Vercel, собственный сервер).
  • Документацию кода и инструкции по поддержке.
  • Гарантийную поддержку в течение месяца после запуска.

Типичные ошибки при разработке VAPI-агента

  • Разрешение прерываний без тестирования реальных сценариев: агент не дослушивает длинные ответы.
  • Использование PSTN вместо WebRTC: latency на 1–2 секунды выше.
  • Игнорирование таймаутов Function Calls: если эндпоинт отвечает дольше 5с, агент зависает.
  • Отсутствие fallback-номера: при ошибке клиент должен переключаться на оператора.

Сроки и стоимость

Прототип голосового агента с базовым сценарием — от 2 до 3 дней. Полноценное решение с интеграциями, тестированием и обучением — от 3 до 5 недель. Стоимость рассчитывается индивидуально под ваш проект. Свяжитесь с нами, чтобы получить прототип за 2-3 дня. Закажите консультацию для оценки вашего сценария.

Источник: VAPI REST API