代码中使用到的revChatGPT依赖源码库: https://github.com/acheong08/ChatGPT
下面代码的目的是与ChatGPT官方接口进行交互,注意安装一下里面用到的依赖 chat-gpt-qbot.py:
import flask, json
from flask import request
from revChatGPT.revChatGPT import Chatbot
config = {
"session_token": "换成你自己的token"
}
# 创建一个服务,把当前这个python文件当做一个服务
server = flask.Flask(__name__)
chatbot = Chatbot(config, conversation_id=None)
def chat(msg):
message = chatbot.get_chat_response(msg)['message']
print(message)
return message
@server.route('/chat', methods=['post'])
def chatapi():
requestJson = request.get_data()
if requestJson is None or requestJson == "" or requestJson == {}:
resu = {'code': 1, 'msg': '请求内容不能为空'}
return json.dumps(resu, ensure_ascii=False)
data = json.loads(requestJson)
print(data)
try:
msg = chat(data['msg'])
except Exception as error:
print("接口报错")
resu = {'code': 1, 'msg': '请求异常: ' + str(error)}
return json.dumps(resu, ensure_ascii=False)
else:
resu = {'code': 0, 'data': msg}
return json.dumps(resu, ensure_ascii=False)
if __name__ == '__main__':
server.run(port=7777, host='0.0.0.0')
我们只要运行上面的代码就可以在7777端口直接与ChatGPT进行交互了 我们使用接口工具测试一下,结果如下图,可以看到,接口正常工作并从ChatGPT得到了对话结果 其中消息体:
{
"msg": "你会数学吗"
}
消息体是我们自定义的内容,你可以自己增加字段对接口进行功能扩展 本例子中的msg就是我们的发言内容 而接口返回的:
{"code": 0, "data": "是的,我会数学。我是一个大型语言模型,我可以回答各种问题,包括数学问题。你有什么数学问题需要我帮助你解决吗?"}
这也是我们自己定义的,当code=0时代表与ChatGPT交互成功,此时data为ChatGPT反馈给我们的对话内容。而当code=1时说明出现了错误,此时没有data,但在msg中返回了错误信息
到这里我们就拥有了一个可以和ChatGPT交互到接口,通过这个接口,我们就能与ChatGPT进行对话
既然进行对话,那就需要一个输入框和一个按钮,你可以做一个网页来调用这个接口,这很简单,我们不在这里赘述了。 我们真正要做的是一个QQ机器人,其原理就是让QQ机器人监听到消息,并通过我们的接口把消息转发给ChatGPT,然后再把ChatGPT返回的对话内容发送给QQ用户,这样一个可以对话的机器人就做好了,具体做法,下个文章讲解。