import os from pathlib import Path from dotenv import load_dotenv load_dotenv() BASE_DIR = Path(__file__).parent.parent EMBEDDING_MODEL_NAME = "intfloat/multilingual-e5-small" EMBEDDING_DIMENSION = 384 RERANKER_MODEL_NAME = "ms-marco-MiniLM-L-12-v2" LLM_MODELS = { "Llama 3.3 70B": "llama-3.3-70b-versatile", "Llama 3.1 8B": "llama-3.1-8b-instant", "GPT OSS 120B": "openai/gpt-oss-120b", "GPT OSS 20B": "openai/gpt-oss-20b" } DEFAULT_LLM_MODEL = "llama-3.3-70b-versatile" CHUNK_SIZE = 1000 CHUNK_OVERLAP = 200 TOP_K_INITIAL = 15 TOP_K_RERANKED = 5 ENABLE_QUERY_REWRITING = os.getenv("ENABLE_QUERY_REWRITING", "true").lower() == "true" DUAL_QUERY_MERGE_STRATEGY = "score" MIN_HISTORY_FOR_REWRITE = 1 MAX_HISTORY_TURNS_FOR_REWRITE = 3 MAX_CONTENT_LENGTH_FOR_REWRITE = 500 QUERY_REWRITE_MODEL = "llama-3.1-8b-instant" QUERY_REWRITE_TEMPERATURE = 0.1 QUERY_REWRITE_MAX_TOKENS = 100 QUERY_REWRITE_TIMEOUT = 5 CONVERSATION_SUMMARIZATION_ENABLED = os.getenv("CONVERSATION_SUMMARIZATION_ENABLED", "true").lower() == "true" CONVERSATION_MAX_TURNS_BEFORE_SUMMARY = int(os.getenv("CONVERSATION_MAX_TURNS_BEFORE_SUMMARY", "10")) CONVERSATION_SUMMARY_MODEL = os.getenv("CONVERSATION_SUMMARY_MODEL", "llama-3.1-8b-instant") ENABLE_INTENT_BASED_CONTEXT_FILTERING = os.getenv("ENABLE_INTENT_BASED_CONTEXT_FILTERING", "true").lower() == "true" QUERY_REWRITE_CACHE_SIZE = int(os.getenv("QUERY_REWRITE_CACHE_SIZE", "1000")) QUERY_REWRITE_CACHE_TTL_SECONDS = int(os.getenv("QUERY_REWRITE_CACHE_TTL_SECONDS", "3600")) METRICS_RETENTION_HOURS = int(os.getenv("METRICS_RETENTION_HOURS", "168")) METRICS_AGGREGATION_INTERVAL_MINUTES = int(os.getenv("METRICS_AGGREGATION_INTERVAL_MINUTES", "5")) ENTITY_CONTEXT_EXPIRY_TURNS = int(os.getenv("ENTITY_CONTEXT_EXPIRY_TURNS", "10")) ENTITY_CONTEXT_EXPIRY_SECONDS = int(os.getenv("ENTITY_CONTEXT_EXPIRY_SECONDS", "600")) ENTITY_CONTEXT_SECONDARY_RETENTION_TURNS = int(os.getenv("ENTITY_CONTEXT_SECONDARY_RETENTION_TURNS", "5")) QDRANT_PATH = str(BASE_DIR / "qdrant_db") COLLECTION_NAME = "documents_tr" USE_MEMORY_MODE = False DATABASE_CONFIG = { "enabled": os.getenv("DATABASE_ENABLED", "false").lower() == "true", "type": os.getenv("DATABASE_TYPE", "sqlite"), "host": os.getenv("DATABASE_HOST", "localhost"), "port": int(os.getenv("DATABASE_PORT", "5432")), "name": os.getenv("DATABASE_NAME", ""), "user": os.getenv("DATABASE_USER", ""), "password": os.getenv("DATABASE_PASSWORD", ""), "path": os.getenv("DATABASE_PATH", str(BASE_DIR / "data" / "test_database.db")), "pool_min_size": int(os.getenv("DATABASE_POOL_MIN", "1")), "pool_max_size": int(os.getenv("DATABASE_POOL_MAX", "10")), "pool_timeout": int(os.getenv("DATABASE_POOL_TIMEOUT", "30")), "query_timeout": int(os.getenv("DATABASE_QUERY_TIMEOUT", "10")), } DEALER_ACCESS_CONFIG = { "enabled": os.getenv("DEALER_ACCESS_ENABLED", "true").lower() == "true", "current_dealer_id": int(os.getenv("DEALER_CURRENT_ID", "82")), } LOGGING_CONFIG = { "level": os.getenv("LOG_LEVEL", "INFO"), "structured": os.getenv("LOG_STRUCTURED", "false").lower() == "true", "log_file": os.getenv("LOG_FILE", None), "max_history": int(os.getenv("METRICS_MAX_HISTORY", "1000")), } GROQ_API_KEY = os.getenv("GROQ_API_KEY", "") APP_PASSWORD = os.getenv("APP_PASSWORD", "") UI_TEXTS = { "title": "Atlas ChatBot", "subtitle": "Dokümanlarınızı yükleyin ve sorularınızı sorun", "upload_label": "PDF Dosyalarını Yükle", "upload_help": "Birden fazla PDF dosyası seçebilirsiniz", "process_button": "Dokümanları İşle", "processing": "İşleniyor...", "model_select": "LLM Modeli Seç", "rerank_toggle": "Gelismiş Arama (Reranking)", "rerank_help": "FlashRank ile sonuçları yeniden sırala", "query_placeholder": "Sorunuzu buraya yazın...", "ask_button": "Sor", "sources_label": "Kullanılan Kaynaklar", "no_docs": "Henüz doküman yüklenmedi.", "processing_complete": "{count} doküman başarıyla işlendi!", "chunk_count": "Toplam {count} metin parçası oluşturuldu", "error_api_key": "GROQ_API_KEY bulunamadı.", "thinking": "Düşünüyorum...", "search_standard": "Standart Arama", "search_advanced": "Gelişmiş Arama (Reranking)", "base_docs_loading": "Yükleniyor...", "base_docs_label": "Yüklenmiş Dokümanlar", "debug_original_query": "Orijinal Soru", "debug_search_query": "Arama Sorgusu", "debug_is_follow_up": "Takip Sorusu", "debug_rewrite_method": "Yeniden Yazma Yontemi", "debug_rewrite_time": "İşlem Süresi", "debug_query_rewriting": "Sorgu Genişletme", "debug_dual_query": "Cift Sorgu Arama", "debug_dual_query_original_count": "Orijinal Sonuç", "debug_dual_query_rewritten_count": "Yeniden Yazılan Sonuç", "debug_dual_query_merged_count": "Birleştirilen Sonuç", "debug_dual_query_strategy": "Birleştirme Stratejisi", "data_source_label": "Veri Kaynagi", "data_source_documents": "Dokümanlar", "data_source_database": "Veritabanı", "data_source_hybrid": "Hibrit (Her Ikisi)", "data_source_auto": "Otomatik", "database_enabled": "Veritabanı Erişimi", "database_enabled_help": "Veritabanı sorgularını etkinleştir", "db_query_indicator": "Veritabanı", "doc_query_indicator": "Dokümanlar", "hybrid_query_indicator": "Hibrit", "execution_time_label": "İşlem Süresi", "sql_query_label": "SQL Sorgusu", "db_results_label": "Veritabanı Sonuçları", }