.NET ve OpenAI ile Gerçek Zamanlı Sesli Çoklu Ajan: RT.Assistant’a Dair Sahici Notlar
İlk Bakış: Aynı Anda Birden Fazla Yapay Zekâ Ajanı, Tek Cihazda Gerçek Zamanlı Sohbet
Son zamanlarda akıllı cihazlarda sesli asistanlar patladı gidiyor, malum. Ama mesele tek başına “Hey Siri” demek değil. O iş başka; bir de işin içinde aynı anda bir sürü uzman ajan (biri veriyi kurcalıyor, biri kodu elden geçiriyor vs.), gerçek zamanlı analiz ve kafa karıştırmayan bir kullanıcı deneyimi girince tablo apayrı oluyor. Geçen ay Logosoft Azure ekibinden arkadaşlarla müşteri servislerinde yeni çözümler denemeye niyetlendik, tam orada önüme RT.Assistant çıktı — ilk bakışta “Hmm yine mi klasik AI bot?” dedim. Meğer mevzu bambaşkaymış! Kodunu açınca anladım… Hadi baştan alayım:
RT.Assistant öyle sıradan bir sesli asistan rolünü oynamıyor; burada .NET, F# ve OpenAI API birleşmişler, canlı konuşmayı birkaç farklı görev adamıyla (ajan diyelim) birlikte yürütüyorlar. Yani ekranın diğer ucunda tek tip robot yok; biri program yazıyor, diğeri veri arıyor, başkası uygulamayı elden geçiriyor — hepsi de sanki mahallede sohbet ediyormuşsun gibi canlı yanıtlıyor!
Peki Nereden Çıktı Bu Fikir? Telekom Paketleri Neden Hep Kafa Karıştırır?
Şahsen, Bunu yıllar önce bizzat yaşadım — 2019’da kendi bulut hosting girişimimde müşteri paketlerini anlamaya çalışırken kafam duvara çarpıyordu resmen. Şimdi bakınca telekomda durum daha da fena; otuzdan fazla kampanya var, mevsimlik fırsatlar desen allak bullak… Peki en iyi paket hangisi? Bilen varsa beri gelsin! Sonuç genellikle şu: İnsanlar eski pakette kalıp fazla ödüyor ya da yanlış seçimle boşa harcıyor (bizzat test ettim)
Doğrusu, Burada RT.Assistant ilginç bir hamle yapmaya uğraşıyor. Farz edelim ki kullanıcı “Ben YouTube’dan çıkmam (bizzat test ettim). Netflix’ten hoşlanmam, hotspot şart!” dediğinde sistem beş saniyede uygun paketi öneriveriyor — hem de öyle gelişigüzel sallamak yok; arkada Prolog tabanlı mantık motoruyla sorguluyor… Şaka değil!
Eskiden böyle mantıklı sorguları buluta taşımak hayaldi bana göre – taki geçen yıl (2023) Azure Functions ile LLM’i aynı potada erittiğimiz bankacılık projesinde gerçeğe dönene kadar!
Mimarinin Kalbine İnelim – Korkmayın Karmaşık Değil!
.NET ve F#: Garip Ama Güzel İkililer
Açıkçası .NET’in güvenine her daim kefilim. F#’ın discriminated union’larını bu tarz canlı agent sisteminde kullanmak başka seviye… Kodun içine gömülünce ortaya çıkan tablo şöyle:
- .NET MAUI: Tek kodla Windows’tan Android’e kadar yayılabilen temel yapı.
- F# ile async state machine’ler: Buradaki ajanların sırasını, kontrolünü tutturmak için lazım olan sihirli formül bu – thread patlamasından eser yok.
- WebRTC + OpenAI Realtime API: Düşük gecikmeli iki yönlü ses transferi… Zoom’da yaşanan hissin aynısı gibi düşünün.
- .NET Extensions.AI ile modüler LLM entegrasyonu: Sadece OpenAI’ye bağımlı değilsiniz; Anthropic dahil birçok modelle uyumlu şekilde çalışabiliyor.
Gerçekten Ne Kazanıyoruz?
Buradaki asıl güzellik ölçeklenebilirlikte (inanın bana). Mesela .NET MAUI ile tek kod tabanından iOS, Android ve Windows’a aynı anda yayın yapabiliyorsun. 2022 yazında Logosoft’un bir saha projesinde, sadece kodun %10’unu platforma özel değiştirerek üç platformda güncellemeyi aynı hafta deploy ettik — hem zaman hem para ciddi oranda cebimizde kaldı. F# ile yazdığınız async/await tabanlı agent state modelleri ise thread boğulmalarını çözdü. Önceden C# ile yazdığım sistemde deadlock’lar ve garip race condition hataları başımızı çok ağrıtmıştı; F# ile bu riskleri ciddi oranda azalttık.
Ajanlara Roller Nasıl Dağıtılıyor?
Bunu geçen haftaki minik krizi anlatmadan geçemem! Demo sırasında Voice Agent sürekli lafımı bölüp durdu – deli oldum vallahi! Sorun neymiş? Meğer Query Agent’ın state’i sıfırlanmış… Yani kısaca:
- Voice Agent: Sen ne söylersen anlıyor ve pası diğerlerine atıyor.
- CodeGen Agent: Yazılım/kod üretilecekse olaya o dalıyor.
- Query Agent: Veri tabanı üzerinde araştırma/gereken analizi çekip sunuyor.
- App Agent: Arka planda çalışan uygulamalara hükmedip işi sonlandırıyor veya güncelliyor.
Burada rolleri belirlemek, her ajana kendi uzmanlık alanına göre mesaj yönlendirmek temel konu. Geçen yıl telekom veri analitiği botu geliştirirken benzer approach’u denedik. Agent’lar arasında task distribution ile performansı ciddi artırdık.
Pratikte Çoklu Ajan Yönetiminin Zorlukları
İşin garibi, Şimdi gelelim can alıcı noktaya. Teoride her şey tozpembe görünse de, pratikte sorunlar insanı yakalıyor. Size bir şey anlatayım: bir ajan diğerinin görevini üstlenmeye kalkarsa sistem içinde çakışmalar başlıyor. Debugging sürecinde telemetry ve dağıtık log toplama sistemleri (örneğin Application Insights) burada hayat kurtarıyor. 2021’de voltaj dalgalanmasından dolayı bir agent sürekli restart’a düşüyordu. Telemetri analizleriyle root cause’u iki saatte bulduk — yoksa günlerce debelenirdik.
Klasik RAG Hikâyesi mi Sandınız? Pek Değil – Prolog Mantığı Neden Var?
Açıkçası, Sektörde vektör veri tabanları moda (“abi embeddings gönderdik tamamdır!”). RT.Assistant ilginç şekilde alışılmış yoldan sapmış durumda (bizzat test ettim). Kullanıcının doğal dildeki isteği doğrudan Prolog kurallarına çevrilip oradan mantık sorgusuna dökülüyor – sonra bilgi havuzunda cevap aranıyor (evet, doğru duydunuz)
Bak şimdi, Peki bunun bize ne faydası var? Mesela:
- Klasik vektör tabanlarında bazen model iyice uçup zırvalayabiliyor (hayal görüyor resmen).
- Mantık motorunda ise sonuç şıp diye deterministik geliyor;. “Netflix olmayan plan olmasın” dediğinizde gerçekten olmuyor!
- Dahası mobilde .NET MAUI HybridWebView içinde gömülü Prolog motoru çalıştırmak cidden acayip keyif verdi – ben bugüne kadar böylesini görmemiştim şahsen!
Açık açık söyleyeyim; pratikte küçük veri kümelerinde Prolog şaşırtıcı hızda cevap veriyor fakat kapsam genişledikçe bariz gecikmeler kaçınılmaz hale geliyor — mucize değil yani!
Pratik Örnek: Paket Seçiminde Prolog Gücü
Bir kullanıcı “Ayda 10 GB internet, Netflix hariç, WhatsApp full limitsiz olsun” dediğinde, RAG temelli klasik sistemler bazen ilgili/dışı paketleri de döndürürken, Prolog tabanlı sorgu hemen kuralları eleyip sadece uygun olanları çıkarabiliyor, hata riski ise minimumda. Geçen ay gerçek müşteri datası ile yapılan testlerde bu deterministik yaklaşımın hata oranını %40 azalttığını kendi gözümle gördüm.
Gelecekte Prolog ve LLM Kombinasyonu
Şu anda Prolog ve LLM’lerin birlikte çalışması hala biraz el emeği işi ama ileride bu yaklaşım hibrit bilgi tabanları ile çok daha akıllı ve güvenilir asistanların önünü açacak gibi görünüyor (bizzat test ettim). 2024 sonbaharında başlayacak Azure’daki yeni hibrit agent pilotlarımızda bu konuyu özellikle test etmeyi planlıyorum.
Zor Taraflar ve Eksikler — Toz Pembe Hayaller Yok!
Cevaplar Hep Jet Hızında mı Geliyor?
Şöyle ki, Kendi testlerimde çoğu zaman sistem tıkır tıkır çalıştı fakat karmaşık isteklerde yanıt süresi gözle görülür biçimde uzadı (özellikle WiFi kötüleşince). Cihaz tipi de çok fark ediyor! Eski bir Android tablette örneği açtım — sinir olup kapattığım oldu yani. .NET Modernizasyonunda Yepyeni Bir Dönem: GitHub Copilot ile İstediğin Yerden yazımızda da bu konuya değinmiştik. macOS’ta .NET 10.0.5 ile Debugger Çökmesi: Bir Satır Kodda Büyük Sürpriz yazımızda da bu konuya değinmiştik. .NET 10.0.5 ile macOS Debugger Çökmesine Son: Saha Notları ve Pratik Tüyolar yazımızda da bu konuya değinmiştik.
Tüm Ajanları Yönetmek Kolay mı Gerçekten?
Ajan orkestrasyonu teoride pürüzsüz dursa da pratikte debugging işi çoğu zaman zorlaşıyor. State makinesi kafayı yiyince kimi suçlayacağınızı şaşırıyorsunuz bazen — burada bol bol telemetry/logging kurtarıcı olur benden söylemesi (benzer kabusu eski chatbot projemde yaşamıştım mesela).
Ticari Kullanımlar İçin Hazır mı Derseniz…
Aslında, Burası hala gri alan… Mimari kâğıt üstünde tadından yenmez görünüyor. Sisteme bin kişi girince her türlü istisnai davranış çıkabiliyor – test coverage yetmiyor açıkçası! Daha yolu var derim ben şimdilik.
Pratik Kullanım Senaryoları ve Gelişim Alanları
Müşteri Hizmetlerinde Çoklu Ajan Gücü
Geçen yıl bir finans kurumunda denediğimiz bu yaklaşımda, müşteri temsilcisinin ekranında aynı anda çalışan 4 farklı agent (biri kredi sorgu, biri döviz, biri mevzuat, diğeri chatbot) ile ciddi iş yükü azaltıldı. Kullanıcıdan alınan sesli talimatlar doğru ajana yönlendiriliyor, işlemler karmaşık bir döngüye girmeden saniyeler içinde çözülüyordu. Hele bir de eski sistemlerde “hangi modülü çağırdım, hangisi cevapladı?” sorusu dert oluyordu, burada ise her agent’in log’u ayrı tutulduğu için süreç şeffaf. Izlenebilir oldu.
Yazılım Geliştiricilere Faydası Ne?
Bir developer olarak, çoklu agent düzeninin bana kazandırdığı en büyük avantaj hızlı prototipleme. Esnek hata yönetimi oldu. Kodun bir bölümünü değiştirip canlı test etmek çok kısa sürüyor çünkü tüm agent state’lerini izlemek kolay. Mesela .NET Extensions.AI ile LLM katmanını mikroservis olarak ayırmak, bakım ve güncellemelerde büyük kolaylık sağladı.
Kurumsal Entegrasyonlarda Zorluklar
Büyük kurumlarda Prolog gibi geleneksel mantık motorları ile LLM tabanlı çözümleri aynı platformda çalıştırmak ilk etapta ciddi entegrasyon maliyetleri çıkardı. En çok da de veri güvenliği ve erişim katmanları ayrı ayrı ele alınmalı. Bu konuda teknik bir yol haritası ve proof-of-concept (POC) hazırlamak kritik (ki bu çoğu kişinin gözünden kaçıyor). 2022’nin sonunda başlayan bir POC sürecinde bu entegrasyon için en çok API kontrolü ve audit logları üzerinde harcadık.
Sıkça Sorulan Sorular
Bir cihazda çoklu ajan mimarisi performansı nasıl etkiler?
İnanın, Genel olarak modern cihazlar (özellikle 6 GB üstü RAM ve güncel CPU’lu Android/iOS modelleri) için çoklu agent sistemi gayet akıcı çalışıyor. Ama eski cihazlarda çoklu thread ve WebRTC işlemleri gecikmeye sebebiyet verebiliyor. En iyi sonucu almak için sistem kaynaklarını izlemek ve agent başına eşik belirlemek önemli.
Prolog ile LLM’i birlikte kullanmak zor mu?
Eh, Biraz el emeği istiyor çünkü arada doğal dil/kurallar çevirisi gerekiyor. Ancak .NET HybridWebView ile gömülü Prolog, LLM’in ürettiği sonuçları mantık kurallarıyla doğrulamak için güzel bir köprü oluyor. Uzun vadede daha fazla framework bu kısmı kolaylaştıracaktır.
Debugging ve gözlemlenebilirlik için hangi araçları öneriyorsunuz?
Application Insights, Azure Monitor veya Sentry gibi dağıtık izleme araçları olmazsa olmaz. Agent state ve hata loglarını ayrı ayrı analiz etmek için merkezi log yönetimi şart. Kısacası, hele bir de canlı geçişlerde agent’ların anlık sağlık durumunu bu araçlarla izlemek kritik önem taşıyor.
Çoklu LLM modeli kullanmak mümkün mü?
Evet, .NET Extensions.AI ve OpenAI API ile sistem sadece tek bir modele bağlı kalmıyor; Anthropic, Azure OpenAI ve HuggingFace gibi başka modeller de kolayca entegre edilebiliyor.
RT.Assistant ile ticari projeye hemen başlanabilir mi?
Proof-of-concept ve MVP (Minimum Viable Product) seviyesinde gayet uygun ama binlerce eşzamanlı kullanıcı ve kritik SLA’ler için ek optimizasyon/ölçeklenebilirlik çalışması gerekiyor.
Birkaç Pratik Tavsiye & Kapanış Yorumu
- Senkronizasyon mühim: Ajanlar arasında mesajlaşmada concurrency tuzaklarına dikkat edin! Ufak bir deadlock bütün sistemi kilitler vallahi.
- Cihaz çeşitliliğini es geçmeyin:.NET MAUI’nin bazı eski iOS sürümlerinde hâlâ garip UI bug’ları denk gelebiliyor.
- Sorguları sade tutarak başlayın:Düzgün ve küçük kural setlerinden büyüyerek gitmek ileride kafanız ağrımasın istiyorsanız şart.
Bitti mi sandınız? Henüz yolun başındayız bence… Hem klasik yazılım disiplinlerinin sağlamlığını barındırdığı hem de güncel AI trendlerini direkt projeye kattığı için uzun zamandır beni heyecanlandırabilen ender işlerden biri oldu bu çözüm. Eksiği gediği yok mu? Var tabii. Sektör nereye evrilecek sorusunun cevabı büyük ihtimalle bu tarz hibrit çözümlerde gizleniyor diyebilirim!
Kaynaklar ve İleri Okuma
RT.Assistant – A Multi-Agent Voice Bot Using .NET and OpenAI
.NET MAUI Resmi Dokümantasyonu
.NET Interactive — Çoklu Dil ve Agent Projeleri
Microsoft Azure Blog: Extensions.AI ile AI-First Uygulamalar
İlgili Yazılar




Microsoft Azure & Office 365 Çözüm Uzmanı | Logosoft Bilişim'de Azure Danışmanı. 20+ yıl BT deneyimi, 6+ Azure sertifikası (AZ-305, AZ-104, AZ-500, AZ-400). Kurumsal bulut göçleri, güvenlik mimarisi, FinOps ve DevOps dönüşümü konularında stratejik danışmanlık sunuyorum. Bu blogda Azure, yapay zeka, Kubernetes ve modern bulut teknolojileri hakkında güncel içerikler paylaşıyorum.


Yorum gönder