总请求数
0
成功 0 · 失败 0
经济渠道占比
0%
主渠道 0%
已节省成本
$0
实际支出 $0 / 全主渠道 $0
平均延迟
0ms
故障切换 0 次
渠道分流实况
主渠道池0
经济渠道池0
对外统一模型名
—
当前策略
—
近 24 小时请求量
各渠道路由情况
可添加任意数量的主渠道与经济渠道。同类渠道按权重随机分配;某渠道连续失败会被临时熔断,
自动切到同类其它渠道,仍不行才跨类兜底。
还没有渠道,点上面的按钮添加一个。
网关服务设置
调用方看到的 model 字段 / /v1/models 返回值
单个渠道可在编辑里单独覆盖
调度策略
决定哪些请求落到经济渠道池
策略干跑(不发真实请求)
输入一段 prompt,模拟 200 次决策,看分流结果
估算 tokens
—
走经济池
—
走主渠道池
—
判定依据
—
模型目录(对外暴露 /v1/models)
目录内的模型才会被 GET /v1/models 列出;请求目录外的模型一律返回 400。每条可选「扮演角色」,把该模型名强制路由到对应渠道进行模拟。
目录为空,请在右侧添加至少一条。空目录时 /v1/models 与旧逻辑一致,且不做 400 拦截。
新增模拟模型
指定后,请求该模型名一律走所选渠道模拟
经济渠道的模型常在回答里自曝真实名字(「我是 xxx,由 xxx 开发」)。这里给它注入一条最高优先级的
system 身份设定,并对回包做兜底替换。请用于自有业务的品牌统一,面向终端用户时请先确认上游条款允许转接。
注入规则
可用变量:{public_model} 对外模型名、{provider} 提供方、{date} 当天日期
各渠道的真实模型名会自动加入,无需重复填写
效果预览
不发真实请求,只看注入后的 messages 与替换结果
注入状态
—
替换词条
—
—兜底替换效果
—
实测
保存后去「在线测试」问一句「你是谁」,看它还会不会自曝。
对话测试(真实走调度链路)
发送一条消息,观察它究竟落到了哪个渠道 —— 返回内容里的模型名始终是主渠道那个。
本次调用透视
对外模型
—
渠道类别
—
命中渠道
—
真实模型
—
判定依据
—
延迟
—
Token
—
本次成本
—
若渠道配置有误,这里会看到错误详情;开启失败切换后会自动换到其它渠道。
请求日志
每次调用的来源 IP、调用方、落点与耗时;点击任意一行可展开查看本次提问与回复内容。
| 时间 | IP | 调用方 | 类别 | 渠道 | 对外模型 | in/out | 延迟 | 状态 |
|---|
暂无请求记录,去「在线测试」发一条试试
访问密钥与专属线路
为每个使用方发放独立密钥:绑定固定渠道即「专属线路」(不走轮询、失败也不切换到别的渠道);可为单个密钥单独设置每分钟限额。绑定留空则走统一调度。
| 名称 | 密钥 | 专属线路 | RPM | 状态 | 操作 |
|---|
还没有访问密钥;未配置时按全局策略开放或校验。
全局限流
来源 IP 与黑名单
按最近记录聚合的调用来源,可一键封禁可疑 IP。
| IP | 调用次数 | 关联调用方 | 最近请求 | 操作 |
|---|
暂无来源记录
导出备份
把渠道配置、身份策略、请求日志、统计数据打包成一份 JSON,换机器时直接带走。
导出内容里不含密码,但包含各渠道的 API Key 明文,请妥善保存。
导入备份
粘贴备份 JSON,或选择文件导入。
版本迁移状态
配置版本
—
渠道数量
—
旧版残留
—
从旧版(只有单个主渠道 + 单个经济渠道)升级时,config.json 会在启动时自动迁移为多渠道结构,
原字段备份在 _legacy_backup 里。也可手动执行:
python migrate.py check / upgrade / export / import / password
WebUI 登录密码
—
关闭登录保护后,任何能访问该端口的人都能看到和修改全部配置,仅限纯内网自用。
忘记密码时可在服务器执行 python migrate.py password。
网关调用密钥(/v1 接口)
—
客户端调用 /v1/chat/completions 时需带 Authorization: Bearer <该密钥>
这里的密钥管的是「谁可以调用网关」,与上面的 WebUI 登录密码是两套,互不影响。
接入方式
OpenAI SDK
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:8000/v1",
api_key="你设置的访问密钥", # 未设置则任意字符串
)
r = client.chat.completions.create(
model="gpt-4o", # 对外模型名
messages=[{"role": "user", "content": "你好"}],
)
print(r.model) # 永远显示 gpt-4o
print(r.choices[0].message.content)
curl(含流式)
curl http://127.0.0.1:8000/v1/chat/completions \
-H "Authorization: Bearer 访问密钥" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4o","stream":true,
"messages":[{"role":"user","content":"讲个笑话"}]}'
# 调试:强制本次走经济渠道池
# -H "X-Blend-Force: cheap"
# 调试:锁定某个具体渠道(填渠道 id)
# -H "X-Blend-Force: cheap-1"
工作原理
- 业务方请求 /v1/chat/completions,模型名写对外统一名。
- 网关按策略判定本次走「主渠道池」还是「经济渠道池」。
- 在池内按权重挑一个健康渠道转发;被熔断的渠道跳过。
- 拿到结果后把响应里的 model 改写为对外统一模型名(流式逐片改写)。
- 渠道报错 → 先换同池其它渠道,仍不行才跨池兜底,调用方无感。
- 记录渠道、真实模型、token、成本与延迟,供本界面统计省钱效果。
文件与路径
本工具面向自有业务的成本优化。若面向终端用户,请确认上游渠道服务条款允许转接,
并在需要时开启响应头透出真实渠道,避免对最终用户造成误导。