English
AI Assisted Development

Yapay Zeka Destekli Geliştirme: Sesli Asistandan MCP Chatbot'a

RAG, MCP ve STT-LLM-TTS: yazılım işimin bir parçası haline geldi.

· Full Stack Developer · Güncellendi:

Sesli bir asistanın telefondaki bir soruya cevap verebilmesi için arka planda birkaç farklı parça aynı anda çalışıyor. STT-LLM-TTS zinciri sesi metne çeviriyor, metni bir dil modeline gönderiyor, cevabı tekrar sese dönüştürüyor. RAG (Retrieval-Augmented Generation), modelin cevap üretmeden önce ilgili bilgiyi harici bir kaynaktan çekmesi anlamına geliyor, yani her şeyi ezbere bilmek zorunda kalmıyor. MCP (Model Context Protocol) ise bir AI modelinin dış servislere, veritabanlarına ya da API'lere standart bir yolla bağlanmasını sağlıyor.

Otel rezervasyon alanında bir AI çağrı asistanı projesinde bu zinciri kurdum. RAG tabanlı bir bilgi bankası üzerinden otel bilgilerine, oda tiplerine, müsaitlik durumuna cevap veren bir yapı var; STT-LLM-TTS akışı da gecikmeyi düşük tutacak şekilde tasarlandı, çünkü telefonda konuşan biri birkaç saniyelik sessizliği bile fark ediyor.

Apartman yönetim sisteminde ise MCP tabanlı bir AI chatbot geliştirdim; bu chatbot harici servislerle entegre çalışıyor, yani sabit bir bilgi setine değil, canlı verilere erişerek cevap üretiyor. Angular 20 ile admin panel tarafında çalışırken bu tür bileşenleri de aynı iş akışına dahil ediyorum.

Günlük kodlama sürecinde de AI destekli araçlar var artık; ayrı bir gündem maddesi olmaktan çıkıp işin normal bir parçası haline geldi.

RAG'in altında yatan mekanik aslında basit: metinler önce embedding modeliyle vektöre çevriliyor, kullanıcının sorusu da aynı şekilde vektöre çevrilip anlamsal olarak en yakın parçalar (chunk) vektör veritabanından çekiliyor, bu parçalar prompt'un içine gömülüp LLM'e 'işte ilgili bağlam, buna göre cevap ver' diye veriliyor. Chunk boyutu burada kritik bir karar: küçük parçalar daha isabetli eşleşme sağlıyor ama bağlamı eksik bırakabiliyor, büyük parçalar bağlamı koruyor ama alakasız bilgiyi de prompt'a taşıyıp hem maliyeti hem gecikmeyi artırıyor. Otel asistanında oda tipi ve müsaitlik gibi yapılandırılmış veriler için chunk'ları küçük ve odaklı tutmak, serbest metin politika bilgileri için ise daha geniş parçalar kullanmak işe yaradı.

RAG'in 'modelin uydurmasını (hallucination) tamamen engellediği' düşünülüyor ama bu doğru değil; RAG sadece modele doğru bilgiyi sunma ihtimalini artırıyor, model yine de retrieval'dan gelen bilgiyi görmezden gelip kendi bildiğini söyleyebiliyor ya da alakasız bir chunk'ı yanlış yorumlayabiliyor. Bu yüzden özellikle telefonda konuşan bir kullanıcıya yanlış oda fiyatı ya da müsaitlik bilgisi vermek ciddi bir risk, prompt'ta modelin sadece verilen bağlamdaki bilgiyi kullanmasını, bulamadığında 'bilmiyorum, bir yetkiliye aktarıyorum' demesini zorlayan katı talimatlar eklemek gerekti. RAG her senaryoda gerekli de değil: değişmeyen, az sayıda kural varsa bunları doğrudan sistem prompt'una yazmak, bir vektör veritabanı kurup retrieval pipeline'ı yönetmekten daha basit ve daha az arıza noktası.