我的编程空间,编程开发者的网络收藏夹
学习永远不晚

公众号接入chatGPT的详细教程附Python源码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

公众号接入chatGPT的详细教程附Python源码

前置准备

  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端口

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

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

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

公众号配置

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

点击添加配置

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

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

接下来就可以回到公众号和 chatGPT 愉快的交流啦~

到此这篇关于公众号接入 chatGPT教程 附Python源码的文章就介绍到这了,更多相关公众号接入 chatGPT内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

公众号接入chatGPT的详细教程附Python源码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

公众号接入chatGPT的详细教程附Python源码

这篇文章主要介绍了公众号接入chatGPT教程附Python源码,这里需要大家准备一个域名,一台服务器和一个公众号,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
2023-02-18

微信小程序 - 最新获取用户昵称 / 头像(wx.getUserProfile 接口被废弃后的代替方案)详细教程,2022 年之后的所有微信小程序,获取用户信息最新详细教程,附带示例源代码

前言 由于官方修改了 “用户头像昵称获取规则” ,导致网上几乎所有教程全部失效,本文来做最新详细教程。 2022 年往后(官方废弃了 wx.getUserProfile 接口),本文是最新微信获取用户头像和昵称的详细教程, 您可以直接
2023-08-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录