声明:本文仅供技术沟通使用,阅览本文需具有一定的开发能力

前置准备

  1. 一个域名
  2. 一台服务器
  3. 一个大众号

域名装备

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

服务器装备

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

import time
from flask import Flask,make_response,request
import openai
from flask import Flask, request
from flask_caching import Cache
import xml.etree.cElementTree as ET
import hashlib
import requests
import re
import os
cnt = 0
my_wx_token = "" # 自定义字母和数字组合即可,后续需要填入大众号后台
my_gpt_key = "" # 这儿填写你在OpenAI后台创立的API-KEY
my_switch_chatgpt = True
app = Flask(__name__)
env_dist = os.environ
cache = 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端口

使用宝塔是比较快捷的装备方法,装置宝塔面板后,进入软件商铺,装置下面两个插件

公众号接入 ChatGPT(附源码)

打开 python 项目管理器 ,简略装备下咱们要启动的项目

公众号接入 ChatGPT(附源码)

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

公众号接入 ChatGPT(附源码)

大众号装备

进入大众号后台,找到设置与开发,进入基本装备,因为我这儿现已装备好了,这儿仅演示下怎么添加启用

公众号接入 ChatGPT(附源码)

点击添加装备

公众号接入 ChatGPT(附源码)

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

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

公众号接入 ChatGPT(附源码)

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

公众号接入 ChatGPT(附源码)

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