[RFC] 027 - API Key 字段支持使用多个Key #1287
arvinxx
started this conversation in
RFC | 特性开发
Replies: 1 comment
-
提了个pr,实现了功能中的 api key 随机获取, 可以帮忙看下实现是否合适 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
背景
目前社区存在较多需求,希望支持 API Key 字段支持使用逗号
,
作为分隔符,实现 api 的轮训请求。由于该需求社区用户呼声较多,因此本 RFC 给出实现思路,但不计划由官方进行实现。欢迎社区开发同学参与 PR。
功能设计
api key 随机获取
目前我们已经实现了多模型服务商,因此多 API Key 的能力应该是服务商共用的特性。因此实现逻辑应该在 api/chat 接口下的 agent-runtime 部分,https://github.com/lobehub/lobe-chat/blob/main/src/app/api/chat/%5Bprovider%5D/agentRuntime.ts 。
以一个初始化为例:
lobe-chat/src/app/api/chat/[provider]/agentRuntime.ts
Lines 82 to 101 in fbcfc96
其中关键是对最后的 apiKey 进行处理。可以实现一个
randomPickApiKey
的函数,入参是key1,key2,key3
这样的字符串,出参是随机挑选的其中一个 key 。如此一来就可以用最低的成本实现 apikey 的轮训需求。如果其他服务商需求不强,也可以先只实现 openai 的。
随机轮训后的错误处理
上述功能只是初步完成功能实现,但体验更好的方式是如果遇到apikey 的一个报错,会自动切换到另外一个 apikey 进行调用。
但这部分需要对目前的单一一次请求进行较大的重构后可能才能实现。相对来说复杂度较高,个人不太建议做,ROI 不高。我更倾向于使用 oneapi 这样的更成熟的 key 管理解决方案。
Beta Was this translation helpful? Give feedback.
All reactions