协议支持矩阵
本页描述当前版本里“已经落地到代码并可直接调用”的协议支持范围。
当前支持的协议
- OpenAI Chat Completions
- OpenAI Responses
- Anthropic Claude Messages
- Google Gemini GenerateContent
图例
✅已支持🟡部分支持❌未完整支持
能力矩阵
| 能力 | OpenAI Chat | OpenAI Responses | Claude | Gemini |
|---|---|---|---|---|
| 请求文本输入 | ✅ | ✅ | ✅ | ✅ |
| 请求图片 URL 输入 | ✅ | ✅ | ✅ | ✅ |
| 请求 Base64 图片输入 | ❌ | ❌ | ✅ | ✅ |
| 请求工具定义 | ✅ | ✅ | ✅ | ✅ |
| 请求工具调用消息 | ✅ | ✅ | ✅ | ✅ |
| 请求工具结果消息 | ✅ | ✅ | ✅ | ✅ |
| 非流式文本响应 | ✅ | ✅ | ✅ | ✅ |
| 非流式图片/视频输出 | ❌ | ❌ | ❌ | ❌ |
| 流式文本增量 | ✅ | ✅ | ✅ | ✅ |
| 流式开始/结束/usage 事件 | ✅ | ✅ | ✅ | ✅ |
| provider 高级字段透传 | 🟡 | 🟡 | 🟡 | 🟡 |
按协议理解
OpenAI Chat
当前适合作为:
- 文本对话协议源
- 网关兼容层对外协议
- 多轮消息和图片 URL 输入场景
已覆盖:
assistant.tool_callstool消息- 常见采样参数
OpenAI Responses
当前已覆盖:
function_callfunction_call_output- 响应与流式事件的标准化映射
适合:
- 以 Responses 为统一接口的新应用
- 需要与其他 provider 做能力互转的场景
Claude
当前已覆盖:
tool_usetool_result- 图片 URL 输入
- Base64 图片输入
适合:
- Claude 风格消息接口适配
- 从 OpenAI/Responses 迁移到 Claude 风格输入的场景
Gemini
当前在请求侧的多模态映射相对完整,尤其是:
- 图片 URL
- Base64 图片
- 工具调用
- 工具结果
适合:
- 多模态输入较多的场景
- 希望把其他协议请求转成 Gemini 请求的场景
流式支持说明
OpenTrans 当前优先统一以下流式能力:
- 响应开始
- 文本增量
- 响应结束
- usage
对于完整代理级 SSE 语义:
- SDK 层提供
ConvertStreamEventBody - Gin 层提供
ginx.ConvertStreamEventBody
Gin 中间件当前已经支持:
CRLF- 多行
data: event:/id:/ comment 透传
设计取舍
OpenTrans 优先覆盖“跨协议最常见、最稳定的公共能力”。这意味着:
- 文本、多轮消息、基础工具调用优先
- 高级 provider-specific 字段以保留为主
- 多模态输出能力会在标准化模型稳定后继续扩展
使用建议
如果你的业务非常依赖某一家 provider 的私有字段,建议采用:
Normalize*- 在标准化层插入你自己的保留逻辑
- 通过
Metadata/Extra保存非标准字段 - 再
Marshal*到目标协议