Yapay Zeka, Blockchain, Kuantum Bilgisayar ile ChatBot Hazırlamak


Merhabalar,

Ethereum gibi public blockchainlerde bir kullanıcıdan diğerine mesaj transfer ederek chat uygulaması hazırlayabiliyorunuz. Para transferine benzeyen bu özellikten yararlanarak uygulama hazırladığınızda, hazırladığınız uygulamaya DApp (Merkezi Olmayan Uygulama) deniyor. Yalnız gönderilen mesajlar karşıdaki kullanıcıya 14 sn’de gidiyor, üstelik her işlem için bir miktar dijital para ödemeniz gerekiyor. Hyperledger Fabric kullanırsanız durum değişiyor, burada işlem ücreti olmadan ve daha hızlı işlem yaptırmanız mümkün, yalnız bu sefer de hosting maliyetleri artıyor. Çünkü blockchain networkü kurmak için Linux VM’ler kiralamanız gerekiyor.

Bu nedenle Chat uygulamamızın backendini geleneksel .NET Core ile hazırlamak daha uygun oluyor. Hem anlık mesajlaşma yapabiliyorsunuz hem de mesaj başına ücretlendirme söz konusu değil.

  1. .NET Core Web API Backend (https://chatapi.azurewebsites.net)

.NET Core’da aşağıdaki katmanlarla API Backendimizi hazırlıyoruz:

  1. Chat.Model (entity ve enumları içerir)
  2. Chat.Data (ef core dbcontext’ini ve repository’leri içerir)
  3. Chat.Infrastructure (mail gönderme, dosya uploadu gibi işlemleri içerir)
  4. Chat.Service (CQRS paterni ile servis sınıflarımızı içerir)
  5. Chat.Api (Web API controller’larımızı içerir)

Veritabanı olarak SQLite kullanacağız. SQLite terabyte boyutunda veri saklayabiliyor, üstelik ücretsiz. Logları kaydetmek için Firebase Realtime DB ve Firebase Cloud Firestore No-SQL veritabanlarını kullanacağız, bu işlemleri asenkron yapacağız. Logları kaydederek blockchain ile değiştirilme koruması yapacağız, yalnız merkezi olmayan mimariyi şimdilik kullanmayacağız, buna daha sonra bakarız.

Üyelik sistemi olarak .NET Core Identity kullanacağız. Backendimizi Azure’da Free Tier’da Linux Web App olarak Azure’un kendi ücretsiz SSL’i ile yayınlayacağız.

.NET Core Apimiz frontend uygulamasından gelen mesajları Dialogflow yapay zekasına iletecek, oradan dönen sonuçları da frontende iletecek.

2. Angular Yönetim Paneli (https://chatadmin.firebaseapp.com)

Metronic temasını kullanarak Angular yönetim panelimizi hazırlıyoruz. Bu yönetim panelinde Sistem ve Client loglarını ve Audit loglarını inceleyebileceğiz. Üyeleri görebileceğiz, kullanıcıların gönderdiği mesajları görebileceğiz.

Yönetim panelimiz rol tabanlı üyelik sistemini destekleyecek.

Client loglarını doğrudan FireBase veritabanına kaydedip blockchain ile validasyonunu yapacağız. Blockchain ile korurken hash işlemini Kuantum Bilgisayar üzerinde yapacağız.

Yönetim panelimiz ayrıca uygulamalara bildirim göndermeyi de sağlayacak.

Yönetim panelimizi Firebase Hosting ile ücretsiz SSL ve ücretsiz hostingde kendi domaininden yayınlamamız mümkün.

3. Ionic Angular Frontend (https://chat.web.app)

Web uygulamasını Ionic Angular ile hazırlayacağız. Böylece iOS, Android, Web ve Desktop çıktıları alabileceğiz. Chat mesajlarını daha hızlı yapmak için gRPC kullanımına bakacağız. WebSocket kullanmakta tereddütlüyüm, çünkü backend apimizin url’si ve frontendimizin url’si tamamen farklı olacağından güvenlik problemine takılabiliriz.

Frontend web uygulamasının Client Loglarını doğrudan Firebase veritabanına göndereceğiz ve Blockchain ile koruyacağız. Bu işlemler asenkron yapılacak ve beklemeye neden olmayacak. Loglar biriktirilerek toplu bir şekilde kaydedilmelidir.

Frontendimiz üyelik sistemi olarak backend apimizin .NET Core Identity’sini kullanacak.

4. Dialogflow Yapay Zeka

Sohbetlere otomatik cevap vermeyi Google’ın Dialogflow adlı yapay zekası sağlayacak. Bu yapay zekayı soru ve cevaplarımızla eğiteceğiz. Cevapları sesli olarak döndürmesini sağlayacağız. Yapay zekamızla Backend API’miz iletişim kuracaktır.

5. Kuantum Bilgisayarda Kriptoloji

Blockchain hash işlemini, ayrıca üyelik şifrelerini hashleme işlemini ve kişisel verileri şifreleme işlemini Linux VM üzerinde Dwavesys Hibrit Kuantum Bilgisayarı ile API üzerinden irtibat kuran bir Python uygulama ile gerçekleştirebiliriz. Her ne kadar bu özellik opsiyonel gibi görünse de ikilik sistemdeki şifreleme algoritmaları kuantum bilgisayarlar tarafından kırılabilir hale geldiğinden kuantum şifrelemeye geçmek gerekiyor.

Yalnız Kuantum Bilgisayar’lar da henüz güçlü şifreleme yapılamıyor. O yüzden ayrı bir Linux VM kurma maliyetine şu an için gerek bulunmuyor. Ayrıca 1 saat kadar kuantum bilgisayar kullanmak 2000$ gibi fiyatlardan başlıyor, yani bu özelliği banka uygulamaları gibi daha kritik projelerde yapmanız daha mantıklı.

Reklam

DApp Projesi Nasıl Geliştirilebilir?


Merhabalar,

Yakında aşağıdaki teknolojilerle merkezi olmayan bir uygulama (DApp) geliştirmeye karar verdim:

  1. Angular
  2. Ethereum
  3. Firebase

Ayrıca uygulamanın geleneksel merkezi özellikleri ve ilişkisel veritabanı ihtiyaçları için katmanlı mimari ile aşağıdaki teknolojileri de içerecek:

  1. .NET Core
  2. Sqlite

Uygulama aşağıdaki bulut hizmetlerini ve ek özellikleri de kullanacak:

  1. Yapay Zeka (Dialogflow)
  2. Google Translate API
  3. WebRTC (SFU)
  4. Hibrit Kuantum Bulutu ve Kriptoloji

Uygulama üç bulut hizmetinden ücretsiz olarak yararlanacak:

  1. Windows Azure
  2. Google Cloud ve Firebase Hosting
  3. Hibrit Kuantum Bulutu (Dwavesys)

Yaptığım araştırmalarda bu projenin test amaçlı olarak kendi domaini üzerinden ücretsiz olarak yayınlanması mümkün.