QALoop / qa_annotate /config.py
jackkuo's picture
Add default LLM settings with LLM_API_KEY from environment
b3f878b
Raw
History Blame Contribute Delete
2.53 kB
"""全局配置模块,支持从环境变量和.env文件读取配置"""
from pathlib import Path
from typing import Optional
from dotenv import load_dotenv
from pydantic_settings import BaseSettings, SettingsConfigDict
# 加载.env文件(如果存在)
# 从项目根目录查找.env文件
env_path = Path(__file__).parent.parent.parent / ".env"
load_dotenv(dotenv_path=env_path)
class Settings(BaseSettings):
"""应用配置类"""
# 数据库配置(SQLite only)
DB_DIR: Optional[str] = None # 数据库目录路径,默认使用项目根目录下的data目录
DB_NAME: str = "annotations.db" # 数据库文件名
# 服务器配置
HOST: str = "0.0.0.0" # 服务器监听地址
PORT: int = 8000 # 服务器端口
RELOAD: bool = False # 是否启用自动重载(开发模式)
# 环境配置
ENVIRONMENT: str = "development" # 环境类型:development 或 production
PRODUCTION: bool = (
False # 是否为生产环境(PRODUCTION=true 等同于 ENVIRONMENT=production)
)
# 认证配置
TOKEN_EXPIRE_DAYS: int = 7 # Token过期天数
SECRET_KEY: str = "qaloop-demo-jwt-secret-key-32bytes" # JWT密钥,Demo 默认值,生产环境务必修改
ALGORITHM: str = "HS256" # JWT算法
# SQLAlchemy配置
SQLALCHEMY_ECHO: bool = False # 是否打印SQL语句
# LLM 默认配置(可通过环境变量覆盖;API Key 建议用 LLM_API_KEY 注入)
LLM_API_KEY: Optional[str] = None
LLM_BASE_URL: str = "http://43.159.131.233:3001/v1"
LLM_MODEL_NAME: str = "gpt-5.1"
model_config = SettingsConfigDict(
env_file=".env",
env_file_encoding="utf-8",
case_sensitive=True,
extra="ignore",
)
@property
def db_path(self) -> Path:
"""获取数据库文件路径"""
# 使用DB_DIR或默认路径
if self.DB_DIR:
db_dir = Path(self.DB_DIR)
else:
# 默认使用项目根目录下的data目录
db_dir = Path(__file__).parent.parent.parent / "data"
db_dir.mkdir(parents=True, exist_ok=True)
return db_dir / self.DB_NAME
@property
def database_url(self) -> str:
"""获取数据库URL(SQLite)"""
return f"sqlite:///{self.db_path}"
@property
def is_production(self) -> bool:
"""判断是否为生产环境"""
return self.ENVIRONMENT == "production" or self.PRODUCTION is True
# 创建全局配置实例
settings = Settings()