Bunu Neden İnşa Ettim?
"Çoğu yapay zeka istemcisi, REST uç noktalarının (endpoints) etrafına sarılmış sıradan arayüzlerden ibarettir. Serial Experiments Lain'den ilham alarak, gerçek zamanlı Server-Sent Events (SSE) akışının ve anında (on-the-fly) Metin Okuma (TTS) teknolojisinin sınırlarını zorlayan, oldukça sürükleyici ve karakter odaklı bir yapay zeka istemcisi oluşturmak istedim. Bu proje; asenkron metin akışlarını yönetmek, cümleleri mantıksal olarak tamponlamak (buffering) ve 'yaşayan' dijital bir varlığı simüle ederken arayüzün (UI) donmasını engellemek üzerine bir mimari çalışmadır."
Mimari & Kararlar
Uygulama, reaktif durum yönetimi için `Provider` ile Flutter kullanır. Çekirdek motor (`ChatProvider`), sürekli bir `http.Client` akışı (stream) kullanarak DeepSeek API'sine bağlanır. JSON parçaları (chunks) SSE üzerinden geldikçe satır satır çözümlenir (`utf8.decoder`, `LineSplitter()`), ayrıştırılır ve bir `MarkdownBody` widget'ı aracılığıyla gerçek zamanlı olarak arayüze işlenir. Eşzamanlı olarak metin akışı, Regex tabanlı bir cümle tamponuna (buffer) beslenir. Tamamlanmış bir cümle (noktalama işaretleriyle) tespit edildiğinde, anında asenkron bir TTS kuyruğuna (`flutter_tts`) itilir; böylece ağ isteğinin (payload) tamamen inmesi beklenmeden yapay zeka anında konuşmaya başlar.
Temel Özellikler
- 01.Sıfır gecikmeli LLM metin akışı için gerçek zamanlı Server-Sent Events (SSE) ayrıştırması
- 02.Cümleleri mantıksal olarak bölüp anında seslendiren asenkron TTS (Metin Okuma) kuyruğu
- 03.Eller serbest sesli etkileşim için yerel Speech-to-Text (STT) entegrasyonu
- 04.GPU optimize edilmiş özel CRT tarama çizgisi (`CustomPainter`) katmanı ve sese duyarlı UI animasyonları
- 05.Çevrimdışı çoklu oturum sohbet geçmişi yönetimi için `path_provider` ile kalıcı yerel depolama