L3:voice-ai-contact-center · AI Wing · Unggulan
Contact Center Voice AI Realtime
Penelepon bisa memotong agent secara alami (~2 detik menjadi ~0,2 detik), mendapat jawaban dari knowledge base, dan bisa beralih ke petugas di tengah panggilan.
- Peran
- Owner dan lead engineer: saya merancang, mengarahkan, me-review, dan merilisnya bersama AI coding agent
- Periode
- Mei 2026 hingga Okt 2026
Hasil
~2 s to ~0.2 s
Waktu interupsi penelepon saat agent sedang mencari di knowledge base
A/B test terkontrol dengan deployment, index, dan audio yang sama, n=4 panggilan per arm (1.875 sampai 2.140 ms vs 93 sampai 220 ms).
Terverifikasi2 of 2
Drill kehilangan node lulus, panggilan aktif tetap berjalan
Drill failover dengan mematikan VM secara paksa dan reconnect penelepon, dijalankan setelah empat akar masalah ditemukan dan diperbaiki.
Terverifikasi6 vs 18
Jawaban halusinasi: quality gate mempertahankan model realtime yang lebih kuat
Evaluasi offline dengan LLM judge yang terkalibrasi (skor rata-rata 4,71 vs 4,28).
TerverifikasiMigrated
Voice channel dipindahkan dari layanan yang akan pensiun, jalur lama dihapus
Cut-over live jauh sebelum jadwal pensiun 2028; sekitar 20,5 ribu baris kode jalur lama dihapus.
Terverifikasi
Masalah
Menu telepon membuat penelepon frustrasi. Targetnya adalah voice agent yang menjawab dari knowledge base perusahaan, bisa dipotong saat sedang bicara atau mencari jawaban, bisa mengalihkan penelepon ke petugas di tengah panggilan lalu mengambilnya kembali, dan menyediakan console live untuk supervisor.
Yang saya kerjakan
- Menggabungkan dua prototipe menjadi satu produk dan memindahkan backend realtime ke Python dan FastAPI.
- Membuat barge-in memperhitungkan audio yang sedang diputar, dan memindahkan tool call ke knowledge base keluar dari realtime loop menjadi task yang bisa dibatalkan dengan satu batas waktu.
- Menjalankan program kesiapan produksi: atomic write, crash recovery, dead-letter queue yang bisa di-replay, rilis dengan drain gate, managed identity, dan infrastructure as code per environment.
- Menulis architecture decision record untuk memindahkan voice channel dari layanan yang dijadwalkan pensiun ke media WebRTC self-hosted di VM zonal, lalu membuktikan failover lewat drill mematikan VM secara paksa.
- Membangun voice evaluation harness (media emulator, golden question, LLM judge yang terkalibrasi) dan tetap mematikan perubahan yang tidak didukung oleh data.
Arsitektur
- KlienCallerBrowser lewat WebRTC
- ManusiaSupervisorConsole operator Next.js
- LayananLiveKit mediaSelf-hosted di VM zonal
- LayananFastAPI realtime backendTool bisa dibatalkan, budget 2,5 detik
- AIAzure OpenAI RealtimeSpeech-to-speech, barge-in
- DataAzure AI SearchHybrid dan semantic
- DataCosmos DBAtomic write, replay dead-letter
- LayananKnowledge ingestionDurable Functions, Document Intelligence
Alur data
- Caller to LiveKit media (WebRTC audio)
- LiveKit media to FastAPI realtime backend (audio stream)
- FastAPI realtime backend to Azure OpenAI Realtime (speech to speech)
- FastAPI realtime backend to Azure AI Search (grounding tools)
- FastAPI realtime backend to Cosmos DB (calls, transcripts)
- Supervisor to FastAPI realtime backend (takeover, hand-back)
- Knowledge ingestion sends asynchronously to Azure AI Search (index)
Stack
- Azure OpenAI Realtime
- Azure AI Search
- Azure Speech
- Document Intelligence
- Durable Functions
- Cosmos DB
- App Service
- LiveKit
- Azure VMs
- Python
- FastAPI
- Next.js
- Entra ID
- OpenTelemetry
- Application Insights
- Bicep
- GitHub Actions
L2 · Di perjalanan karierTechnical Consultant, Software & AI · Metrodata (PT Mitra Integrasi Informatika)