config.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. # Embedding
  9. embedding_api_key: Optional[str] = None
  10. embedding_base_url: Optional[str] = None
  11. embedding_model: str = "text-embedding-v3"
  12. # Java Backend
  13. java_base_url: str = "http://localhost:9082"
  14. java_context_url: Optional[str] = None
  15. # LangSmith
  16. langchain_tracing_v2: bool = False
  17. langchain_api_key: Optional[str] = None
  18. langchain_project: str = "cfc-langgraph"
  19. # Service
  20. service_host: str = "0.0.0.0"
  21. service_port: int = 9000
  22. log_level: str = "info"
  23. # Dify Fallback
  24. dify_base_url: Optional[str] = None
  25. dify_tongue_api_key: Optional[str] = None
  26. # Chroma
  27. chroma_db_path: str = "./data/chroma_db"
  28. model_config = {"env_file": ".env", "env_file_encoding": "utf-8"}
  29. @property
  30. def effective_embedding_api_key(self) -> str:
  31. return self.embedding_api_key or self.llm_api_key
  32. @property
  33. def effective_embedding_base_url(self) -> str:
  34. return self.embedding_base_url or self.llm_base_url
  35. @property
  36. def effective_java_context_url(self) -> str:
  37. return self.java_context_url or f"{self.java_base_url}/api/ai/context"
  38. settings = Settings()