接入图片或语音模型,既要考虑客户端支持什么接口,也要处理不同厂商的参数要求。给用户设置优惠时,同一模型在不同路由组里又可能需要不同折扣;配置好以后,还要确认用户看到的价格是否正确。

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 生图为例:客户端使用 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 Speech 2.8 Turbo 原生语音合成调试,展示非流式请求参数、HTTP 200 响应及音频播放和下载入口

以 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。这些配置只影响用户费用,不改变供应成本。

这套匹配规则同时用于文本、图片和音频扣费,以及模型列表中的折扣展示。原有按模型设置的数字倍率仍对全部分组生效,不需要重写。

DeepSeek V4.1 Flash 的用户默认倍率为 1,default 分组单独覆盖为 0.4

另一种配置示例:默认倍率为 ×1,只有 default 分组设为 ×0.4;右侧可继续添加分组覆盖,下方 JSON 展示完整配置。

设置完优惠后,可以保存配置,再进入用户详情的“模型列表”,预览该用户可见的模型和各分组折扣,核对目录、路由与合成倍率。

用户模型列表预览,展示 DeepSeek V4.1 Flash 在 default 与 free 分组的目录、路由及合成倍率

同一用户、同一模型的两个分组分别展示倍率。图中目录正处于 ×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 已升级,避免旧实例读取新配置。

按自己的使用情况,重点检查以下几项:

  1. 新多模态路由:MiniMax 图像与音频需配置 minimax.base,Seedream 专用适配器需配置 volcengine.base,Gemini 图片转换需有效的 Gemini 端点,再导入模型并配置路由。已有 OpenAI 透传 Seedream 路由可以继续使用,无需强制切换;新增协议不代表视频、音乐等能力也已支持。
  2. 百炼生图尺寸:dashscope-image-qwen 和 dashscope-image-wan 不再自动将 1024x1024 改成 1024*1024,而是原样传给上游。依赖旧转换的客户端或路由参数需要调整,按对应型号要求使用 1K、2K 或 宽*高 等取值。
  3. 存量端点与价格:已导入的数据不会自动更新。如果供应商仍通过 Base 声明了实际不支持的接口,应改为具体端点。Anthropic 和 Google 的 CNY 预设是 USD × 7 的换算占位价,不是独立人民币刊例。
  4. 外部系统读取倍率:原有数字配置保持兼容。使用新分组配置后,直接读写 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,也欢迎反馈多模态接入、分组折扣和后台配置中遇到的问题。