Spaces:
Sleeping
Sleeping
| """应用级单例 (LLM, embedder, vector store, etc.) 的获取与生命周期. | |
| 被 main.py lifespan 和各 router 复用. 保持依赖注入简单, 不引入 DI 框架. | |
| """ | |
| from __future__ import annotations | |
| import logging | |
| from typing import TYPE_CHECKING | |
| from app.config import settings | |
| from app.llm.base import AbstractLLM | |
| if TYPE_CHECKING: | |
| from app.services.persist import persist_status | |
| logger = logging.getLogger(__name__) | |
| def get_llm() -> AbstractLLM: | |
| """从工厂取 LLM 单例. 失败时抛出 LLMUnavailableError.""" | |
| from app.llm.factory import get_llm as _factory_get_llm | |
| return _factory_get_llm() | |
| async def close_llm() -> None: | |
| from app.llm.factory import close_llm as _factory_close | |
| await _factory_close() | |
| def persist_status() -> dict: | |
| from app.services.persist import persist_status as _ps | |
| return _ps() | |