Spaces:
Sleeping
Sleeping
File size: 861 Bytes
fd8dc28 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | """应用级单例 (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()
|