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

Розробка голосових AI-агентів на платформі 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

Розробка голосових AI-агентів на платформі 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