""" setup.py — Kurulum ve İlk Çalıştırma Scripti Çalıştır: python setup.py Bu script: 1. Gerekli klasörleri oluşturur 2. .env dosyasını kontrol eder 3. SQLite tabloları oluşturur 4. FAQ dokümanını ChromaDB'ye indeksler 5. Temel yapıyı doğrular """ import os import sys # Proje kök dizini BASE_DIR = os.path.dirname(__file__) sys.path.insert(0, BASE_DIR) def check_env(): """API key'lerin tanımlı olduğunu kontrol et.""" from dotenv import load_dotenv load_dotenv() env_path = os.path.join(BASE_DIR, ".env") if not os.path.exists(env_path): example_path = os.path.join(BASE_DIR, ".env.example") print(f"[UYARI] .env dosyası bulunamadı.") print(f" .env.example dosyasını kopyalayın: cp {example_path} {env_path}") print(f" Ardından API key'lerinizi doldurun.\n") else: print("[✓] .env dosyası bulundu.") import config as cfg missing = [] if not cfg.OPENAI_API_KEY and "gpt" in cfg.ACTIVE_MODEL: missing.append("OPENAI_API_KEY") if not cfg.ANTHROPIC_API_KEY and "claude" in cfg.ACTIVE_MODEL: missing.append("ANTHROPIC_API_KEY") if not cfg.GOOGLE_API_KEY and "gemini" in cfg.ACTIVE_MODEL: missing.append("GOOGLE_API_KEY") if not cfg.JINA_API_KEY: missing.append("JINA_API_KEY (FAQ RAG için gerekli)") if missing: print(f"[UYARI] Eksik API key'ler: {', '.join(missing)}") else: print(f"[✓] API key'ler tanımlı. Aktif model: {cfg.ACTIVE_MODEL}") def setup_db(): """SQLite tabloları oluştur.""" from tools.db_tool import init_db init_db() print("[✓] SQLite tabloları hazır.") def index_faq(): """FAQ dokümanını ChromaDB'ye indeksle.""" from config import JINA_API_KEY if not JINA_API_KEY: print("[UYARI] JINA_API_KEY eksik — FAQ indeksleme atlandı.") return from memory.vector_store import index_faq as _index try: _index() print("[✓] FAQ dokümanı indekslendi.") except Exception as e: print(f"[HATA] FAQ indeksleme başarısız: {e}") def verify_catalog(): """Araç kataloğunun yüklendiğini doğrula.""" import json catalog_path = os.path.join(BASE_DIR, "data", "vehicle_catalog.json") with open(catalog_path, encoding="utf-8") as f: catalog = json.load(f) print(f"[✓] Araç kataloğu: {len(catalog)} marka/model grubu yüklendi.") def main(): print("=" * 50) print("Araç Finansmanı Chatbot — Kurulum") print("=" * 50 + "\n") # Data klasörünü oluştur os.makedirs(os.path.join(BASE_DIR, "data"), exist_ok=True) os.makedirs(os.path.join(BASE_DIR, "data", "chroma"), exist_ok=True) check_env() setup_db() verify_catalog() index_faq() print("\n" + "=" * 50) print("Kurulum tamamlandı!") print("\nUygulamayı başlatmak için:") print(" python app.py") print("\nVeya doğrudan Gradio ile:") print(" gradio app.py") print("=" * 50) if __name__ == "__main__": main()