Eğitim Teknolojisi · Yapay Zekâ

Yapay Zekâyla Konuşarak Dil Öğrenme Platformu

Kullanıcıların yapay zekâyla yazılı ve sesli konuşma pratiği yapıp ilerlemesini takip edebildiği bir dil öğrenme platformunun backend altyapısı: .NET 8 ile katmanlı bir API, SignalR ile gerçek zamanlı sohbet ve tamamen sunucu tarafında yönetilen OpenAI entegrasyonu.

Rol
Backend Developer
Stack
.NET 8 · ASP.NET Core Web API · PostgreSQL · EF Core · SignalR · OpenAI API
SesliDil ana ekranı: günlük hedef, yapay zekâyla konuşma başlatma ve pratik konuları9:41Merhaba, ElifBugün ne konuşalım?E%60Günlük hedef9 / 15 dk6 günlük seri6 dk kaldı, devam etYapay zekâyla konuşSeviyene uygun sohbet, istediğin anPratik konularıTümü →Günlük hayatA2SeyahatB1İş görüşmesiB2Son konuşmaSeyahat · Otelde check-in8 dk · dünDevam etAna sayfaPratikİlerlemeProfil

Bilen ama konuşamayan öğrenci

Dil öğrenen çoğu kişinin hikayesi benzer: kelimeleri ezberlemiş, dil bilgisi kurallarını öğrenmiş, okuduğunu anlıyor. Ama iş konuşmaya geldiğinde takılıyor. Çünkü konuşmak ancak konuşarak gelişen bir beceri ve pratik yapacak birini her an bulmak kolay değil.

SesliDil bu boşluğu kapatmak için tasarlandı: kullanıcının günün herhangi bir saatinde yapay zekâyla konuşabildiği, cevabını anında aldığı ve gelişimini görebildiği bir platform. Bize düşen, bu deneyimin arkasındaki backend'i kurmaktı: kullanıcı verisi, konuşma oturumları, yapay zekâ servisleriyle iletişim ve bunların hepsini web ve mobil istemcilere tutarlı bir API ile açmak.

“Konuşma pratiğini, istenen her an ulaşılabilir bir deneyime dönüştürmek.”

Yaklaşımımız

Yapay zekâ entegrasyonu olan projelerde en kolay yol her şeyi tek bir yere yığmaktır: istek gelir, doğrudan modele gider, cevap geri döner. İlk demo için yeterlidir; ama ikinci, üçüncü özellik geldiğinde kod dağılmaya başlar. Biz baştan sorumlulukları ayırmayı seçtik.

ASP.NET Core Web API üzerinde controller, service ve repository katmanlarını birbirinden ayırdık. OpenAI ve SignalR gibi bileşenler de bu yapının içinde, kendi servislerinin arkasında konumlandı. Geliştirme ortamı Docker ile ayağa kalkıyor, tüm uç noktalar Swagger üzerinden test edilebiliyordu.

Teknik Kararlar

1

Katmanlı mimari ve net sorumluluklar

Controller'lar yalnızca HTTP isteğini karşılayıp yanıt döndürür; iş kuralları servis katmanında, veri erişimi Entity Framework Core ile repository'lerde yaşar. Bu ayrım sayesinde yeni bir özellik eklemek, mevcut endpoint'lere dokunmadan ilgili servise bir parça eklemek anlamına geldi. Servisler veri katmanından bağımsız olduğu için test edilmeleri ve sonradan değiştirilmeleri de kolaylaştı.

2

Her endpoint'te aynı yanıt formatı

Bir istemci geliştiricisi için en yorucu şeylerden biri, her endpoint'in farklı şekilde cevap vermesidir. Bunu baştan engellemek için tüm yanıtları ortak bir modelde topladık: işlemin başarılı olup olmadığı, açıklayıcı bir mesaj ve döndürülen veri. Web ve mobil taraf tek bir yanıt işleyicisiyle çalıştı; hata mesajları da her ekranda aynı şekilde gösterilebildi.

3

Yapay zekâ servisleri backend'in arkasında

Konuşma ve metin tabanlı etkileşimler için OpenAI servisleri kullanıldı, ama istemciler bu servislerle hiç doğrudan konuşmadı; tüm çağrılar backend'deki servisler üzerinden geçti. Bu sayede API anahtarı istemciye hiç inmedi, model ya da istem (prompt) değişiklikleri uygulama güncellemesi gerektirmeden sunucu tarafında yapılabildi ve istemci yalnızca kendi API'mizi tanıdı.

4

SignalR ile gerçek zamanlı konuşma

Bir konuşma pratiğinde gecikme, deneyimi doğrudan bozar. İstemcinin sürekli "yeni mesaj var mı?" diye sorduğu bir yapı yerine SignalR ile kalıcı bir bağlantı kurduk: ChatHub mesajı alır, servis katmanına iletir ve yanıt hazır olduğunda istemciye anında gönderir. Bağlantı yönetimi ve hata kontrolü bu katmanın ana konularındandı; hub, REST controller'larıyla aynı servis katmanını kullandığı için iş kuralları iki yerde tekrar yazılmadı.

Arayüzden

Konuşma ekranı: yazılı ya da sesli cevaplar, yapay zekâdan anında gelen yanıtlar9:41AIKonuşma partneriÇevrimiçi · Günlük hayatHi Elif! How was yourweekend? Did you doanything fun?DinleI go to the cinema withmy friends.sesli · 0:04go → wentSounds great! Small tip:for the past we say“I went”. What did youwatch?I went to a comedy film.It was really funny!Mesaj yaz…
Konuşma ekranı: yazılı ya da sesli cevaplar, yapay zekâdan anında gelen yanıtlar.
Sesli pratik ekranı: kullanıcının konuşması dinlenir ve metne dönüşür9:41Sesli pratikGünlük hayat · A2PARTNER SORUYORWhat did you watch?Ne izlediğini anlatDinleniyor…00:07“I went to a comedy film.It was really funny…”YenidenGönder
Sesli pratik: kullanıcı konuşur, söyledikleri metne dönüşerek sohbete eklenir.
İlerleme ekranı: günlük pratik süresi, seri ve son oturumlar
İlerleme ekranı: günlük pratik süresi, seri ve son oturumlar.

Sonuç & Etki

Ortaya, yapay zekâ entegrasyonunu uygulamanın geri kalanından ayıran ve büyümeye açık bir backend çıktı. Yeni bir konuşma özelliği eklemek, mevcut yapıyı bozmadan servis katmanına bir parça eklemek anlamına geliyordu; web ve mobil istemciler ise baştan sona aynı yanıt formatıyla çalıştı.

Bu projeden kalıcı olarak taşıdığımız ilke şu: yapay zekâyı ürünün merkezine koyarken onu mimarinin kenarında, kendi servisinin arkasında tutmak. Model, sağlayıcı ya da istem değiştiğinde ürünün geri kalanı bunu hissetmemeli.

Ürününüze yapay zekâ eklemek mi istiyorsunuz?

Mevcut uygulamanıza sohbet, ses ya da büyük dil modeli tabanlı bir özellik eklemek veya .NET ile sağlam bir backend kurmak; hangisi olursa olsun, konuşalım.

Teklif Alın