"""LLM 后端注册表（可插拔入口）。

config.yaml 的 llm_screen.provider 选择后端；OpenAI 兼容厂商（openai/deepseek/qwen/moonshot）
统一映射到 openai_compat 实现。
"""
from typing import Dict

from .base import LLMBackend
from .mock_backend import MockBackend
from .openai_compat_backend import OpenAICompatBackend, DEFAULT_SYSTEM_PROMPT

LLM_BACKENDS: Dict[str, type] = {
    "mock": MockBackend,
    "openai_compat": OpenAICompatBackend,
}
# 厂商别名 -> openai_compat（它们都走 OpenAI 兼容协议）
_ALIASES: Dict[str, str] = {
    "openai": "openai_compat",
    "deepseek": "openai_compat",
    "qwen": "openai_compat",
    "moonshot": "openai_compat",
}


def get_backend(name: str) -> LLMBackend:
    key = _ALIASES.get(name, name)
    cls = LLM_BACKENDS.get(key)
    if cls is None:
        raise ValueError(f"未知 LLM 后端: {name}，可用: {list(LLM_BACKENDS)} (+别名 {list(_ALIASES)})")
    return cls()
