来源:互联网 更新时间:2026-06-01 07:44
最近有个小工具 GodeX——一个本地 OpenAI Responses API 网关,专门用来让 Codex、CLI Agent 这类客户端接入 DeepSeek、Xiaomi、MiniMax、Zhipu 等 Chat Completions provider。
一开始,这个问题看起来挺简单:
但真做下去就会发现,事情远没有这么轻。
普通聊天请求可以转,但 Agent 请求不一样。它可能带工具调用、结构化输出、流式响应、previous_response_id、usage、cached tokens、reasoning、provider-specific finish reason。只做字段改名,很快就会陷入一堆边界问题。
这篇文章不谈“项目发布”,重点聊一聊在做 GodeX 时遇到的几个协议桥接点。
最直觉的结构是:
Responses request-> gateway-> Chat Completions request-> provider response-> gateway-> Responses response
如果只有 input -> output_text,问题不大。
但 Agent 请求里会出现:
tool_choice;previous_response_id;这些能力在不同 provider 上支持程度不一致。
比如 tool_choice: required,有的 provider 支持,有的不支持。有的只支持 auto。如果网关静默降级,Agent 行为可能直接变了:本来必须调用工具,结果模型开始自由回答。
所以 GodeX 做了一层 compatibility plan:请求进来以后,根据 provider capability 判断哪些能力原生支持、哪些需要降级、哪些必须拒绝,并把结果写入 diagnostics。
一个容易走偏的设计是:每个 provider 里写一套 mapper。
deepseek mapper
zhipu mapper
minimax mapper
xiaomi mapper
短期看很快,长期会有两个问题。
第一,公共逻辑重复。工具调用恢复、结构化输出降级、Responses output item 重建,这些逻辑会散落到每个 provider。
第二,策略不一致。今天 DeepSeek 对 strict schema 降级,明天 Zhipu 直接报错,后天 MiniMax 静默丢字段。客户端看到的行为会越来越不可预测。
GodeX 的做法是把边界拆开:
bridge 管公共 Responses-to-Chat 策略;providers 只描述 provider 差异;responses 管同步/流式 pipeline;trace 管可观测性。Provider 只回答:
至于“降级还是拒绝”,由 bridge kernel 统一决定。
流式响应是最容易被低估的部分。
Chat Completions SSE 通常是 provider delta;Responses SSE 则有完整事件生命周期。
一个 Responses stream 可能包含:
如果网关只是把上游 delta 原样转发,Codex 这类客户端就无法把它当标准 Responses stream 使用。
所以 GodeX 在 bridge/stream 中做了状态机,把上游 chunks 转换成 Responses events。状态机要处理:
这里的经验是:只要涉及 Agent streaming,就不要用一堆临时 if/else 拼事件。状态机会更啰嗦,但更容易证明行为。
另一个典型问题是结构化输出。
有的 provider 支持 json_object,但不支持严格 json_schema。客户端如果要求 strict schema,网关有几种选择:
json_object;GodeX 当前的做法是:如果 provider 只支持 json_object,就降级并注入 schema 格式指令,最终输出阶段检查 JSON 语法。
它不是完整 JSON Schema 校验,但至少避免了“请求看起来成功,结果输出完全不是 JSON”的情况。
重点不是“永远降级”,而是“降级必须可诊断”。
Responses API 的 previous_response_id 很容易被误解成会话 ID。
GodeX 里把它当父指针处理。每个 response 指向上一个 response,下一轮请求进来时,session store 恢复历史,再构建 provider-neutral history。
这里有个关键取舍:session store 不保存 provider 私有 message 格式,而是保存 API-shaped snapshot。
这样做的好处是:
Agent 请求失败时,问题可能出在很多地方:
没有 trace,只看最终输出很难定位。
GodeX 默认写 SQLite trace,记录 provider request、response、stream event、usage 和 error。尤其是流式转换,能同时看到原始 provider event 和转换后的 Responses event,会省很多排查时间。


如果只是调用一次模型 API,不一定需要网关。
但如果你在做 Codex 接入、多 provider 路由、内部 Agent 平台,网关层很快就会承担这些职责:
GodeX 只是这个问题的一种实现。回看整个过程,最大的收获是:模型网关真正复杂的地方不在 HTTP 转发,而在协议语义的边界。
下饭影视APP下载安装指南
灵宝派对手游下载安装地址推荐
和平精英如何做到压枪稳-和平精英怎样才能压枪稳
下载浏览器app下载安装选择推荐
初中英语同步课文跟读APP推荐|免费下载高口碑跟读软件排行榜
BuuPo官网在哪下载 最新官方下载安装地址
4D采矿者官网在哪下载 最新官方下载安装地址
阅读app安卓版下载推荐
碎片人偶Vragmeet官网在哪下载 最新官方下载安装地址
免费影视剧APP推荐
Elysium Above 履云录官网在哪下载 最新官方下载安装地址
儿子穿新中式现身大会堂 马斯克罕见用中文回应:他正在学习普通话
喧哗番长乙女 2nd Rumble !!官网在哪下载 最新官方下载安装地址
纸嫁衣9官网在哪下载 最新官方下载安装地址
萌神契约手游下载安装
好用的手环阅读app下载安装
人声接近真人!OpenAI一口气更新三款超强语音AI
短视频软件推荐
名单曝光!库克、马斯克等将随团到访中国 黄仁勋不在其中
苹果macOS 27将优化界面设计并测试AI驱动的Safari标签页自动分组功能
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc