You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bu proje, Kat Mülkiyeti Kanunu (KMK) başta olmak üzere 6 farklı hukuk kaynağını kullanarak apartman ve site yönetimiyle ilgili hukuki soruları yanıtlayan bir Yapay Zeka Asistanıdır.
Sistem, Retrieval-Augmented Generation (RAG) tekniğini ve Agentic (Ajan) mimarisini kullanarak:
Kullanıcının sorusunu analiz eder,
Hangi kanunun uzmanlık alanına girdiğine karar verir,
İlgili kanun maddelerini vektör veritabanından bulur,
Bulunan bilgilere dayanarak doğru ve kaynaklı bir cevap üretir.
2. Kullanılan Teknolojiler
🤖 Yapay Zeka & NLP
Teknoloji
Ne İçin Kullanıldı?
OpenAI GPT-4o
Metin üretimi (LLM) — Soruları anlama ve cevap oluşturma
OpenAI text-embedding-3-small
Metin vektörleştirme — Kanun maddelerini sayısal vektörlere çevirme
OpenAI Function Calling (Tools)
Ajan mimarisi — LLM'in hangi kanunu arayacağına karar vermesi
💾 Veri & Veritabanı
Teknoloji
Ne İçin Kullanıldı?
ChromaDB (Cloud)
Vektör veritabanı — Kanun maddelerinin embedding'lerini saklar ve benzerlik araması yapar
PyPDF
PDF dosyalarından metin çıkarma
LangChain Text Splitters
Metni anlamlı parçalara (chunks) bölme
🌐 Backend (API)
Teknoloji
Ne İçin Kullanıldı?
FastAPI
REST API sunucusu — RAG motorunu HTTP endpoint'i olarak sunar
Uvicorn
ASGI sunucusu — FastAPI'yi çalıştırır
Pydantic
Veri doğrulama — API request/response modellerini tanımlar
🎨 Frontend
Teknoloji
Ne İçin Kullanıldı?
Streamlit
Web arayüzü — Sohbet tabanlı kullanıcı deneyimi
Streamlit Cloud
Frontend hosting — Uygulamayı internete açar
☁️ Bulut & DevOps
Teknoloji
Ne İçin Kullanıldı?
Docker
Konteynerizasyon — Uygulamayı paketler ve taşınabilir hale getirir
1. Kullanıcı soru yazar → Streamlit Cloud (app.py)
2. HTTP POST /ask → Cloud Run (app_api.py)
3. LegalRAG.generate_answer() çalışır:
a. Soru GPT-4o'ye gönderilir
b. GPT, hangi kanunu arayacağına karar verir (Function Calling)
Örn: "search_kmk" veya "search_tbk"
c. İlgili kanunun ChromaDB koleksiyonunda vektör araması yapılır
d. Bulunan maddeler GPT'ye geri gönderilir
e. GPT, kaynaklara dayanarak nihai cevabı üretir
4. Cevap + Kaynaklar JSON olarak döner
5. Streamlit ekranda gösterir
1. FastAPI Backend yazıldı (app_api.py)
↓
2. Dockerfile ile paketlendi
↓
3. Google Cloud Build ile image oluşturuldu (gcloud builds submit)
↓
4. Google Cloud Run'a deploy edildi (gcloud run deploy)
↓
5. Streamlit app.py güncellendi (requests.post ile API çağrısı)
↓
6. GitHub'a push edildi → Streamlit Cloud otomatik deploy etti
Ortam Değişkenleri (Environment Variables)
Değişken
Nerede?
Açıklama
OPENAI_API_KEY
Cloud Run
GPT ve Embedding API erişimi
CHROMA_HOST
Cloud Run
ChromaDB sunucu adresi
CHROMA_API_KEY
Cloud Run
ChromaDB kimlik doğrulama
CHROMA_TENANT
Cloud Run
ChromaDB kiracı ID'si
CHROMA_DATABASE
Cloud Run
ChromaDB veritabanı adı
BACKEND_URL
Streamlit Cloud
Cloud Run API adresi
8. API Endpoint'leri
Method
Endpoint
Açıklama
Örnek
GET
/health
Health kontrolü
{"status": "healthy", "rag_ready": true}
POST
/ask
Soru-cevap
{"question": "Aidat ödemezsem ne olur?"}
GET
/docs
Swagger arayüzü
Otomatik API dokümantasyonu
Örnek API Çağrısı:
curl -X POST https://legal-rag-api-232706383774.europe-west1.run.app/ask \
-H "Content-Type: application/json" \
-d '{"question": "Aidat ödemezsem ne olur?"}'
Örnek Cevap:
{
"answer": "Kat Mülkiyeti Kanunu Madde 20 uyarınca, aidat borcunuz nedeniyle icra takibi başlatılabilir...",
"sources": [
{"doc_name": "Kat Mülkiyeti Kanunu", "content": "Madde 20 – Kat malikleri..."}
]
}
9. Değerlendirme (MLOps)
Sistemin performansı RAGAS framework'ü ile ölçülmüş ve MLflow ile loglanmıştır.