- Üst segment bir serviste telefonlara cevap verilememesi nedeniyle oluşan gelir kaybını çözmek için, gerçekten telefonları yanıtlayan 'Axle' adlı bir yapay zeka resepsiyonisti geliştirildi
- Yapay zeka, Retrieval-Augmented Generation (RAG) tabanlı olarak kuruldu ve web sitesinden toplanan gerçek hizmet ve fiyat bilgilerine dayanarak doğru yanıtlar veriyor
- Vapi, Deepgram, ElevenLabs, FastAPI, MongoDB Atlas ve diğer araçlar entegre edilerek telefon bağlantısı, konuşma tanıma/sentezleme ve konuşma kayıtlarının saklanması işlevleri hayata geçirildi
- Ses kalitesi, doğal ton ve kısa cümle yapısı ile ayarlanarak müşterilere samimi ama profesyonel yanıtlar sunacak şekilde optimize edildi
- Gelecekte rezervasyon sistemi, SMS bildirimleri ve geri arama panosu ile genişletilmesi planlanıyor; işletmeye özel sesli ajanlarda bilgi tabanı ve escalation tasarımının kritik olduğu vurgulanıyor
Yapay zeka resepsiyonistinin inşa süreci
- Lüks bir otomobil servisi işleten ağabeyinin, telefonlara cevap verilememesi nedeniyle her ay binlerce dolar kaybetmesi sorununu çözmek için, özel bir 'Axle' yapay zeka resepsiyonisti geliştirildi
- Basit bir chatbot değil, gerçek telefonları cevaplayabilen ses tabanlı bir ajan olarak tasarlandı; fiyatlar, çalışma saatleri ve politikalar gibi gerçek bilgilere dayanarak müşteri sorularını yanıtlıyor
- Proje üç aşamadan oluşuyor: bilgi tabanını kurmak (RAG pipeline) → telefon bağlantısı ve sunucu entegrasyonu → ses kalitesi ve konuşma tonunu ayarlamak
Adım 1: Beyni kurmak (RAG pipeline)
- Yapay zekanın gerçek verilere dayanarak yanıt vermesini sağlamak için Retrieval-Augmented Generation (RAG) yaklaşımı kullanıldı
- Sadece LLM kullanıldığında yanlış fiyat verme gibi halüsinasyon (hallucination) riski bulunduğundan, yanıtlar yalnızca gerçek bilgilere dayandırıldı
- Web sitesi verisi scraping ile 21'den fazla belge toplandı; bunlar hizmet türleri, fiyatlar, süreler, çalışma saatleri, ödeme yöntemleri, garanti ve ikame araç politikalarını içeriyor
- Bilgi tabanı MongoDB Atlas'ta saklandı ve Voyage AI (voyage-3-large) modeliyle 1024 boyutlu vektör embedding'ler oluşturuldu
- Atlas Vector Search index'i üzerinden anlamsal arama yapılıyor
- Bir müşteri sorusu geldiğinde, aynı embedding modeliyle sorgu dönüştürülerek anlamsal olarak en benzer 3 belge bulunuyor
- Bulunan belgeleri bağlam olarak kullanıp yanıt üretmek için Anthropic Claude (claude-sonnet-4-6) modeli kullanıldı
- Sistem prompt'una “bilgi tabanı dışındaki bilgileri kullanma, kısa ve konuşma dilinde kal, bilmiyorsan geri arama öner” kuralları eklendi
- Sonuçta terminalde “Yağ değişimi ne kadar?” gibi sorulara gerçek fiyat ve hizmet içeriğiyle doğru yanıt verilebildi
Adım 2: Gerçek telefon numarasını bağlamak
- Yapay zeka beynini gerçek telefon sistemine bağlamak için Vapi platformu kullanıldı
- Telefon numarası satın alma, Deepgram tabanlı konuşma tanıma, ElevenLabs tabanlı konuşma sentezleme ve gerçek zamanlı function calling özellikleri sunuyor
- FastAPI webhook sunucusu kuruldu
- Vapi, müşteri sorularını
tool-calls isteği olarak /webhook endpoint'ine gönderiyor
- Sunucu bunları RAG pipeline'a iletiyor, Claude yanıtını alıp tekrar Vapi'ye geri gönderiyor
- Doğal konuşma hızını korumak için gecikmenin minimumda tutulması gerekiyor
- Ngrok ile yerel sunucu dışarıya açık bir HTTPS URL'si olarak yayınlandı; böylece geliştirme sırasında da gerçek zamanlı test yapılabildi
-
Vapi asistanı yapılandırması
- Karşılama mesajı ve iki araç (
answerQuestion, saveCallback) webhook'a bağlandı
- Sorulara yanıt veriyor ya da bilemediğinde isim ve telefon numarası alarak geri arama kaydı oluşturuyor
- Konuşma hafızası özelliği ile önceki konuşma bağlamı korunuyor
- “Çalışma saatleriniz nedir?” → “Peki lastik değişimi ne kadar?” gibi ardışık sorular işlenebiliyor
-
Arama kayıtlarını MongoDB'ye yazmak
- Arayan numara, soru, yanıt, insana aktarma durumu ve zaman damgası kaydediliyor
- Geri arama talepleri ayrı bir
callbacks koleksiyonunda tutuluyor, böylece sonradan dönüş yapılabiliyor
- Bu sayede müşteri talep kalıpları ve arama hacmi analizi yapılabiliyor
Adım 3: Ses kalitesini ayarlamak
- Metin yanıtı ile sesli yanıt arasındaki fark göz önüne alınarak sesli aktarımın optimize edilmesi gerekti
- Yazıda doğal görünen cümleler, sesli olarak dinlendiğinde yapay gelebiliyor
-
ElevenLabs ses seçimi
- Yaklaşık 20 ses test edildi ve 'Christopher' sesi en doğal ve servis ortamına en uygun seçenek oldu
- Aşırı robotik ya da fazla neşeli sesler uygun bulunmadı
-
Sistem prompt'unu güncellemek
- Kısa cümleler, Markdown'un kaldırılması, “Harika bir soru!” gibi gereksiz ifadelerin silinmesi
- Fiyatların doğal dille okunması (“forty-five dollars”)
- Yanıtların 2 ila 4 cümleyle sınırlandırılması
- Amaç, samimi ve profesyonel bir insan sesi elde etmekti
-
Escalation (geri arama) akışını test etmek
- Bilgi tabanında olmayan bir soru sorulduğunda yapay zeka bunu bilmediğini söylüyor, isim ve numara istiyor ve veriyi MongoDB'ye kaydediyor
- Böylece servis sahibi doğrudan geri dönüş yapabiliyor
-
Entegrasyon testleri yazmak
- RAG pipeline, webhook işleme ve uçtan uca akış doğrulandı
- Hatalı istekler, arama sonucu bulunamaması, geri arama numarasının eksik olması gibi edge case'ler de ele alındı
Teknoloji yığını
- Vapi (Deepgram & ElevenLabs entegrasyonu) — telefon numarası, konuşma tanıma, konuşma sentezleme, function calling
- Ngrok — yerel geliştirme için HTTPS tüneli
- FastAPI + Uvicorn — webhook sunucusu
- MongoDB Atlas — bilgi tabanı, vektör arama, arama kayıtları, geri arama kuyruğu
- Voyage AI (voyage-3-large) — anlamsal metin embedding'leri
- Anthropic Claude (claude-sonnet-4-6) — bilgi tabanı destekli yanıt üretimi
- Python —
pymongo, voyageai, anthropic, fastapi ile kuruldu
- Copilot CLI — build otomasyon aracı
Sonraki adımlar
- Şu anda yapay zeka, soru yanıtlama ve geri arama toplama işlevlerini tamamlamış durumda
- Sıradaki hedefler takvim entegrasyonu ile gerçek zamanlı rezervasyon, SMS bildirimleri, geri arama yönetim paneli, güvenlik güçlendirmesi ve Railway dağıtımı
- Tamamlandığında 7/24 çalışabilecek ve telefonlara cevap verilememesinden kaynaklanan gelir kaybını önleyebilecek
- En zor kısım kod değil, servise uygun ses tonunu yakalamak oldu
- Temel ders: işletmeye özel sesli ajanlarda ham LLM doğrudan kullanılmamalı
- Gerçek bir bilgi tabanına dayanmalı ve bilinmeyen durumda izlenecek akış (escalation) mutlaka tasarlanmalı
- Bu bir istisna değil, temel bir özellik
1 yorum
Hacker News yorumları
Eskiden servis danışmanı (kabul görevlisi) olarak çalıştım. Yazıda anlatılan sistemin pratikte işleyeceğini sanmıyorum
Bu tür geliştirmeler basit bir kibirin ötesinde, tehlikelidir. Doğrulama olmadan yalnızca varsayımlarla yapılırsa başkalarının geçimini riske atar
Bizim bölgede Subaru bayisi, telefonla randevu alırken AI asistanını seçme imkanı veriyor. Denedim; insandan daha doğru ve hızlı çalıştı. Taco Bell'in AI sipariş sistemi de aynı şekilde harikaydı. Bu gibi durumlarda insanla konuşmamak bir kayıp yaratmıyor ve gerekirse her zaman bir insana bağlanmak mümkün
Bu tür blog yazıları hikayenin yalnızca yarısını anlatıyor. Gerçekte gelir arttı mı, müşteriler bunun bot olmasını önemsediler mi, başarısız örnekler yaşandı mı merak ediyorum
Ben bugünlerde LLM tabanlı telefon asistanlarına oldukça olumlu bakıyorum. Mint Mobile müşteri hizmetlerini aradığımda LLM beni doğal biçimde anlayıp sorunu 1 dakika içinde çözdü. Eskiden bunun için 20 dakikadan fazla beklemem gerekirdi
Yazıya göre servis, telefonlara cevap veremediği için her ay binlerce dolar kaybediyor. Öyleyse ayda 500 dolar civarında bir dış kaynak resepsiyonist tutmak çok daha yüksek ROI sağlar
Son zamanlarda robot gibi geldiğini hissettiğim anda telefonu kapatıyorum. Ama yakında AI sesi insanla ayırt edilemeyecek düzeye gelebilir gibi görünüyor. O zaman telefona duyulan güven çökebilir. E-posta ve LinkedIn zaten AI spam'iyle doldu, bu yüzden insanlar telefona yöneldi ama o da yakında yok olabilir
“Bu genel amaçlı bir chatbot değil” denmiş ama aslında esasen 2026 model genel amaçlı bir chatbottan ibaret
Blogun “About” sayfasına baktım; yazarın kod yazmayı öğrenip zengin olan bir influencer'dan ilham aldığı yazıyor. Ama bu tavır benim görmek istediğim mühendislik kültürünün yönüyle pek örtüşmüyor
İnsanların kişisel bloglarını AI ile yazması biraz iç karartıcı geliyor
Burada RAG gerçekten gerekli mi? Sadece fiyat listesi ve çalışma saatleri gibi bilgilerse hepsi rahatlıkla context window içine sığar