File size: 1,134 Bytes
c2179b0 | 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 34 35 | """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}")
|