关于newapi优先级和权重的具体机制
- 内容介绍
- 文章标签
- 相关推荐
前言
最近试了一下 newapi,关于其中的优先级和权重还是有很多疑问,官方文档也没有很详细,于是找到源码并且用 ai 辅助研究了一下。
关于优先级
同分组情况
每一次的使用必定先从高优先级的渠道开始,如果有一个为 0 渠道和为 1 的渠道,那么一定会使用为 0 的渠道,在触发重试之后,才会选择低一等级的优先级渠道,具体选择哪一个渠道,则由权重决定。
不同分组情况
分组之间也拥有优先级,比如 vip 分组的优先级比 default 分组高,那么 vip 分组内的渠道则一定在第一次使用时被调用,当 vip 内的渠道全不可用时,则会选择 default 分组的渠道。
用 ai 举个列子
Screenshot_2026-01-28-02-05-31-887_me.rerere.rikkahub-edit1080×2025 295 KB
注意一下,这里ai的优先级判断反了,数字越高,优先级越大,0为最高优先级
关于权重
这里先上源代码:
if len(abilities) > 0 {
// 1. 计算总权重
weightSum := uint(0)
for _, ability_ := range abilities {
// 注意这里有个 +10 的操作
weightSum += ability_.Weight + 10
}
// 2. 生成一个随机数
// common.GetRandomInt(int(weightSum)) 生成 [0, weightSum) 之间的整数
weight := common.GetRandomInt(int(weightSum))
// 3. 遍历选择
for _, ability_ := range abilities {
// 依次减去当前渠道的有效权重
weight -= int(ability_.Weight) + 10
// 如果减到 0 或负数,命中当前渠道
if weight <= 0 {
channel.Id = ability_.ChannelId
break
}
}
}
这里使用了一种叫轮盘赌的随机算法,而且这里有一个大部分人都会犯的错误,就是在这里权重的初始值会被加 10,也就是说,在权重被设置为 10 以内时,基本是无意义的。
特别注意:出现一个渠道内有多个 key,则内置的 key 使用轮询策略,所以当一个渠道内含有多个key,应当使用更高的权重
网友解答:接下来,由 ai 说明一下具体的列子
Screenshot_2026-01-28-02-07-30-420_me.rerere.rikkahub-edit1080×2034 244 KB
--【壹】--:
newapi的优先级是反的吧?优先级数值越高越优先。
--【贰】--:
感谢指出错误
--【叁】--:
对的,现在在改
--【肆】--:
另外,如果一个渠道有多个key轮询的话,重试时会轮询key的,这个情况也要考虑
--【伍】--:
好的 已了解
--【陆】--:
好的,已重新编辑,主要我觉得ai比我讲的清楚
--【柒】--:
佬AI生成的内容要用截图发,不然可能被删帖,最好编辑下帖子
--【捌】--: Xuyufenfei:
实际上大部分都由ai生成
ai生成的话论坛还要求用图片而不是文字,尽量自己写吧
--【玖】--:
image1076×591 57.7 KB
🔧 渠道配置问题 - 常见问题 | New API
如果这里没有解答您的问题,欢迎: | 承载所有 AI 应用,管理你的数字资产,连接未来的统一基础设施平台。快速部署,轻松扩展。
看懵了反正
--【拾】--:
补充一点:第二种对于权重的概率处理方法也叫做轮盘赌,就是把权重归一化以后按概率选择
前言
最近试了一下 newapi,关于其中的优先级和权重还是有很多疑问,官方文档也没有很详细,于是找到源码并且用 ai 辅助研究了一下。
关于优先级
同分组情况
每一次的使用必定先从高优先级的渠道开始,如果有一个为 0 渠道和为 1 的渠道,那么一定会使用为 0 的渠道,在触发重试之后,才会选择低一等级的优先级渠道,具体选择哪一个渠道,则由权重决定。
不同分组情况
分组之间也拥有优先级,比如 vip 分组的优先级比 default 分组高,那么 vip 分组内的渠道则一定在第一次使用时被调用,当 vip 内的渠道全不可用时,则会选择 default 分组的渠道。
用 ai 举个列子
Screenshot_2026-01-28-02-05-31-887_me.rerere.rikkahub-edit1080×2025 295 KB
注意一下,这里ai的优先级判断反了,数字越高,优先级越大,0为最高优先级
关于权重
这里先上源代码:
if len(abilities) > 0 {
// 1. 计算总权重
weightSum := uint(0)
for _, ability_ := range abilities {
// 注意这里有个 +10 的操作
weightSum += ability_.Weight + 10
}
// 2. 生成一个随机数
// common.GetRandomInt(int(weightSum)) 生成 [0, weightSum) 之间的整数
weight := common.GetRandomInt(int(weightSum))
// 3. 遍历选择
for _, ability_ := range abilities {
// 依次减去当前渠道的有效权重
weight -= int(ability_.Weight) + 10
// 如果减到 0 或负数,命中当前渠道
if weight <= 0 {
channel.Id = ability_.ChannelId
break
}
}
}
这里使用了一种叫轮盘赌的随机算法,而且这里有一个大部分人都会犯的错误,就是在这里权重的初始值会被加 10,也就是说,在权重被设置为 10 以内时,基本是无意义的。
特别注意:出现一个渠道内有多个 key,则内置的 key 使用轮询策略,所以当一个渠道内含有多个key,应当使用更高的权重
网友解答:接下来,由 ai 说明一下具体的列子
Screenshot_2026-01-28-02-07-30-420_me.rerere.rikkahub-edit1080×2034 244 KB
--【壹】--:
newapi的优先级是反的吧?优先级数值越高越优先。
--【贰】--:
感谢指出错误
--【叁】--:
对的,现在在改
--【肆】--:
另外,如果一个渠道有多个key轮询的话,重试时会轮询key的,这个情况也要考虑
--【伍】--:
好的 已了解
--【陆】--:
好的,已重新编辑,主要我觉得ai比我讲的清楚
--【柒】--:
佬AI生成的内容要用截图发,不然可能被删帖,最好编辑下帖子
--【捌】--: Xuyufenfei:
实际上大部分都由ai生成
ai生成的话论坛还要求用图片而不是文字,尽量自己写吧
--【玖】--:
image1076×591 57.7 KB
🔧 渠道配置问题 - 常见问题 | New API
如果这里没有解答您的问题,欢迎: | 承载所有 AI 应用,管理你的数字资产,连接未来的统一基础设施平台。快速部署,轻松扩展。
看懵了反正
--【拾】--:
补充一点:第二种对于权重的概率处理方法也叫做轮盘赌,就是把权重归一化以后按概率选择

