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.
[ 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) ]
- El Sıkışma (Handshake): İstemci WebSocket (
/ws/chat) üzerinden JWT token ile bağlanır. - Context Hazırlığı: Kullanıcının geçmiş mesajları PostgreSQL'den asenkron çekilip context penceresine eklenir.
- Token Streaming: LLM servisi
Async Generatorkullanarak cevabı parça parça (yield chunk) üretir. - Gerçek Zamanlı İletim: Üretilen her token anında WebSocket çerçevesi olarak istemciye iletilir (gecikmesiz canlı yazım).
- 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.
- 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
# 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.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_keydocker-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
├── 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