Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ Streaming AI Chat Backend

FastAPI, WebSocket ve Asenkron Python (asyncio) mimarisi üzerine kurulu; LLM (OpenAI/vLLM) yanıtlarını istemciye gerçek zamanlı (token-by-token) aktaran, JWT güvenliği ve veritabanı geçmişi barındıran ölçeklenebilir chat backend'i.


🏗️ Nasıl Çalışır? (Mimari Akış)

[ Client (Web/Mobil) ]
         │
         │  1. WebSocket Bağlantısı + JWT Doğrulama
         ▼
[ FastAPI WebSocket Gateway ] ─── (Auth Kontrolü)
         │
         │  2. Kullanıcı Mesajı + Konuşma Geçmişi (Context)
         ▼
[ Conversation Service ] ◄─────── [ PostgreSQL / Redis Cache ]
         │
         │  3. Async Prompt İletimi
         ▼
[ LLM Engine (OpenAI / vLLM) ]
         │
         │  4. Token Streaming (Async Generator / Chunk by Chunk)
         ▼
[ FastAPI WebSocket Manager ]
         │
         │  5. Gerçek Zamanlı Frame Aktarımı
         ▼
[ Client (Canlı Yazım Efekti) ]

🔄 Adım Adım Çalışma Mantığı

  1. El Sıkışma (Handshake): İstemci WebSocket (/ws/chat) üzerinden JWT token ile bağlanır.
  2. Context Hazırlığı: Kullanıcının geçmiş mesajları PostgreSQL'den asenkron çekilip context penceresine eklenir.
  3. Token Streaming: LLM servisi Async Generator kullanarak cevabı parça parça (yield chunk) üretir.
  4. Gerçek Zamanlı İletim: Üretilen her token anında WebSocket çerçevesi olarak istemciye iletilir (gecikmesiz canlı yazım).
  5. Kalıcılık & İptal: Cevap tamamlandığında veritabanına kaydedilir; kullanıcı bağlantıyı keserse (cancel) LLM token tüketimi anında durdurulur.

🛠️ Teknoloji Yığını

  • Backend Framework: FastAPI & Uvicorn (Asenkron ASGI)
  • Gerçek Zamanlı İletişim: WebSockets & Python asyncio
  • LLM Entegrasyonu: Async OpenAI SDK / vLLM / Mock Streaming
  • Veritabanı & ORM: PostgreSQL + SQLAlchemy 2.0 (Asyncpg) + Alembic
  • Önbellek & Oturum: Redis (Async Session & Pub/Sub)
  • Güvenlik: JWT (JSON Web Tokens) & Password Hashing (bcrypt)
  • Konteynerizasyon: Docker & Docker Compose

🚀 Hızlı Başlangıç

1. Kurulum

# Depoyu klonlayın
git clone https://github.com/kullaniciadi/streaming-ai-chat-backend.git
cd streaming-ai-chat-backend

# Sanal ortam oluşturun ve aktif edin
python -m venv venv
# Windows:
venv\Scripts\activate
# Linux/macOS:
source venv/bin/activate

# Bağımlılıkları yükleyin
pip install -r requirements.txt

2. Ortam Değişkenleri

.env.example dosyasını .env olarak kopyalayın ve anahtarlarınızı girin:

OPENAI_API_KEY=your_api_key_here
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/chat_db
REDIS_URL=redis://localhost:6379/0
JWT_SECRET_KEY=your_super_secret_key

3. Docker ile Tek Komutta Çalıştırma

docker-compose up --build
  • Chat Test Arayüzü: http://localhost:8000
  • Swagger API Dokümantasyonu: http://localhost:8000/docs
  • Veritabanı Görsel Yönetim Paneli (Pgweb): http://localhost:8081

📂 Proje Yapısı

├── app/
│   ├── api/          # REST & WebSocket endpoint'leri
│   ├── core/         # Yapılandırma, Güvenlik, Veritabanı ve Redis bağlantıları
│   ├── models/       # SQLAlchemy ORM modelleri (User, Message, Conversation)
│   ├── schemas/      # Pydantic veri modelleri
│   ├── services/     # LLM Streaming, WebSocket Manager, Auth servisleri
│   └── main.py       # FastAPI uygulama giriş noktası
├── docker-compose.yml
├── Dockerfile
└── requirements.txt

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages