一个使用反代的api的包含聊天概括功能的chatgpt聊天机器人,免翻墙,不消耗余额
通过大佬zhile-io的pandora项目,实现0消费的chatgpt api调用
并且加入大量错误处理
比如这里,就详尽的考虑了gpt-4和gpt-3.5-turbo和pandora的错误处理:
if config.model=="gpt-4":
try:
print("尝试向pandora发送测试文本...")
fake_api("hi", 2500,True,1,config.if_pandora,config.model)
except:
print("gpt4连接失败!")
config.model="gpt-3.5-turbo"
try:
print("尝试向pandora发送测试文本...")
fake_api("hi", 2500,True,1,config.if_pandora,config.model)
except:
print("pandora连接失败!")
config.if_pandora=False
pip install openai
pip install jieba
请参考这个issue
摘要如下:
免梯获取access token: https://ai.fakeopen.com/auth 官方获取access token: http://chat.openai.com/api/auth/session 生成可模拟api的share token: https://ai.fakeopen.com/token
图省事,轻度使用可以使用我的api:
fk-dUTawMfIzwsfkEn_H3YBi1oQGXmlbIxkDwSktK0IykU
君子协定, 请勿使用太多
由于pandora服务最近不是很稳定,所以加入了检查服务是否正常的功能,如果服务不正常,则会自动切换到openai官方api
灵感来自于我同学hhhhhge
此部分代码:
fake_api.py中的fake_api函数:
if if_pandora:
openai.api_key = "YOUR_PANDORA_FAKE_KEY " #fake_api
openai.api_base = "https://ai.fakeopen.com/v1/"
else:
openai.api_key = "YOUR_OPNEIA_REAL_KEY" #real_api
main.py中的调用:
try:
fake_api("test", 1000, True, 0.5,config.if_pandora)
except:
if_pandora=False
print("pandora 连接错误, 尝试官方api")
1.在fake_api.py中定义一个调用ai的函数
2.在token_count.py中定义一个函数来计算token
3.在main.py中让用户输入一个字符串,加入一个history列表
4.调用ai进行回答,并且输出后加入history列表
5.在main.py中调用token_count.py中的函数来计算history列表中的token
6.如果计算出来的token>2500,则调用ai概括,并且覆写进history列表中(可选)
7.再次让用户输入,把用户新输入和history列表中所有内容交给chatgpt
请各位大佬指正,欢迎发起issue
更新:现在zhile-io大佬的api支持了超大token,几乎完全不用担心token,各位在应用的时候可以去掉token计数,但是在调用官方api时建议加上
现在默认不记录token,你可以把main.py中的相关注释去除
在2023.10.28更新中,加入了配置文件
配置文件差不多长这样:
if_pandora = True #是否尝试使用pandora反代
long_text = True #是否启用概括
max_token = 500 #到达此token则概括
smaller_text = 50 #概括成此单词数
openai_api = "YOUR_OPENAI_REAL_KEY" #real_key
pandora_api = "YOUR_PANDORA_FAKE_KEY" #fake_key
base_url = "https://ai.fakeopen.com/v1/" #pandora反代地址
你可以在配置文件中进行设置