feat(api): 增加多 apikey 和 accseeToken 支持
环境变量 OPENAI_API_KEY 和 OPENAI_ACCESS_TOKEN 可以以半角逗号 "," 或 换行符 "\n" 进行分隔 可选 random 和 polling 两种负载均衡策略 多 apikey 时不再支持查询余额,将直接返回"-"
resolve https://github.com/Chanzhaoyu/chatgpt-web/issues/740 https://github.com/Chanzhaoyu/chatgpt-web/issues/773 https://github.com/Chanzhaoyu/chatgpt-web/issues/821 https://github.com/Chanzhaoyu/chatgpt-web/issues/923
2023/03/28 更新:

封号警告,啊哈哈哈
会话可以被不同 key 处理吗?
会话可以被不同 key 处理吗?
不可以,只做了最简单的修改
这个功能好哦,我正想自己开发,我先拿五个apiKey试试封不封
谢谢谢谢谢谢您进行此修改。我只有一个问题,我有5个ChatGPT Plus的令牌,如果其中一个令牌正在使用并且在您创建的此修改中失败,它会尝试使用下一个令牌,如果再次失败,它会尝试使用下一个令牌直到有一个可用吗?
"Thank you thank you thank you for this modification, I just have one question. I have 5 ChatGPT Plus tokens. If one token is being used and it fails with this modification you created, will it try the next token, and if that also fails, will it keep trying with the next token until one of them works?"
谢谢谢谢谢谢您进行此修改。我只有一个问题,我有5个ChatGPT Plus的令牌,如果其中一个令牌正在使用并且在您创建的此修改中失败,它会尝试使用下一个令牌,如果再次失败,它会尝试使用下一个令牌直到有一个可用吗?
"Thank you thank you thank you for this modification, I just have one question. I have 5 ChatGPT Plus tokens. If one token is being used and it fails with this modification you created, will it try the next token, and if that also fails, will it keep trying with the next token until one of them works?"
并没有此功能,该PR仅做了最简单的实现,高级功能后续有时间我再做
谢谢谢谢谢谢您进行此修改。我只有一个问题,我有5个ChatGPT Plus的令牌,如果其中一个令牌正在使用并且在您创建的此修改中失败,它会尝试使用下一个令牌,如果再次失败,它会尝试使用下一个令牌直到有一个可用吗? "Thank you thank you thank you for this modification, I just have one question. I have 5 ChatGPT Plus tokens. If one token is being used and it fails with this modification you created, will it try the next token, and if that also fails, will it keep trying with the next token until one of them works?"
并没有此功能,该PR仅做了最简单的实现,高级功能后续有时间我再做
谢谢你的一切。希望你能够实现我解释的功能:如果一个令牌由于任何原因在某一时刻失败,则尝试使用另一个令牌,如果第二个令牌也无法使用,则继续尝试第三个、第四个、第五个(或任何其他数量的)令牌,直到其中一个可用。
Thank you!
请问模式如何修改
这个功能好棒!以后搞一堆access_token,多人使用体验会好很多!
多个OPENAI_ACCESS_TOKEN可以解决Only one message at a time. Please allow any other responses to complete before sending another messageor wait one minute.问题吗?
这样做,上下文就关联就没有了
请问模式如何修改
可以在这里修改
多个OPENAI_ACCESS_TOKEN可以解决Only one message at a time. Please allow any other responses to complete before sending another messageor wait one minute.问题吗?
理论上可以,不过默认策略是随机,应改用轮询比较好
这样做,上下文就关联就没有了
这个不影响的,上下文跟你的key没有关系
谢谢谢谢谢谢您进行此修改。我只有一个问题,我有5个ChatGPT Plus的令牌,如果其中一个令牌正在使用并且在您创建的此修改中失败,它会尝试使用下一个令牌,如果再次失败,它会尝试使用下一个令牌直到有一个可用吗? "Thank you thank you thank you for this modification, I just have one question. I have 5 ChatGPT Plus tokens. If one token is being used and it fails with this modification you created, will it try the next token, and if that also fails, will it keep trying with the next token until one of them works?"
并没有此功能,该PR仅做了最简单的实现,高级功能后续有时间我再做
谢谢你的一切。希望你能够实现我解释的功能:如果一个令牌由于任何原因在某一时刻失败,则尝试使用另一个令牌,如果第二个令牌也无法使用,则继续尝试第三个、第四个、第五个(或任何其他数量的)令牌,直到其中一个可用。
Thank you!
多个OPENAI_ACCESS_TOKEN可以解决Only one message at a time. Please allow any other responses to complete before sending another messageor wait one minute.问题吗?
已实现
您好,看了下代码,请问您是随机调用的key吗?能否加一个参数,在当前key用完余额后再调用下一个key呢?这样可能会减少封号的风险,万分感谢!
您好,看了下代码,请问您是随机调用的key吗?能否加一个参数,在当前key用完余额后再调用下一个key呢?这样可能会减少封号的风险,万分感谢!
很简单,不用 loadbalancer 来生成 next 函数,自定义一个实现:保存一个数组元素的指针,从指向第一个元素开始,暴露一个使指针+1的 increase 方法,在 chatprocess 捕获异常时检测是否为余额不足的错误,是的话就调用 increase 方法,然后重新执行 chatprocess 函数,这样就可以自动切换到下一个有余额的账号了
您好,看了下代码,请问您是随机调用的key吗?能否加一个参数,在当前key用完余额后再调用下一个key呢?这样可能会减少封号的风险,万分感谢!
很简单,不用 loadbalancer 来生成 next 函数,自定义一个实现:保存一个数组元素的指针,从指向第一个元素开始,暴露一个使指针+1的 increase 方法,在 chatprocess 捕获异常时检测是否为余额不足的错误,是的话就调用 increase 方法,然后重新执行 chatprocess 函数,这样就可以自动切换到下一个有余额的账号了
好的,谢谢,我尝试修改下,没有写过ts 233
他们不再接受拉动请求了吗? 这个请求已经存在好几天了,他们没有把它上传到主页。
他们不再接受拉动请求了吗? 这个请求已经存在好几天了,他们没有把它上传到主页。
作者应该是有他的考量才没有合并,就像 #589 那样,留给有需要的人自行合并
希望作者能确认这是否会成为最终版本。
如果能加上会话排队功能就更好了
如果能加上会话排队功能就更好了
会话排队功能是什么样的?详细说说
如果能加上会话排队功能就更好了
会话排队功能是什么样的?详细说说
https://github.com/moeakwak/chatgpt-web-share 这个项目就有,就是本身网页版并不支持多个会话同时回答,这个就是多用户使用的时候,自动进入排队系统
是只能在配置文件里面配置吗,我打包之后,在docker命令里面添加貌似不生效。
是只能在配置文件里面配置吗,我打包之后,在docker命令里面添加貌似不生效。
首先请确保你使用了该 PR 的代码,其次配置是用原有的环境变量进行配置的,可直接添加 OPENAI_API_KEY 和 OPENAI_ACCESS_TOKEN,如果仍然有问题,请把详细说明遇到的问题以及配置环境
感谢您的回复.Sorry,第一次合并代码出了点问题,可以读取到配置的多key,但是当我配置2个key的时候,我和我朋友同时测试,我的长回答还是会被截断。我们的使用场景是,一个key同一时刻只能有一个回答。后者会把前者在回答的内容截断。多个key轮循的话,可以解决。测试结果是不可以。由于我前端不是很了解。我猜测是否是是因为流返回,截断,属于返回错误,没有生成合法对应的parentid的内容。导致失去了上下文。
感谢您的回复.Sorry,第一次合并代码出了点问题,可以读取到配置的多key,但是当我配置2个key的时候,我和我朋友同时测试,我的长回答还是会被截断。我们的使用场景是,一个key同一时刻只能有一个回答。后者会把前者在回答的内容截断。多个key轮循的话,可以解决。测试结果是不可以。由于我前端不是很了解。我猜测是否是是因为流返回,截断,属于返回错误,没有生成合法对应的parentid的内容。导致失去了上下文。
apikey 的话不会限制同一时刻只能有一个回答的。如果是短回答的话能正常运作吗?长回答被截断我还没试过,可以参考 #1334 #1347 #1312 #1307
@LinLin00000000 其实被截止也没关系,我自己写了接口测试,api没有记忆功能,是看传上下之前得会话让他的回答保持不扩散,我现在遇到的问题就是被截断以后,上下文继续不了了。还有api同一时刻官方不限制只能回答一个请求吗?时间那个设置我已经设置为0了,服务器是海外服务器。一个key一个人用 ,不会出现问题 ,上下文可以保持继续。我一般测试问题就是:nginx论文,不少于2000字,等他输出一些内容,你同时另外一个客户端请求,这边内容会被截断,然后这里的上下文接不上了。
@LinLin00000000 其实被截止也没关系,我自己写了接口测试,api没有记忆功能,是看传上下之前得会话让他的回答保持不扩散,我现在遇到的问题就是被截断以后,上下文继续不了了。还有api同一时刻官方不限制只能回答一个请求吗?时间那个设置我已经设置为0了,服务器是海外服务器。一个key一个人用 ,不会出现问题 ,上下文可以保持继续。我一般测试问题就是:nginx论文,不少于2000字,等他输出一些内容,你同时另外一个客户端请求,这边内容会被截断,然后这里的上下文接不上了。
抱歉,最近比较忙,没时间解决这个问题。你可以看看在单个 key 的情况下会不会出现这个问题,也有问题的话可以在主仓库给作者提个 issue