虚空咏者概述
对于非公司用户而言,很容易被 OpenAI 的 tier limit 进行限制,或者由于地区原因无法直接访问 OpenAI 的 API 服务,需要借助各类转发服务商进行连接。转发的服务商保证的高可用性起始也没有多少说服力,这就对我们的服务产生了各种困扰。这一项目便是用于解决这些问题的。
这一项目的功能主要是提供一个 OpenAI 兼容的多服务商聚合后端,它聚合了多个服务商的接口,并根据余额,权重等选择最优的服务商进行请求。在单一服务商不可用时,可以自动切换到其他服务商,保证服务的可用性。同时,这一项目还提供了用户管理,api-key 管理,负载均衡等功能,可以让我们的业务更加灵活。
主要业务逻辑
虚空咏者的主要业务逻辑就是作为一个中间件,接收用户的请求,然后根据用户的请求选择最优的服务商进行请求,然后将请求结果返回给用户。这一项目的主要业务逻辑如下:
用户使用网页/客户端/API接口请求
虚空咏者接收请求
虚空咏者验证请求中的
api_key是否合法如果
api_key是system所有,这意味着这是一个子系统的用户,需要验证user字段是否合法,是否有权限调用此model如果
api_key是user所有,这意味着这是一个普通用户,需要验证balance是否足够虚空咏者将计算用户的输入文本所预估
token数,若超过了最大限制,则注入响应以提示虚空咏者将根据请求自动计算当前最优的请求端点,尝试进行请求
若请求失败,虚空咏者将尝试切换到其他端点,直到请求成功
虚空咏者将记录请求信息,包括请求内容,响应内容,花费等
虚空咏者将返回请求结果给用户
如何判断最优端点
虚空咏者的最优端点选择是根据用户的请求内容,用户的余额,服务商的权重等多个因素进行计算的。这一项目的最优端点选择逻辑如下:
正常情况下,将选择所需模型单价最低的端点
按权重轮询选择端点,权重的计算公式如下:
其中:
Balance为某服务端点的余额Price为某服务端点的指定模型单价SuccessRequests为某服务端点的成功请求次数TotalRequests为某服务端点的总请求次数ConfigWeight为某服务端点的配置权重
对这一公式进行解析说明:
Balance / Price: 这个比值表示每单位价格的资源总量。高的比值意味着在相同的价格下可以获得更多的资源,通常被认为是有利的。
SuccessRequests / (TotalRequests + 1): 这个比值代表系统的成功率或效率。高的成功率表明系统在处理请求时表现良好,也是一个积极的指标。这里的
(TotalRequests + 1)用于避免除以零的情况。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 | 设置权重低 |
我们期望通过这一计算方式,可以使得虚空咏者在选择最优端点时,能够更加智能,更加灵活,更加适应各种情况。