- 实现ProviderFactory用于构建不同类型的provider适配器 - 添加EnvironmentCredentialResolver用于解析环境变量中的凭证 - 实现OllamaProvider支持本地模型调用 - 实现OpenAICompatibleProvider支持OpenAI兼容接口 - 在AgentRuntime中添加对ProviderError的处理 - 更新Message结构体添加tool_calls字段 - 实现provider配置的增删改查API端点 - 添加provider注册表的replace方法 - 添加HTTP基础类和工具参数解码功能 - 更新依赖添加httpx库 - 添加相关单元测试验证provider适配器功能 ```
38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
from collections.abc import AsyncIterator
|
|
from dataclasses import dataclass, field
|
|
from typing import Protocol
|
|
|
|
from app.contracts import ModelEvent, ModelInfo, ModelRequest
|
|
|
|
|
|
class ProviderError(RuntimeError):
|
|
def __init__(self, code: str, message: str) -> None:
|
|
super().__init__(message)
|
|
self.code = code
|
|
self.message = message
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class ProviderToolCall:
|
|
tool_call_id: str
|
|
name: str
|
|
arguments: dict[str, object] = field(default_factory=dict)
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class ProviderTurn:
|
|
text: str | None = None
|
|
tool_calls: list[ProviderToolCall] = field(default_factory=list)
|
|
input_tokens: int = 0
|
|
output_tokens: int = 0
|
|
|
|
|
|
class ModelProvider(Protocol):
|
|
async def complete(self, request: ModelRequest) -> ProviderTurn: ...
|
|
|
|
def stream(self, request: ModelRequest) -> AsyncIterator[ModelEvent]: ...
|
|
|
|
async def list_models(self) -> list[ModelInfo]: ...
|
|
|
|
async def test_connection(self, model: str | None = None) -> tuple[bool, str]: ...
|