接入图片或语音模型,既要考虑客户端支持什么接口,也要处理不同厂商的参数要求。给用户设置优惠时,同一模型在不同路由组里又可能需要不同折扣;配置好以后,还要确认用户看到的价格是否正确。
OctaFuse Gateway 2.14.0 扩展了图像与语音接入,支持按路由组设置用户折扣,并在后台预览结果。用户额度和网关配置的保存方式也做了调整,减少日常修改中的误操作。
01|图像与语音接入扩展
想用 MiniMax 合成语音、用 Seedream 或 Gemini 生成图片,但客户端只有 OpenAI 调用入口,怎么办?现在可以在 OctaFuse 中配置转换路由,由网关处理两端的请求和响应差异。
| 上游 | 本次接入变化 | 客户端调用方式 |
|---|---|---|
| MiniMax | 新增文件转写、语音合成和图片生成适配器 | 使用 OpenAI 转写、语音合成或生图接口,也可调用 MiniMax 原生入口 |
| Seedream | 新增火山方舟与 BytePlus 共用的专用生图适配器 | 使用 OpenAI 生图接口,或调用新增的原生生图入口 |
| Gemini 图片模型 | 补齐原生图片请求处理,新增 OpenAI 生图转换 | 使用 OpenAI 生图接口,或沿用 Gemini 原生入口;上游支持 Gemini API 和 Vertex AI |
| 百炼 | 补充原生语音合成、异步文件转写与任务查询,完善多模态分流和 Qwen-TTS-Realtime 会话透传 | 按所需能力配置原生路由,原有 OpenAI 转换路由仍可使用 |
接入时,先在供应商中配置对应协议的端点,再导入模型、建立路由。路由编辑器会按供应商协议和模型名筛选适配器,并展示客户端入口、字段转换、计费方式、使用限制和 SDK 示例,不用再靠名称猜哪一种接法适合当前模型。

以 Gemini 生图为例:客户端使用 OpenAI 生图接口,调用指南说明参数如何转成 Gemini 请求,以及哪些能力不支持。
选择接法时,需要注意各自支持的范围:
- Gemini:OpenAI 生图转换支持参考图和尺寸映射,但只支持单张、非流式、
b64_json响应,不支持/v1/images/edits。需要流式或 Gemini 原始响应时,使用原生入口。 - Seedream:OpenAI 转换返回非流式 JSON,原生入口支持 JSON 和 SSE。支持组图的型号可用
n请求多张,5.0 Pro / Flash 则只能为1。 - MiniMax:文件转写不支持流式,单文件上限为 25MB;同步语音合成支持非流式和 SSE。
计费也跟随模型能力:MiniMax 转写按时长、语音合成按上游返回的字符用量计费;MiniMax 和 Seedream 生图按成功张数计费;Gemini 图片请求按文本、图片等用量分项计费。Gemini 没有返回有效图片、客户端取消或网关超时的生图请求,不扣 Gateway 用户额度。MiniMax 响应中的业务错误也会纳入失败处理,不会仅凭 HTTP 成功状态当作调用成功。
厂商特有参数也能传入
统一接口方便接入,但不同模型还有自己的参数,例如图片比例、分辨率、语音情绪。2.14.0 允许 OpenAI 图像生成、图像编辑、语音合成和转写请求携带额外字段,按目标上游的原生结构合并到请求体。
例如,调用已配置好的 MiniMax 语音合成路由时,可以用 OpenAI SDK 的 extra_body 补充语音设置:
client.audio.speech.create(
model="minimax-speech-2.8-hd",
input="你好,欢迎使用 OctaFuse。",
voice="male-qn-qingse",
extra_body={
"voice_setting": {"emotion": "happy", "pitch": 2},
"language_boost": "Chinese",
},
)
这里的 model 是 Gateway 中已配置的模型 ID,voice 使用 MiniMax 的音色 ID。额外参数不是通用配置:换了上游,要按对应厂商的结构填写;同一个路由池有多种协议时,还需确认这些字段适用于每个候选上游。
额外字段总量不能超过 32KB,模型名以及适配器用于计费和解析响应的关键字段不能被覆盖。路由默认值和强制覆盖仍按原有规则生效;百炼语音合成的 input.* 参数仍需写在路由请求参数中。
配好后直接验证结果
调试台(Playground)和模拟器(Simulator)补齐了新原生入口的调用,支持编辑 Gemini 生图请求、预览返回图片,也能解码播放 MiniMax 非流式响应中的音频。生图样例会按模型选取合适的最低分辨率档位,减少直接使用不支持的尺寸造成的报错。

以 MiniMax 原生语音合成为例:stream: false 返回的音频会自动解码,直接在调试台播放或下载。图中短语音约 3.8 秒。
调试台只验证所选上游,不扣 Gateway 用户额度,但仍可能产生供应商调用费用。要检查鉴权、选路和实际扣费,使用模拟器或真实客户端。
02|用户分组折扣
同一个模型,放在日常使用组和活动组里,可能需要给同一用户不同的优惠。以前用户倍率只按模型设置,无法单独区分这些分组。
现在可以在用户详情的“额度与计费”中,为一个模型添加不同路由组的倍率。例如:
| 配置范围 | 用户倍率 |
|---|---|
default 分组 |
0.8 |
campaign 分组 |
0.5 |
其他分组(* 兜底) |
0.9 |
调用 campaign 分组时使用 0.5,调用 default 时使用 0.8,其他分组使用兜底值。没有对应分组、也没有兜底值时,沿用原路由计费。
这里配置的是用户倍率,不一定等于最终折扣:它仍按现有的“相乘”或“取较小值”模式与路由有效倍率组合。例如路由有效倍率为 0.6、用户倍率为 0.5,相乘模式的最终倍率为 0.3,取较小值模式则为 0.5。这些配置只影响用户费用,不改变供应成本。
这套匹配规则同时用于文本、图片和音频扣费,以及模型列表中的折扣展示。原有按模型设置的数字倍率仍对全部分组生效,不需要重写。

另一种配置示例:默认倍率为 ×1,只有 default 分组设为 ×0.4;右侧可继续添加分组覆盖,下方 JSON 展示完整配置。
设置完优惠后,可以保存配置,再进入用户详情的“模型列表”,预览该用户可见的模型和各分组折扣,核对目录、路由与合成倍率。

同一用户、同一模型的两个分组分别展示倍率。图中目录正处于 ×2 时段,最终合成倍率还需结合路由和用户配置判断,不能只看用户倍率。
预览不发起模型调用,也不消耗用户 RPM。默认查看 default、free 分组的文本模型,可按类型、分组和模型筛选;每次最多返回 40 个模型。结果只使用已保存的配置,尚未保存的修改不会进入预览。 接入门户的业务系统也可通过只读接口 GET /api/admin/users/:id/models 获取预览结果。
03|后台配置升级
打开用户页面时,账户已消费 10 元;修改资料期间,用户又产生了新消费。如果保存时把整份旧数据提交回去,就可能覆盖最新用量。2.14.0 改为只提交真正修改过的字段,编辑邮箱、限流或倍率时,不会顺带写回之前加载的消费数据。
用户详情也分成“概览”“额度与计费”“模型列表”“活动记录”,查状态、改额度、看折扣和追溯操作各有位置。修改额度重置周期或时间,不再自动清零本周期已消费额度;主动修正消费值仍需明确修改对应字段。离开有未保存修改的页面时,会提示确认。
网关配置页则改为每张卡片独立保存。只调整业务时区,就只保存时区卡片;其他卡片里的草稿不会一起提交。每张卡片会显示是否有未保存修改,也可以单独撤销。

卡片内修改仅作为草稿,点击该卡片的“保存”才会生效,也可单独撤销。图中的修改用于演示,未提交。
04|其他更新
| 场景 | 本次变化 |
|---|---|
| 供应商预设 | 新增按量付费的“千问 AI 平台”和 MiniMax 国际站,更新千问 Token Plan 地址;按各平台能力补充 Responses、Anthropic、图像和音频端点,修正 LongCat Chat 地址。 |
| 端点配置 | 仅支持部分 OpenAI 能力的模板改为列出具体端点,不再用 Base 推导未确认支持的接口;百炼端点说明补充了 Base 与套餐专用端点的区别。 |
| 新增模型预设 | 新增 Claude Haiku 5.5、Gemini Nano Banana 2.1,以及 MiniMax ASR 1.0、Speech 2.8 HD / Turbo、Image 01 / 01 Live,补齐对应模态和计价配置。 |
| 价格与计价修正 | 修正 Claude Sonnet 5.5 缓存读取价格、Seedream 5.0 Pro 分辨率价格档位和 Grok Imagine Image 2.0 计价;OpenAI 生图未传 size 时,可用扩展字段 resolution 选择计价档位。 |
| 参数排查 | 多模态请求日志补充额外字段和被恢复的受保护字段记录,便于确认参数最终如何处理;data URL 内容会脱敏。 |
| 供应商卡片 | 未配置密钥或待确认的卡片不再显示“点击前往”;导入和编辑弹窗仍可打开对应平台。 |
导入预设不会覆盖已有的同 ID 模型,也不会自动改写既有供应商端点。需要采用新地址或修正价格时,先核对自己的上游,再手动调整。
升级到 2.14.0
从 2.13.0 升级无需新增数据库结构迁移或必填配置。建议先备份数据库,再统一更新 Proxy、Admin 和 migrate 镜像;从更早版本升级时,仍需按顺序执行尚未应用的迁移。启用新协议或分组倍率前,先确认所有 Proxy 已升级,避免旧实例读取新配置。
按自己的使用情况,重点检查以下几项:
- 新多模态路由:MiniMax 图像与音频需配置
minimax.base,Seedream 专用适配器需配置volcengine.base,Gemini 图片转换需有效的 Gemini 端点,再导入模型并配置路由。已有 OpenAI 透传 Seedream 路由可以继续使用,无需强制切换;新增协议不代表视频、音乐等能力也已支持。 - 百炼生图尺寸:
dashscope-image-qwen和dashscope-image-wan不再自动将1024x1024改成1024*1024,而是原样传给上游。依赖旧转换的客户端或路由参数需要调整,按对应型号要求使用1K、2K或宽*高等取值。 - 存量端点与价格:已导入的数据不会自动更新。如果供应商仍通过 Base 声明了实际不支持的接口,应改为具体端点。Anthropic 和 Google 的 CNY 预设是 USD × 7 的换算占位价,不是独立人民币刊例。
- 外部系统读取倍率:原有数字配置保持兼容。使用新分组配置后,直接读写
charged_cost_factors的业务系统需兼容对象值;解析计价审计时,需允许新增的user_charged_factor_route_group分组键。
本次不需要常规执行图像计价修正脚本。若主动使用 scripts/db/migrate-image-billing-modes.mjs,应先备份并检查 --dry-run;它会修改多个指定模型的计价配置和价格,不只涉及本次修正的型号,也不能用于更新 Sonnet 缓存价格。
升级后,建议分别验证一条转换路由和一条原生路由,核对图片张数或语音用量与扣费;再检查分组折扣及兜底结果,确认修改用户资料不会覆盖新增消费、配置卡片可以独立保存。MiniMax 原生转写目前仍会整段缓冲,不能实时下发 SSE;无法读取时长时按文件估算计费。
完整变更与升级说明见 GitHub Release v2.14.0 和 更新记录。
如果 OctaFuse 对你的项目有帮助,欢迎在 GitHub 上点一个 Star,也欢迎反馈多模态接入、分组折扣和后台配置中遇到的问题。