功能 · 协议转换

为编程 Agent 准备的本地 OpenAI ⇄ Anthropic 协议转换

Agent 说一种 API,模型说另一种。AutoJev 在 OpenAI Chat Completions、OpenAI Responses 和 Anthropic Messages 之间六个方向互转,流式输出和工具调用都不落下,任何 Agent 都能用上任何兼容模型。

  • 三种 API 之间六个方向互转
  • 支持流式输出和函数工具调用
  • 图片、结构化输出、用量和错误
  • 协议一致时原生直通

一个地址,三种协议

127.0.0.1:9527/v1

Chat Completions
Responses
Messages

Chat Completions

/v1/chat/completions

—

Responses

/v1/responses

—

Messages

/v1/messages

—
ResponsesDeepSeek · Chat
MessagesOpenAI · Responses
ChatAnthropic · Messages

Agent 的协议和模型的 API 是两回事

Codex 发的是 OpenAI Responses 请求,Claude Code 发的是 Anthropic Messages,Hermes 和很多开源 Agent 用的是 Chat Completions。而大多数服务商——DeepSeek、Ollama、vLLM 以及各种 OpenAI 兼容接口——只提供 Chat Completions,也有一些只提供 Messages。

AutoJev 把这两件事分开处理:每个模型有自己的「API 类型」,描述上游服务用什么协议;每个 Agent 调用自己认识的网关接口。两边不一致时,AutoJev 在请求发出时转换、在响应返回时再转回来;两边一致时则原生直通,保留服务商特有的字段。

转换矩阵

行是 Agent 调用的 http://127.0.0.1:9527 接口,列是所选上游模型的 API 类型。

Agent 调用的接口Chat Completions 上游Responses 上游Messages 上游
POST /v1/chat/completions原生转换转换
POST /v1/responses转换原生转换
POST /v1/messages转换转换原生

Gemini CLI 走单独的桥接接口 /v1beta/models/{*},对接到 Chat Completions。

让 Codex 的 Responses API 用上 Chat Completions 模型

Codex 向 AutoJev 发送 Responses 请求;AutoJev 选中一个 API 类型为 Chat Completions 的模型,转换请求和工具调用历史,调用服务商的 /v1/chat/completions,再把结果以 Responses 事件流式返回。Claude Code 也可以通过 /v1/messages 使用同一个上游。

一个地址,三种协议

127.0.0.1:9527/v1

Chat Completions
Responses
Messages

Chat Completions

/v1/chat/completions

—

Responses

/v1/responses

—

Messages

/v1/messages

—
ResponsesDeepSeek · Chat
MessagesOpenAI · Responses
ChatAnthropic · Messages

哪些内容会被转换

  • 系统指令与多轮文本对话
  • URL 或 base64 形式的图片
  • 函数工具定义、工具选择、工具调用与结果,调用 ID 保持稳定
  • Responses 自定义工具:映射为带字符串 input 参数的函数,返回后再解码回来
  • 流式文本与工具参数,网络分片中被截断的 UTF-8 字符也能正确拼接
  • 完成状态、Token 用量,以及符合目标协议格式的错误
  • 通用的采样参数和输出 Token 上限
  • Chat Completions 与 Responses 之间的结构化输出格式

同一个模型,三种 API 都能调

客户端用哪种接口都行。下面这个 Anthropic 风格的请求,会由路由选中的模型回答,不管那个模型本身是什么 API。

通过 AutoJev 发送 Anthropic Messages 请求
curl http://127.0.0.1:9527/v1/messages \ -H 'Content-Type: application/json' \ -H 'x-api-key: autojev-local-byok' \ -H 'anthropic-version: 2023-06-01' \ -d '{"model":"autojev/fast","max_tokens":1024,"messages":[{"role":"user","content":"Hello"}]}'

能力边界,提前说清楚

协议转换解决的是「能对上话」,不会让模型变得更强,有些功能在另一侧也根本没有对应物。

不会凭空增加能力

转换无法给模型加上视觉、工具调用、推理能力或更长的上下文。这类请求会照常转发,由上游决定是否支持。

转换时会被拒绝的内容

Responses 的 previous_response_id 和 conversation、联网搜索等托管工具、带命名空间的工具、音频与文件内容、多候选输出。需要这些功能时请使用原生上游。

思考内容无法跨协议

各家特有的 thinking 块、加密推理内容和签名会被丢弃,推理强度控制和提示词缓存提示也不会转换。

结构化输出的范围

结构化输出格式只在 Chat Completions 和 Responses 之间转换,不涉及 Anthropic Messages。

流出错就报错,不会假装成功

上游流中断或格式异常时,AutoJev 会返回错误,而不是当作正常结束。转换后的响应上限 16 MiB,单个 SSE 帧上限 2 MiB,上游空闲读取超过 120 秒即超时。

常见问题

能在本地把 OpenAI API 调用转成 Anthropic API 吗?

可以。向 AutoJev 发送 Chat Completions 或 Responses 请求,并选择 API 类型为 Anthropic Messages 的模型,AutoJev 会在本机双向转换请求、工具和流式事件。

怎么让 Codex 使用只支持 Chat Completions 的模型?

把模型的 API 类型设为 chat_completions,然后在「Agent」页面连接 Codex。Codex 照常发送 Responses 请求,由 AutoJev 负责转换。不要因为客户端是 Codex 就把模型的 API 类型改成 Responses。

Claude Code 能用 DeepSeek 或其他 OpenAI 兼容模型吗?

Claude Code 向 AutoJev 发送 Anthropic Messages,AutoJev 再转换给任意 Chat Completions 或 Responses 上游。依赖模型私有推理状态的 Agent 循环,可能仍需使用该模型的原生 API。

跨协议时支持工具调用和流式输出吗?

支持。函数工具定义、工具选择、调用和结果都会转换,调用 ID 保持稳定;文本和工具参数随到随转,流式返回。

哪些内容不会被转换?

previous_response_id 和 conversation 状态、联网搜索等托管工具、音频与文件内容,以及 thinking 块。需要这些的请求会被拒绝或相应内容被省略,请改用原生上游。

继续了解

更新于 2026-10-14

给每个智能体,配上合适的模型。

安装 AutoJev,添加你已有的模型服务商,一键接入智能体。所有数据都留在你的电脑上。

免费开源 · macOS · Windows · Linux