1
0

refactor: 实现 ConversionEngine 协议转换引擎,替代旧 protocol 包

引入 Canonical Model 和 ProtocolAdapter 架构,支持 OpenAI/Anthropic 协议间
无缝转换,统一 ProxyHandler 替代分散的 OpenAI/Anthropic Handler,简化
ProviderClient 为协议无关的 HTTP 发送器,Provider 新增 protocol 字段。
This commit is contained in:
2026-04-20 00:36:27 +08:00
parent 26810d9410
commit 1dac347d3b
65 changed files with 9690 additions and 2139 deletions

View File

@@ -7,14 +7,14 @@
- **引入 Canonical Model**:定义协议无关的 `CanonicalRequest``CanonicalResponse``CanonicalStreamEvent` 等规范模型,作为所有协议间转换的统一枢纽
- **引入 ConversionEngine**:无状态的转换引擎门面,协调 Adapter 注册、接口识别、透传判断、请求/响应转换、流式转换
- **引入 ProtocolAdapter 接口**统一适配器契约每种协议实现完整的编解码Chat 请求/响应、流式、扩展层接口、错误编码)
- **实现 OpenAI Adapter**:对照 `docs/conversion_openai.md` 实现 OpenAI 协议的完整 Adapter含状态机流式解码器/编码器)
- **实现 Anthropic Adapter**:对照 `docs/conversion_anthropic.md` 实现 Anthropic 协议的完整 Adapter含命名事件流式解码器/编码器)
- **实现 OpenAI Adapter**:对照 `docs/conversion_openai.md` 全新实现 OpenAI 协议的完整 Adapter含状态机流式解码器/编码器),不沿用旧 `internal/protocol/openai/` 代码
- **实现 Anthropic Adapter**:对照 `docs/conversion_anthropic.md` 全新实现 Anthropic 协议的完整 Adapter含命名事件流式解码器/编码器),不沿用旧 `internal/protocol/anthropic/` 代码
- **统一代理 Handler**:合并 `OpenAIHandler``AnthropicHandler` 为统一的 `ProxyHandler`,支持 `/{protocol}/v1/...` URL 前缀路由
- **同协议透传**client == provider 时跳过 Canonical 转换,仅重建 Header 后原样转发
- **接口分层**核心层Chat走 Canonical 深度转换扩展层Models/Embeddings/Rerank走轻量映射未知接口走透传
- **ProviderClient 简化**:移除 OpenAI Adapter 硬编码,变为协议无关的 HTTP 发送器
- **Provider 新增 Protocol 字段****BREAKING** — Provider 模型新增 `protocol` 字段标识上游协议类型
- **删除旧 protocol 包**:移除 `internal/protocol/openai/``internal/protocol/anthropic/`全部逻辑迁入 `internal/conversion/`
- **删除旧 protocol 包**:移除 `internal/protocol/openai/``internal/protocol/anthropic/` `internal/conversion/` 中全新实现
- **URL 路由变更****BREAKING** — 代理端点从 `/v1/chat/completions` + `/v1/messages` 变更为 `/{protocol}/v1/...`,不保留旧路由
## Capabilities
@@ -37,7 +37,7 @@
## Impact
- **代码结构**:新增 `internal/conversion/` 包(约 20+ 文件),删除 `internal/protocol/` 包,改造 `internal/handler/``internal/provider/`
- **代码结构**:新增 `internal/conversion/` 包(约 20+ 文件,全新编写),删除 `internal/protocol/`(不迁移,直接删除后重写),改造 `internal/handler/``internal/provider/`
- **API 兼容性****BREAKING** — 代理端点 URL 变更(`/v1/chat/completions``/openai/v1/chat/completions``/v1/messages``/anthropic/v1/messages`),不保留旧路由
- **数据库**Provider 表新增 `protocol` 列,需数据库迁移
- **依赖**:无新增外部依赖,复用现有 Go 标准库和已引入的包