import os from functools import lru_cache from pydantic import Field from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): """FastAPI 配置,统一读取 .env 或系统环境变量""" model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", case_sensitive=False, extra="ignore") app_name: str = Field("AIMNOTE Ingest Service", env="INGEST_APP_NAME") environment: str = Field("development", env="INGEST_ENV") api_prefix: str = "/api" supabase_url: str = Field("http://127.0.0.1:54321", env="SUPABASE_URL") supabase_key: str = Field("", env="SUPABASE_SERVICE_ROLE_KEY") lightrag_url: str = Field("http://127.0.0.1:7777", env="LIGHTRAG_URL") lightrag_api_key: str = Field("", env="LIGHTRAG_API_KEY") ollama_base_url: str = Field("http://127.0.0.1:11434/v1", env="OLLAMA_BASE_URL") ollama_api_key: str = Field("ollama", env="OLLAMA_API_KEY") embeddings_model: str = Field("qwen3-embedding:8b", env="EMBEDDING_MODEL") llm_model: str = Field("qwen3:32b", env="DEFAULT_LLM_MODEL") rerank_model: str = Field("qwen3-reranker-4b", env="RERANK_MODEL") @lru_cache() def get_settings() -> Settings: return Settings()