"""LLM Provider: 抽象基类 + 工厂""" from abc import ABC, abstractmethod from typing import Optional class LLMProvider(ABC): """LLM Provider 抽象接口""" @abstractmethod def chat(self, messages: list, max_tokens: int = 2000, temperature: float = 0.8, thinking: Optional[dict] = None, tools: Optional[list] = None) -> dict: """ 对话生成. 返回: {"content": str, "tool_calls": [...]|None} """ raise NotImplementedError @abstractmethod def name(self) -> str: raise NotImplementedError def create_llm(provider: str, api_key: str, base_url: str, model: str, fast_model: str, **kwargs) -> LLMProvider: """工厂: 按名称创建 Provider""" if provider == "deepseek": from .deepseek import DeepSeekProvider return DeepSeekProvider(api_key=api_key, base_url=base_url, model=model, fast_model=fast_model) if provider == "mock": from .mock import MockProvider return MockProvider() raise ValueError(f"未知 LLM Provider: {provider}")