微信公众号接入ChatGPT 教程【附源码】

公众号接入 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 = 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端口

复制

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



1、本站目前拥有近 1000+ 精品收费资源,现在加入VIP会员即可全部下载。
2、本站资源部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、凡是AIcommandbot直播间粉丝群的朋友注册会员,即可升级为AIcommandbot中级会员。
AIcommandbot » 微信公众号接入ChatGPT 教程【附源码】

发表评论

加载中~

加入本站VIP会员订阅计划,海量资源免费查看

目前为止共有 3654 位优秀的VIP会员加入! 立刻加入VIP会员