三协议通用中转软件:客户端(外部)可用 3 种协议任意一种请求,上游(内部)也可用 3 种协议任意一种,全部自动互转。 界面为浅色现代风格(PySide6)。
| 入站路径(可自定义改名) | 协议 |
|---|---|
POST /v1/chat/completions(默认) |
OpenAI Chat Completions |
POST /v1/responses(默认) |
OpenAI Responses API |
POST /v1/messages(默认) |
Anthropic Messages API |
双击 AIGateway.exe 启动(浅色现代界面,状态/日志在窗口内)。
「路由映射」页签管理路由:新增 / 编辑 / 删除 / 启用 / 停用 / 上移 / 下移(双击表格行也可编辑)。
表格直接展示端口列与代理列(未设置分别显示 (全局) 与 —),不用进编辑页就能看到每条路由的代理配置。
每条路由的字段(v3):
| 字段 | 说明 |
|---|---|
| 名称 | 显示名 |
| 入站协议 | 决定入站请求如何解读(3 选 1,必选) |
| 入站路径 | 3 个预设值 + 可手输自定义;切换入站协议时若未手改过路径会自动跟随默认值 |
| 出站协议 | 转发给上游时用的协议(3 选 1) |
| 端口 | 每条路由可自定义监听端口;留空 = 使用全局默认端口(8000) |
| 上游地址 | 上游完整 URL,可任意指定 |
| API 密钥 | 留空则透传客户端鉴权头(输入框下方有灰色提示「留空 = 透传客户端密钥」);填写则固定用它 |
| 代理 | 每条路由可自定义代理(如 localhost:7890);留空用全局代理或直连 |
| 超时秒 | 上游请求超时 |
| 模型映射 | 多行表单(下游模型ID / 上游模型ID 两列,可「添加一行」),下游模型ID 支持 * 通配;留空原样透传 |
| 启用 | 开关 |
- 程序按"全局端口 ∪ 各路由自定义端口"启动多个监听实例,路由按
(端口, 路径)精确匹配。 - 增删带端口的路由、修改端口后需重启程序生效(界面有提示);同端口下的路径/协议/上游/密钥变更即时生效。
所有修改即时保存到程序同目录的 gateway_config.json(可随意复制迁移;程序所在目录不可写时自动回退到用户主目录)。
日志同时写入同目录 gateway_app.log。
示例:默认内置路由 opencode-luna——客户端用 Chat Completions 格式请求 /v1/chat/completions(模型 gpt-5.6-luna),网关自动转成 Responses 格式转发到 https://opencode.ai/zen/go/v1/responses,经代理 localhost:7890 出网。
所有修改即时保存到程序同目录的 gateway_config.json(可随意复制迁移;程序所在目录不可写时自动回退到用户主目录)。端口固定 8000。
gateway_core.py— 协议解析/渲染(三协议 × 请求/响应/流式)、路由匹配、中转服务器、鉴权与代理透传、配置持久化。纯标准库,可独立运行与测试。gateway_app.py— PySide6 图形界面(表单式路由管理 + 日志 + 设置)。
- 上游请求固定使用浏览器 UA,避免部分上游的 Cloudflare 拦截。
- 流式请求采用"缓冲后回放":上游统一按非流式调用,网关收到完整结果后按入站协议的 SSE 格式分块回放(文本按 16 字符分段、工具调用按字段分块),三协议事件映射只实现一套,可靠可测。
- 上游鉴权:OpenAI 系用
Authorization: Bearer,Anthropic 用x-api-key+anthropic-version: 2023-06-01。 - 浅色主题来自程序同目录的
ui_style.qss;文件缺失或加载失败时自动降级为 Qt Fusion 风格,并在日志区记录提示。 - 模型映射为多行表单,下游模型ID 支持
*通配符,匹配优先级为「精确 > 通配(首个*前字面前缀最长,同长先出现)>*兜底 > 未匹配透传」。 - 日志区基于 Qt 信号队列刷新,避免逐行重绘造成的闪烁。
GPTResponsesBridge.exe 为旧版单路由桥接器(仅 Chat Completions → Responses,用于 gpt-5.6-luna),保留备用。