关于newapi优先级和权重的具体机制

2026-04-11 11:421阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

前言

最近试了一下 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

docs.newapi.pro

🔧 渠道配置问题 - 常见问题 | New API

如果这里没有解答您的问题,欢迎: | 承载所有 AI 应用,管理你的数字资产,连接未来的统一基础设施平台。快速部署,轻松扩展。

看懵了反正


--【拾】--:

补充一点:第二种对于权重的概率处理方法也叫做轮盘赌,就是把权重归一化以后按概率选择