base.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. """智能体基类 —— LLM 初始化、配置读取与通用工具方法."""
  2. from __future__ import annotations
  3. import logging
  4. from typing import Any
  5. from ..services.llm.llm_service import get_llm
  6. from ..settings import get_settings
  7. logger = logging.getLogger(__name__)
  8. class BaseAgent:
  9. def __init__(self) -> None:
  10. self._settings = get_settings()
  11. self.llm = self._init_llm()
  12. def _init_llm(self) -> Any:
  13. try:
  14. return get_llm()
  15. except Exception as e:
  16. logger.exception("[%s] LLM 初始化失败", type(self).__name__)
  17. raise RuntimeError(f"{type(self).__name__}_llm_init_failed") from e
  18. def _cfg(self, name: str, default: Any = None) -> Any:
  19. return getattr(self._settings, name, default)
  20. def _cfg_int(self, name: str, default: int = 0) -> int:
  21. try:
  22. return int(self._cfg(name, default))
  23. except (TypeError, ValueError):
  24. return int(default)
  25. @staticmethod
  26. def _clip(value: Any, limit: int) -> str:
  27. return str(value or "").strip()[:limit]