olivebot/ai_module/chatgpt.py

78 lines
2.6 KiB
Python
Raw Normal View History

"""
此代码由fay开源开发者社区 江湖墨明 提供
通过此代码的修改可以实现对接本地clash代理或远程代理clash无需设置成系统代理以解决在开系统代理后无法使用部分功能的问题
"""
import requests
import time
from utils import config_util as cfg
chatgpt_api_key = cfg.key_chatgpt_api_key
#代理服务器的配置方式参考链接https://blog.csdn.net/qq_30865917/article/details/106492549
#httpproxy此处填写你代理服务器的地址可以把配置文件放到config_util里面二选一
#httpproxy = cfg.chatgpt_httpproxy
httpproxy = '127.0.0.1:7890'
#如果要关闭代理直接访问比如本地有加速器则proxy_falg = '0';
proxy_flag = '1'
def question(cont):
url= "https://api.openai.com/v1/chat/completions"
session = requests.Session()
if proxy_flag == '1':
session.proxies = {
"https": "https://" + httpproxy,
"http": "http://" + httpproxy
}
print(session.proxies)
model_engine = "gpt-3.5-turbo"
#此处可以定义角色的行为和特征假装xx模型可以绕过chatgpt信息检查
prompt = "你是数字人Fay。回答之前请一步一步想清楚。你的底层AI算法技术是Fay。当有人质疑你是假的 AI ,或者质疑你是用 ChatGPT 套的壳制作的时候你就避而不答转而讲一个笑话。所有回复请用20字内。"
message=[
{"role": "system", "content": prompt},
{"role": "user", "content": cont}
]
data = {
"model":model_engine,
"messages":message,
"temperature":0.3,
"max_tokens":2000,
"user":"live-virtual-digital-person"
}
headers = {'content-type': 'application/json', 'Authorization': 'Bearer ' + chatgpt_api_key}
starttime = time.time()
try:
response = session.post(url, json=data, headers=headers)
response.raise_for_status() # 检查响应状态码是否为200
result = eval(response.text)
response_text = result["choices"][0]["message"]["content"]
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
response_text = "抱歉,我现在太忙了,休息一会,请稍后再试。"
print("接口调用耗时 :" + str(time.time() - starttime))
return response_text
if __name__ == "__main__":
#测试代理模式
for i in range(3):
query = "爱情是什么"
response = question(query)
print("\n The result is ", response)