3.9 KiB
3.9 KiB
1. 路径与 Adapter 映射
- 1.0 对照 docs/api_reference/openai(忽略 responses 目录)和 docs/api_reference/anthropic 确认本次涉及接口的协议原生路径,并将确认结果写入对应 adapter 测试用例
- 1.1 确认 OpenAI adapter 识别剥离协议前缀后的
/chat/completions、/models、/embeddings、/rerank路径并补充测试 - 1.2 确认 Anthropic adapter 识别剥离协议前缀后的
/v1/messages、/v1/models、/v1/models/{id}路径并补充测试 - 1.3 补充 BuildUrl 测试,确认 OpenAI
base_url=http://xxx.com/v1组合为/v1/chat/completions,Anthropicbase_url=http://xxx.com组合为/v1/messages - 1.4 修改 ConversionEngine 同协议请求 URL 构建逻辑,统一使用 providerAdapter.BuildUrl(nativePath, interfaceType)
- 1.5 更新 ProxyHandler 和路由测试,确认网关只剥离协议前缀,不对 nativePath 添加或移除
/v1
2. 错误响应与上游透传
- 2.1 增加网关层代理错误响应工具,统一输出
{error, code}和对应 HTTP 状态码 - 2.2 将路由失败、JSON 解析失败、转换失败、上游不可达等网关错误改为应用统一错误格式
- 2.3 在非流式 handler 中对上游非 2xx 响应绕过 ConvertHttpResponse 并透传 status、过滤后的 headers、body
- 2.4 实现 hop-by-hop response header 过滤并补充单元测试
- 2.5 调整 ProviderClient 或调用方错误返回,使未收到上游 HTTP 响应时可返回
UPSTREAM_UNAVAILABLE
3. 流式链路
- 3.1 调整 ProviderClient 流式能力,使 handler 可区分上游 2xx 流、上游非 2xx 响应和上游不可达错误
- 3.2 实现同协议无 model 改写时的 raw SSE passthrough,保留 frame 边界和
[DONE] - 3.3 实现 SSE frame 解析与重建工具,覆盖 LF、CRLF、多 data 行和空 frame
- 3.4 实现同协议流式 Smart Passthrough,在 SSE data JSON 内改写 model,失败时输出原 frame 并继续
- 3.5 确保跨协议流式仍走 provider StreamDecoder 到 client StreamEncoder 的 CanonicalStreamConverter
4. 路由与能力边界
- 4.1 明确 adapter 的 ExtractModelName 只支持已适配接口,PASSTHROUGH 或未适配接口返回错误或空结果
- 4.2 修改 ProxyHandler,未知接口不做通用顶层 model 猜测,按无 model 请求走 forwardPassthrough
- 4.3 保留原始模型名兼容透传逻辑,有效统一模型 ID 但路由失败时返回
MODEL_NOT_FOUND - 4.4 在跨协议转换中检测 image、audio、video、file 内容块并返回
UNSUPPORTED_MULTIMODAL - 4.5 确保同协议 Smart Passthrough 不因多模态字段存在而拒绝请求
5. 测试
- 5.1 补充 OpenAI
/openai/chat/completions和 Anthropic/anthropic/v1/messages的 handler、E2E 测试 - 5.2 补充 nativePath 保持协议原生路径的测试,断言 OpenAI adapter 接收
/chat/completions、Anthropic adapter 接收/v1/messages - 5.3 补充同协议流式 raw passthrough 测试,断言 SSE frame 边界和
[DONE]保留 - 5.4 补充同协议流式 Smart Passthrough 测试,断言响应 model 改写为统一模型 ID
- 5.5 补充非流式和流式上游非 2xx 错误透传测试
- 5.6 补充网关层错误统一格式测试,覆盖
INVALID_JSON、MODEL_NOT_FOUND、CONVERSION_FAILED、UPSTREAM_UNAVAILABLE - 5.7 补充未知接口不提取 model 的透传测试
- 5.8 补充跨协议多模态返回
UNSUPPORTED_MULTIMODAL测试
6. 文档与验证
- 6.1 更新 README.md 的代理接口路径、错误边界和 base_url 约定说明
- 6.2 更新 backend/README.md 的代理接口路径、错误边界和流式透传说明
- 6.3 更新 docs/conversion_design.md,使路径、三车道流式行为、错误处理和 adapter 模型提取边界与实现一致
- 6.4 运行
go test ./internal/conversion/...并确保通过 - 6.5 运行
go test ./tests/integration并确保通过