config.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from pydantic_settings import BaseSettings
  2. from typing import Optional
  3. class Settings(BaseSettings):
  4. # LLM
  5. llm_api_key: str
  6. llm_base_url: str = "https://api.deepseek.com/v1"
  7. llm_model: str = "deepseek-chat"
  8. # 部分模型(如 kimi-k2.6)仅允许 temperature=1,统一从配置读取便于切换模型时调整
  9. llm_temperature: float = 1.0
  10. # Embedding
  11. embedding_api_key: Optional[str] = None
  12. embedding_base_url: Optional[str] = None
  13. embedding_model: str = "text-embedding-v3"
  14. # Java Backend
  15. java_base_url: str = "http://localhost:9082"
  16. java_context_url: Optional[str] = None
  17. # LangSmith
  18. langchain_tracing_v2: bool = False
  19. langchain_api_key: Optional[str] = None
  20. langchain_project: str = "cfc-langgraph"
  21. # Service
  22. service_host: str = "0.0.0.0"
  23. service_port: int = 9000
  24. log_level: str = "info"
  25. # Dify Fallback
  26. dify_base_url: Optional[str] = None
  27. dify_tongue_api_key: Optional[str] = None
  28. # Chroma
  29. chroma_db_path: str = "./data/chroma_db"
  30. model_config = {"env_file": ".env", "env_file_encoding": "utf-8"}
  31. @property
  32. def effective_embedding_api_key(self) -> str:
  33. return self.embedding_api_key or self.llm_api_key
  34. @property
  35. def effective_embedding_base_url(self) -> str:
  36. return self.embedding_base_url or self.llm_base_url
  37. @property
  38. def effective_java_context_url(self) -> str:
  39. return self.java_context_url or f"{self.java_base_url}/api/ai/context"
  40. settings = Settings()