通过部署 codex-bridge 本地代理服务,可实现 OpenAI Responses API 与 Chat Completions API 之间的双向协议转换,使 Codex 客户端能够无缝调用 DeepSeek 等使用 Chat Completions 协议的模型 。核心实现步骤如下:

1. 环境准备与项目部署

  • 安装 Node.js 18+codex-bridge 基于 Node.js 运行 。
  • 获取 codex-bridge 项目:从 GitHub 仓库下载源码 。
  • 配置环境变量:在项目根目录,复制 env.example.env 文件并编辑,填入你的 DeepSeek API Key 。
    # .env 文件示例
    DEEPSEEK_API_KEY=your_deepseek_api_key_here
    PROXY_AUTH_KEY=sk-proxy-local-replace-with-48-char-hex # 用于代理服务认证
    
  • 启动代理服务:创建一个批处理文件(如 启动codex-bridge.cmd),内容为 node --env-file=.env proxy.mjs,并运行该文件启动服务。服务默认监听 http://127.0.0.1:4000

2. 协议转换的核心配置

codex-bridge 启动后,作为一个本地代理网关,它会:

  1. 接收 Codex 客户端的 Requests:Codex 客户端配置的 API 地址指向 http://127.0.0.1:4000/v1,并使用 .env 中定义的 PROXY_AUTH_KEY 作为 API Key 进行认证 。
  2. 进行协议转换:代理服务内部将 Codex 发来的 Responses API 格式的请求,转换为目标模型(如 DeepSeek)所需的 Chat Completions API 格式,并转发请求 。
  3. 反向转换与回传:收到模型返回的 Chat Completions 格式响应后,再将其转换回 Responses API 格式,返回给 Codex 客户端,完成一次完整的调用 。

3. 在 Codex 中应用转换服务(以 CC Switch 工具为例)

为了使 Codex 客户端使用上述代理服务,通常借助 CC Switch 等配置管理工具进行便捷切换:

  1. 添加供应商:在 CC Switch 中添加一个新的“统一供应商”。
  2. 配置连接
    • 名称:自定义(如 codex-bridge)。
    • API 地址http://127.0.0.1:4000/v1
    • API Key:填写 .env 文件中设置的 PROXY_AUTH_KEY(例如 sk-proxy-local-replace-with-48-char-hex)。
  3. 同步与启用:保存配置后,在 CC Switch 中同步模型列表,选择 DeepSeek 的模型(如 deepseek-chat),然后启用该配置。此后 Codex 的请求便会通过 codex-bridge 代理转发至 DeepSeek API 。

4. 关键协议差异与转换处理

codex-bridge 需要处理的核心协议差异包括:

特性 OpenAI Responses API (Codex) Chat Completions API (DeepSeek) 转换要点
端点路径 /v1/responses /v1/chat/completions 代理服务器进行路由转发和路径映射 。
工具调用格式 tools 字段内联在请求中 tool_calls 作为独立的 message 对象 在请求转换时,需将 tools 信息重构为符合 Chat Completions 格式的 messages 序列;在响应转换时,需将 tool_calls 消息转换回 Responses API 预期的格式 。
流式响应 (SSE) 支持 支持 代理需要正确处理分块流式数据的转发与协议适配,确保流式对话体验 。
思考模式 特定格式 可能要求 reasoning_content 回传 针对 DeepSeek V4 等模型的思考模式,需确保在协议转换中正确处理并回传推理内容,避免出现 The reasoning_content in the thinking mode must be passed back to the API. 类错误 。

5. 注意事项

  • 服务依赖:使用 Codex 调用 DeepSeek 前,必须确保 codex-bridge 代理服务已启动 。
  • 模型切换:通过 CC Switch 可随时切换回 default 配置以使用原始的 OpenAI 额度 。
  • 复杂问题处理:若遇到思考模式报错,可能需要根据社区方案调整 proxy.mjs 文件中的逻辑,以确保推理内容被正确传递 。

参考来源

更多推荐