[3.1-3.5] FAM-Edge 全链路 - API-Gateway/Video-Preprocessor/AI-Orchestrator/模型适配器(基类+Ollama+Gemini)/熔断器/JSON解析容错 + 配置

This commit is contained in:
ericwyuan
2026-08-19 22:25:38 +08:00
parent da6b1c8d39
commit cdd1f21d4c
20 changed files with 1384 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
"""
适配器工厂 - 根据 config 创建适配器实例
新增模型只需:
1. 实现适配器类(继承 BaseModelAdapter
2. 在此工厂注册
3. 在 config.yaml 的 models 数组加一项
"""
from typing import List
from .base_adapter import BaseModelAdapter
from .ollama_adapter import OllamaAdapter
from .gemini_adapter import GeminiAdapter
from ..logger import setup_logger
logger = setup_logger('fam-edge.adapter_factory')
_ADAPTER_REGISTRY = {
"ollama": OllamaAdapter,
"gemini": GeminiAdapter,
# v1.1 扩展:
# "openai": OpenAIAdapter,
# "nvidia": NvidiaAdapter,
}
def build_adapter(config: dict) -> BaseModelAdapter:
"""根据 config 中的 provider 字段创建适配器"""
provider = config.get('provider', '')
adapter_cls = _ADAPTER_REGISTRY.get(provider)
if adapter_cls is None:
raise ValueError(f"未知的模型 provider: {provider},请先注册适配器")
return adapter_cls(config)
def build_adapters(configs: List[dict]) -> List[BaseModelAdapter]:
"""批量创建适配器(仅 enabled 的)"""
adapters = []
for cfg in configs:
if not cfg.get('enabled', False):
continue
try:
adapter = build_adapter(cfg)
adapters.append(adapter)
logger.info(f"适配器已创建: {adapter.provider_name} ({cfg.get('model_name', '?')})")
except Exception as e:
logger.error(f"创建适配器失败 ({cfg.get('provider', '?')}): {e}")
return adapters
def register_adapter(provider_name: str, adapter_cls):
"""注册新适配器(供扩展使用)"""
_ADAPTER_REGISTRY[provider_name] = adapter_cls
logger.info(f"适配器已注册: {provider_name}")