| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- from pydantic_settings import BaseSettings
- from typing import Optional
- class Settings(BaseSettings):
- # LLM
- llm_api_key: str
- llm_base_url: str = "https://api.deepseek.com/v1"
- llm_model: str = "deepseek-chat"
- # Embedding
- embedding_api_key: Optional[str] = None
- embedding_base_url: Optional[str] = None
- embedding_model: str = "text-embedding-v3"
- # Java Backend
- java_base_url: str = "http://localhost:9082"
- java_context_url: Optional[str] = None
- # LangSmith
- langchain_tracing_v2: bool = False
- langchain_api_key: Optional[str] = None
- langchain_project: str = "cfc-langgraph"
- # Service
- service_host: str = "0.0.0.0"
- service_port: int = 9000
- log_level: str = "info"
- # Dify Fallback
- dify_base_url: Optional[str] = None
- dify_tongue_api_key: Optional[str] = None
- # Chroma
- chroma_db_path: str = "./data/chroma_db"
- model_config = {"env_file": ".env", "env_file_encoding": "utf-8"}
- @property
- def effective_embedding_api_key(self) -> str:
- return self.embedding_api_key or self.llm_api_key
- @property
- def effective_embedding_base_url(self) -> str:
- return self.embedding_base_url or self.llm_base_url
- @property
- def effective_java_context_url(self) -> str:
- return self.java_context_url or f"{self.java_base_url}/api/ai/context"
- settings = Settings()
|