mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-08-31 04:57:23 +08:00
70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
"""LLM helper 与 provider 实现之间的运行时端口。"""
|
|
|
|
from collections.abc import Callable
|
|
from typing import Any, Protocol
|
|
|
|
|
|
class LLMProviderRuntimePort(Protocol):
|
|
"""声明 LLM helper 与管理 API 共用的 provider 运行时能力。"""
|
|
|
|
def resolve_cached_model_metadata(self, **kwargs: Any) -> dict[str, Any] | None:
|
|
"""从本地目录缓存解析模型元数据。"""
|
|
...
|
|
|
|
async def resolve_runtime(self, **kwargs: Any) -> dict[str, Any]:
|
|
"""解析创建模型客户端所需的统一运行时参数。"""
|
|
...
|
|
|
|
def create_bedrock_client(self, *args: Any, **kwargs: Any) -> Any:
|
|
"""创建带统一认证和网络配置的 Bedrock 客户端。"""
|
|
...
|
|
|
|
async def list_models(self, **kwargs: Any) -> list[dict[str, Any]]:
|
|
"""返回 provider 可用的模型目录。"""
|
|
...
|
|
|
|
def resolve_model_list_base_url(self, **kwargs: Any) -> str | None:
|
|
"""解析兼容接口用于查询模型列表的基础地址。"""
|
|
...
|
|
|
|
async def provider_manage(
|
|
self,
|
|
provider: str,
|
|
action: str,
|
|
**params: Any,
|
|
) -> dict[str, Any]:
|
|
"""执行与具体提供商无关的统一管理动作。"""
|
|
...
|
|
|
|
async def handle_chatgpt_callback(
|
|
self,
|
|
provider_id: str,
|
|
code: str | None,
|
|
state: str | None,
|
|
error: str | None,
|
|
error_description: str | None,
|
|
) -> tuple[bool, str]:
|
|
"""完成 ChatGPT OAuth 回调并返回公开结果。"""
|
|
...
|
|
|
|
|
|
LLMProviderRuntimeFactory = Callable[[], LLMProviderRuntimePort]
|
|
_provider_runtime_factory: LLMProviderRuntimeFactory | None = None
|
|
|
|
|
|
def register_llm_provider_runtime(
|
|
factory: LLMProviderRuntimeFactory | None,
|
|
) -> LLMProviderRuntimeFactory | None:
|
|
"""注册 provider 运行时工厂,并返回先前工厂供隔离测试恢复。"""
|
|
global _provider_runtime_factory
|
|
previous = _provider_runtime_factory
|
|
_provider_runtime_factory = factory
|
|
return previous
|
|
|
|
|
|
def resolve_llm_provider_runtime() -> LLMProviderRuntimePort:
|
|
"""解析已组装的 provider 运行时,未注册时给出明确边界错误。"""
|
|
if _provider_runtime_factory is None:
|
|
raise RuntimeError("LLM provider 运行时尚未由启动层完成组装")
|
|
return _provider_runtime_factory()
|