mirrors2 / opencatd-open

opencatd-open 是 OpenCat团队版的开源实现
https://opencatd.zeabur.app
GNU General Public License v3.0
241 stars 77 forks source link

目前key池是随机取的,有一个建议 #16

Open ffinly opened 1 year ago

ffinly commented 1 year ago

目前用pandora项目可以实现将chat接口转api接口。这样的话,就可以实现Plus用户调用免费的gpt4.0 建议keys表里面加一个账户的选项: openai-plus 这样轮询的时候优选去调用这个 key,如果返回429再轮询其它的key 同时建议每个key可以有自己的endpoint(可放在user表的endpoint字段,如果有配置,就调用这个endpoint)

这样的话,就可以实现如下好处:

  1. 优选调用plus的4.0api(chat转)
  2. 如有配置普通用户,可以免费使用3.5 turbo api(fakeopen做了回落机制,如果不是plus用户,调用gpt4模型也是能调用3.5正常返回结果的).
  3. 可以再另外配置api key(不管是官方的还是第三方的,最好开个gpt4的开关,做一下跟上面一样的4.0回落至3.5,作为兜底方案,可以有独立的endpoint),相当于一个兜底方案
  4. 如果遇到429超时报错,就尝试下一个key,直至成功为止(上面有api兜底方案,肯定是并发没问题的)
  5. 综合起来看的话效果和成本上最优,同时有并发优势

opencat是非常优秀的产品,但是本开源项目更优秀。如果以上想法能够实现,这将是一个非常强大的key池工具,毕竟还有原生app。 不过目前来来,chat转api的4.0计费也是有问题的(官方docker无法统计completion,本项目无法统计prompt及completion消费)。

附OpenAI账户将Chat接口转API使用方法: 免费用户可免费使用3.5 Turbo API(8k模型) Plus用户可免费使用3.5 Turbo API 及 4.0 API(gpt-4 3小时25次,上限200次/天,gpt-4-mobile,上限600次/天)

  1. 获取accessToken 方法一(推荐):(账户和密码登录)https://ai.fakeopen.com/auth1 (第三方登录)https://ai.fakeopen.com/auth 方法二(官网):先官网( https://chat.openai.com )登录,再访问这里( http://chat.openai.com/api/auth/session )将accessToken的值取出 方法三:不管你用什么方法,拿到accessToken都可以

  2. 创建Share Token https://ai.fakeopen.com/token 取一个独一无二的名字(unique name),有效期与accessToken时间一致(过期秒数填写0),限制使用网站留空,生成一个fk-开头的Share Token。 同一用户同一unique name续期fk不变(fk根据user_id和unique name来生成)。 备注:接口限流20次/天

  3. 使用Share Token 使用生成的Share Token(fk-开头,相当于OpenAI的API Key),在其它支持OpenAI API的程序中调用(需要将 api.openai.com 替换为 ai.fakeopen.com ),请求和返回参数完全兼容。ChatGPT同时只有1条会话的限制也是存在的。 模型映射如下(左侧为API请求时用的模型,右侧为官方chat的模型): gpt-3.5-turbo --> text-davinci-002-render-sha gpt-3.5-turbo-0301 --> text-davinci-002-render-sha gpt-4 --> gpt-4-mobile gpt-4-0314 --> gpt-4-mobile gpt-4-32k --> gpt-4-plugins gpt-4-32k-0314 --> gpt-4-plugins 备注:映射后3.5模型和4.0-32k模型上下文长度均为8K,4.0模型上下文为4K;接口限流5次/10s

  4. 新推出Share Token池服务:https://ai.fakeopen.com/pool ,多账号来解决并发问题,接口限流20次/30s。 这里还有个自动生成的脚本:https://gist.github.com/pengzhile/448bfcfd548b3ae4e665a84cc86c4694

Sakurasan commented 1 year ago

很棒的建议,后续更新会参考,感谢❤️

ffinly commented 1 year ago

目前我已经在改相关的代码了,号池的问题我已经解决了,有比较好的方案,但是目前429后重试选Key还有些小问题,主要是不会GO和Web开发,哈哈,如果能改好的话,我就提交下PR。

ffinly commented 1 year ago

很棒的建议,后续更新会参考,感谢❤️

image 接口限流将更新为 20次/40s(原来是5次/10s) Pandora作者,已经在做基于key池的并发了。我感觉我们不用再重复造这个轮子了。

接下来等他做完后效果怎么样,我有跟他提Plus会员优选的方案,并且他也会做。那这样我提的这些问题,就都可以用pandora项目来解决。解决不了的,再用本项目来实现就好了。

ffinly commented 1 year ago

很棒的建议,后续更新会参考,感谢❤️

image 接口限流将更新为 20次/30s(原来是5次/10s) Pandora作者,已经在做基于key池的并发了。我感觉我们不用再重复造这个轮子了。

接下来等他做完后效果怎么样,我有跟他提Plus会员优选的方案,并且他也会做。那这样我提的这些问题,就都可以用pandora项目来解决。解决不了的,再用本项目来实现就好了。

太快了,人家已经做完了,我体验了,效果非常好,解决了多号并发的问题: 新推出Share Token池服务:https://ai.fakeopen.com/pool ,多账号来解决并发问题。(接口限流20次/40s,请不要用于任何商业用途) 这里还有个自动生成的脚本:https://gist.github.com/pengzhile/448bfcfd548b3ae4e665a84cc86c4694 @Sakurasan

ffinly commented 1 year ago

/接下来,就是我说的,API调用的时候优先调用的问题。 针对这种chat转的plus会员 api 优先调用(只要Plus账户空闲就调用Plus,如果Plus全部429再调用普通账户),实现低成本 gpt4,同时也能处理突发的并发性(在有些时候,其实大家不是太能分辨得出来是4.0还是3.5)

还有一个思路就是如果有Plus用户的池子: 1.先调用 GPT-4(3小时25时,超出会报错) 2.用完了再调用GPT-4 Mobile(每天600次,超出会报错) 3.再用完了就调用 GPT-3.5 Turbo(不限次数)

还有就是每个key可以独立用自己的endpoint地址(如果没有配置的话,统一走环境变量的那个),这样的话,fakeopen和第三方api(官方的api是没问题的,fakeopen也能代理sk,并且无频率限制)可以混用。

如果这两点能一起实现,就是非常优秀的API池解决方案了

ffinly commented 1 year ago
image

这两天本项目涨了不少Star,我在几个群里面都说了opencat这个方案来做号池(主要是pandora群、钉钉chatgpt群)。 希望过两天能上Trending,同时也希望更多的人来提好的建议或者维护这个项目。

Sakurasan commented 1 year ago

目前精力是先完成后台管理,后续对其他接口的支持(eg:claude..)还有接口支持的模型的问题,具体实现还在构思中

ffinly commented 1 year ago

目前精力是先完成后台管理,后续对其他接口的支持(eg:claude..)还有接口支持的模型的问题,具体实现还在构思中

已完成号池优选功能并提交PR: https://github.com/mirrors2/opencatd-open/pull/18

还有一个思路就是如果有Plus用户的池子: 1.先调用 GPT-4(3小时25时,超出会报错) 2.用完了再调用GPT-4 Mobile(每天600次,超出会报错) 3.再用完了就调用 GPT-3.5 Turbo(不限次数) 还有就是每个key可以独立用自己的endpoint地址(如果没有配置的话,统一走环境变量的那个),这样的话,fakeopen和第三方api(官方的api是没问题的,fakeopen也能代理sk,并且无频率限制)可以混用。

这个后续如果有精力也可以做。 这样的话,就可以最大限度使用Plus账户。