玉衡天枢 - 文档 Help

虚空咏者概述

对于非公司用户而言,很容易被 OpenAI 的 tier limit 进行限制,或者由于地区原因无法直接访问 OpenAI 的 API 服务,需要借助各类转发服务商进行连接。转发的服务商保证的高可用性起始也没有多少说服力,这就对我们的服务产生了各种困扰。这一项目便是用于解决这些问题的。

这一项目的功能主要是提供一个 OpenAI 兼容的多服务商聚合后端,它聚合了多个服务商的接口,并根据余额,权重等选择最优的服务商进行请求。在单一服务商不可用时,可以自动切换到其他服务商,保证服务的可用性。同时,这一项目还提供了用户管理,api-key 管理,负载均衡等功能,可以让我们的业务更加灵活。

主要业务逻辑

虚空咏者的主要业务逻辑就是作为一个中间件,接收用户的请求,然后根据用户的请求选择最优的服务商进行请求,然后将请求结果返回给用户。这一项目的主要业务逻辑如下:

  1. 用户使用网页/客户端/API接口请求

  2. 虚空咏者接收请求

  3. 虚空咏者验证请求中的 api_key 是否合法

  4. 如果 api_keysystem 所有,这意味着这是一个子系统的用户,需要验证 user 字段是否合法,是否有权限调用此 model

  5. 如果 api_keyuser 所有,这意味着这是一个普通用户,需要验证 balance 是否足够

  6. 虚空咏者将计算用户的输入文本所预估 token 数,若超过了最大限制,则注入响应以提示

  7. 虚空咏者将根据请求自动计算当前最优的请求端点,尝试进行请求

  8. 若请求失败,虚空咏者将尝试切换到其他端点,直到请求成功

  9. 虚空咏者将记录请求信息,包括请求内容,响应内容,花费等

  10. 虚空咏者将返回请求结果给用户

如何判断最优端点

虚空咏者的最优端点选择是根据用户的请求内容,用户的余额,服务商的权重等多个因素进行计算的。这一项目的最优端点选择逻辑如下:

  1. 正常情况下,将选择所需模型单价最低的端点

  2. 按权重轮询选择端点,权重的计算公式如下:

其中:

  • Balance 为某服务端点的余额

  • Price 为某服务端点的指定模型单价

  • SuccessRequests 为某服务端点的成功请求次数

  • TotalRequests 为某服务端点的总请求次数

  • ConfigWeight 为某服务端点的配置权重

对这一公式进行解析说明:

  1. Balance / Price: 这个比值表示每单位价格的资源总量。高的比值意味着在相同的价格下可以获得更多的资源,通常被认为是有利的。

  2. SuccessRequests / (TotalRequests + 1): 这个比值代表系统的成功率或效率。高的成功率表明系统在处理请求时表现良好,也是一个积极的指标。这里的 (TotalRequests + 1) 用于避免除以零的情况。

  3. ConfigWeight: 这个外部配置的权重因子可以用来调整最终的计算结果,以便在特定情况下进行灵活的调节。

结合一些边界值,我们将做出一些示例性的说明:

Balance

Price

SuccessRequests

TotalRequests

ConfigWeight

W

备注

10

1

10000

10000

1

9.99

正常情况

0.01

1

10000

10000

1

0.009

余额不足

10

1

10

10000

1

0.009

成功率低

10

1

10000

10000

0

0

设置权重低

我们期望通过这一计算方式,可以使得虚空咏者在选择最优端点时,能够更加智能,更加灵活,更加适应各种情况。

Last modified: 28 October 2024