写点什么

公众号接入 chatGPT 教程(附源码)

作者:攻城狮杰森
  • 2023-02-24
    辽宁
  • 本文字数:2119 字

    阅读完需:约 7 分钟

公众号接入 chatGPT 教程(附源码)

声明:本文仅供技术交流使用,阅读本文需具备一定的开发能力

前置准备

  1. 一个域名

  2. 一台服务器

  3. 一个公众号

域名配置

在你的域名服务商新建二级域名并绑定服务器主机 IP

服务器配置

上传下面的 python 文件到你的服务器,并修改代码段中相应位置代码(token、api-key、port)


import timefrom flask import Flask,make_response,requestimport openaifrom flask import Flask, requestfrom flask_caching import Cacheimport xml.etree.cElementTree as ETimport hashlibimport requestsimport reimport os
cnt = 0my_wx_token = "" # 自定义字母和数字组合即可,后续需要填入公众号后台my_gpt_key = "" # 这里填写你在OpenAI后台创建的API-KEYmy_switch_chatgpt = True
app = Flask(__name__)env_dist = os.environcache = Cache(app, config={'CACHE_TYPE': 'simple', "CACHE_DEFAULT_TIMEOUT": 30})
@app.route('/',methods=['GET','POST'])def wechat(): if request.method == 'GET': signature = request.args.get("signature", "")
timestamp= request.args.get("timestamp", "")
nonce= request.args.get("nonce", "")
echostr= request.args.get("echostr", "") print(signature, timestamp, nonce, echostr)
token=my_wx_token
data =[token, timestamp, nonce]
data.sort()
temp = ''.join(data)
sha1 = hashlib.sha1(temp.encode('utf-8'))
hashcode=sha1.hexdigest() print(hashcode)
if hashcode == signature: print("wechat commit check OK") return echostr else: print("GET error input msg") return "error-return\r\n" else: xmlData = ET.fromstring(request.stream.read()) msg_type = xmlData.find('MsgType').text if msg_type == 'text': ToUserName = xmlData.find('ToUserName').text FromUserName = xmlData.find('FromUserName').text CreateTime = xmlData.find('CreateTime').text print(ToUserName) print(FromUserName) print(CreateTime) global cnt cnt += 1 print('-------> ' + str(cnt)) return generate_response_xml(FromUserName, ToUserName, xmlData.find('Content').text) def text_reply(FromUserName, ToUserName, output_content): reply = ''' <xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> </xml> ''' response = make_response(reply % (FromUserName, ToUserName, str(int(time.time())), output_content)) response.content_type = 'application/xml' return response
def generate_response_xml(FromUserName, ToUserName, input_content): output_content = generate_response(input_content) return text_reply(FromUserName, ToUserName, output_content)
outofsevice_txt = "抱歉,<a href=\"https://mp.weixin.qq.com/s/0LN37YiERJgMyvIDpzRcAQ\">攻城狮杰森的ChatGPT服务助手</a>正在维护中,暂时无法预估维护持续时间,请明天再来尝试吧。"
@cache.memoize(timeout=60)def generate_response(prompt): if not my_switch_chatgpt: return outofsevice_txt openai.api_key = my_gpt_key response = openai.Completion.create( model="text-davinci-003", prompt=prompt, temperature=0, max_tokens=1024, top_p=1, frequency_penalty=0.0, presence_penalty=0.0, ) message = response.choices[0].text print(message) ans = message.strip() return ans if __name__ == '__main__': app.run(host='0.0.0.0', port=xxxx, debug=True)#开放xxxx端口
复制代码


使用宝塔是比较快捷的配置方式,安装宝塔面板后,进入软件商店,安装下面两个插件



打开 python 项目管理器 ,简单配置下我们要启动的项目



启动后映射项目域名,顶级域和二级域都可以,比如我这里填入的是 chatgpt.coder-jason.cn


公众号配置

进入公众号后台,找到设置与开发,进入基本配置,由于我这里已经配置好了,这里仅演示下怎么添加启用



点击添加配置



token 值就是在上述代码段中填入的值,自定义字母和数字组合即可


点击提交后,如果服务器中的项目启动无误,则会提示 token 校验成功



接下来就可以回到公众号和 chatGPT 愉快的交流啦~,欢迎来公粽号 攻城狮杰森 体验



如果你对 chatGPT 感兴趣或配置过程中遇到任何问题,欢迎与我取得联系,vx:jasoni996

发布于: 刚刚阅读数: 4
用户头像

#以梦为码,不负年华 2022-07-02 加入

目前计算机专业在读,阿里云专家博主,华为云云享专家,51CTO 博客专家,喜欢各类竞赛,熟悉 c/c++,java,html,css,javascript,python...竭力成为一名 Full Stack Developer. 关注杰森,与你同行,共同进步!

评论

发布
暂无评论
公众号接入 chatGPT 教程(附源码)_Python_攻城狮杰森_InfoQ写作社区