import os from dotenv import load_dotenv load_dotenv(override=True) GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "") OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY", "") OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "") DEFAULT_MODEL = "gemini-2.5-flash" # Redis REDIS_URL = os.getenv("REDIS_URL", "") REDIS_HOST = os.getenv("REDIS_HOST", "localhost") REDIS_PORT = int(os.getenv("REDIS_PORT", "6379")) REDIS_DB = int(os.getenv("REDIS_DB", "0")) REDIS_PASSWORD = os.getenv("REDIS_PASSWORD", None) REDIS_KEY_PREFIX = os.getenv("REDIS_KEY_PREFIX", "ai_agent") if REDIS_URL: import urllib.parse as urlparse url = urlparse.urlparse(REDIS_URL) REDIS_HOST = url.hostname or REDIS_HOST REDIS_PORT = url.port or REDIS_PORT REDIS_PASSWORD = url.password or REDIS_PASSWORD if url.path: REDIS_DB = int(url.path[1:]) # Qdrant QDRANT_URL = os.getenv("QDRANT_URL", "") QDRANT_API_KEY = os.getenv("QDRANT_API_KEY", "") # Supabase SUPABASE_URL = os.getenv("SUPABASE_URL", "") SUPABASE_SERVICE_ROLE_KEY = os.getenv("SUPABASE_SERVICE_ROLE_KEY", "") # Logging LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO") # LangSmith tracing # load_dotenv(override=True) đã set os.environ từ .env; block này đảm bảo project name # có giá trị mặc định và tracing được kích hoạt đúng thứ tự trước khi # bất kỳ LangChain chain nào được khởi tạo. LANGCHAIN_TRACING_V2 = os.getenv("LANGCHAIN_TRACING_V2", "false") LANGCHAIN_API_KEY = os.getenv("LANGCHAIN_API_KEY", os.getenv("LANGSMITH_API_KEY", "")) LANGCHAIN_PROJECT = os.getenv("LANGCHAIN_PROJECT", "a20-study-group-assistant") if LANGCHAIN_TRACING_V2.lower() == "true" and LANGCHAIN_API_KEY: os.environ["LANGCHAIN_TRACING_V2"] = "true" os.environ["LANGCHAIN_API_KEY"] = LANGCHAIN_API_KEY os.environ["LANGCHAIN_PROJECT"] = LANGCHAIN_PROJECT