import os from dotenv import load_dotenv # 加载环境变量 load_dotenv() class Config: """应用配置类""" # 应用基本配置 APP_NAME = os.getenv("APP_NAME", "Easy RAG Service") APP_VERSION = os.getenv("APP_VERSION", "1.0.0") DEBUG = os.getenv("DEBUG", "False").lower() == "true" # 服务器配置 HOST = os.getenv("HOST", "0.0.0.0") PORT = int(os.getenv("PORT", 8000)) # OpenAI 配置 OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") OPENAI_BASE_URL = os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1") # 模型配置 EMBEDDING_MODEL_PATH = os.getenv("EMBEDDING_MODEL_PATH", "") EMBEDDING_MODEL_TYPE = os.getenv("EMBEDDING_MODEL_TYPE", "") EMBEDDING_MODEL_DEVICE = os.getenv("EMBEDDING_MODEL_DEVICE", "") RERANK_MODEL_PATH = os.getenv("RERANK_MODEL_PATH", "") RERANK_MODEL_TYPE = os.getenv("RERANK_MODEL_TYPE", "") RERANK_MODEL_DEVICE = os.getenv("RERANK_MODEL_DEVICE", "") # 向量数据库配置 CHROMA_PERSIST_DIRECTORY = os.getenv("CHROMA_PERSIST_DIRECTORY", "./chroma_db") # 文件上传配置 UPLOAD_DIR = os.getenv("UPLOAD_DIR", "./uploads") MAX_FILE_SIZE = int(os.getenv("MAX_FILE_SIZE", 10485760)) # 10MB # 日志配置 LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO") LOG_DIR = os.getenv("LOG_DIR", "./logs") # Tokenizers 配置 TOKENIZERS_PARALLELISM = os.getenv("TOKENIZERS_PARALLELISM", "false") # 认证配置 AUTH_ENABLED = os.getenv("AUTH_ENABLED", "true").lower() == "true" API_TOKEN = os.getenv("API_TOKEN", "easy-rag-token-2025") @classmethod def validate(cls): """验证配置""" if not cls.OPENAI_API_KEY: raise ValueError("OPENAI_API_KEY 环境变量未设置") # 设置 tokenizers 并行化配置 os.environ["TOKENIZERS_PARALLELISM"] = cls.TOKENIZERS_PARALLELISM # 创建必要的目录 os.makedirs(cls.UPLOAD_DIR, exist_ok=True) os.makedirs(cls.LOG_DIR, exist_ok=True) os.makedirs(cls.CHROMA_PERSIST_DIRECTORY, exist_ok=True) # 创建配置实例 config = Config()