如何用python在微信公众号上添加自己的ChatGPT

news2024/11/18 10:24:36

由于之前chatgpt的火热,现在很多微信公众号都接入了chatgpt的接口,来给自家公众号增添一丝乐趣,下面我以自己的经验,用python在微信公众上添加自己的chatGPT,先看下方成果图
在这里插入图片描述

三步曲

    • 申请自己的公众号
    • 部署服务
    • 接入chatgpt接口
    • 注意事项

申请自己的公众号

这个没什么好说的,自己在微信开发平台申请一个个人号即可
这里附上别的腾讯官方注册公众的步骤 微信公众号个人申请步骤
注册完之后,找到服务器基本配置,如下图:
在这里插入图片描述
将这里的服务器地址,填成自己服务器地址,这个地址接口,对应的是微信公众平台的自动回复功能

部署服务

我这里使用的是python的flask,服务很简单,只 实现了一个接口,就是openai的对话服务,也就是将这里的接口填上微信公众平台的服务器地址里面,接口主要代码如下:

def reply_text(to_user, from_user, send_content, reply_content):
    """
    以文本类型的方式回复请求
    """
    
    xml_msg = """
        <xml>
            <ToUserName><![CDATA[{}]]></ToUserName>
            <FromUserName><![CDATA[{}]]></FromUserName>
            <CreateTime>{}</CreateTime>
            <MsgType><![CDATA[text]]></MsgType>
            <Content><![CDATA[{}]]></Content>
        </xml>
        """.format(to_user, from_user, int(time.time() * 1000), reply_content)
    return xml_msg

@app.route("/wechat", methods=["GET", "POST"])
def weixin():
    if request.method == "GET":  # 判断请求方式是GET请求
        my_signature = request.args.get('signature')  # 获取携带的signature参数
        my_timestamp = request.args.get('timestamp')  # 获取携带的timestamp参数
        my_nonce = request.args.get('nonce')  # 获取携带的nonce参数
        my_echostr = request.args.get('echostr')  # 获取携带的echostr参数

        token = '****'  # 一定要跟刚刚填写的token一致

        li = [token, my_timestamp, my_nonce]
        li.sort()
        sha1 = hashlib.sha1()
        sha1.update("".join(li).encode('utf-8'))
        hashcode = sha1.hexdigest()

        # 加密后的字符串可与signature对比,标识该请求来源于微信

        if my_signature == hashcode:
            return my_echostr
        else:
            return ''
    else:
        # 解析xml
        xml = ET.fromstring(request.data)
        toUser = xml.find('ToUserName').text
        fromUser = xml.find('FromUserName').text
        msgType = xml.find("MsgType").text
        createTime = xml.find("CreateTime")
        # 判断类型并回复
        content = xml.find('Content').text
        if msgType == "text":
        	return reply_text(fromUser, toUser, content, "****")

注意:微信公众平台需要你实现这个接口的get请求和post请求,get请求用来做校验使用,而post请求才是真正的自动回复,在上述demo中,我回复的是****,这个做了隐私处理,你完全可以按照自己的需求来
这里有一些注意事项:

公众平台以access_token为接口调用凭据,来调用接口,所有接口的调用需要先获取access_token,access_token在2小时内有效,过期需要重新获取,但1天内获取次数有限,开发者需自行存储,详见获取接口调用凭据(access_token)文档。

被动回复消息:在用户给公众号发消息后,微信服务器会将消息发到开发者预先在开发者中心设置的服务器地址(开发者需要进行消息真实性验证),公众号可以在5秒内做出回复,可以回复一个消息,也可以回复命令告诉微信服务器这条消息暂不回复。被动回复消息可以设置加密(在公众平台官网的开发者中心处设置,设置后,按照消息加解密文档来进行处理。其他3种消息的调用因为是API调用而不是对请求的返回,所以不需要加解密)。

这里是我认为比较重要的两个注意点,具体其他的地方请参考详细的开发者文档 微信公众平台开发概述

然后将服务部署在自己的一台公网服务器即可,至此,服务就算部署完成了

接入chatgpt接口

接入chatgpt接口,自己在openai的官网上找一个对话接口就行,将其接入到自动回复的消息体中去即可,这里笔者介绍另外一种免费的方法

打开Edge浏览器,添加WeTab插件,WeTab插件可以免费使用chatgpt的功能,如下图所示

在这里插入图片描述
安装了WeTab插件,注册了账号成功使用之后,就进入到关键的抓包环节,这里的接口请求也是比较简单,我们将关键接口的请求复制为curl,并打开这个网址:将curl转为python代码
将curl粘贴到文本框中,如下图所示
在这里插入图片描述
就能够直接把请求的代码中拿出来,这一部分就是chatgpt的接口,相信到这,你应该明白了,直接将该部分接入自动回复的那块代码那里就行,但是到这还没完,如果上述的过程中有失败的地方,请参考一下下方的注意事项

注意事项

1、在微信公众平台中添加自己的服务器地址时,如果出现url请求超时,大概率就是你的地址访问不通,如果你使用natapp之类的映射工具, 最好不要使用,大概率会请求超时

2、在部署服务中,据官方介绍最好使用80接口,本人倒是没有使用过其他端口,如果你的端口不是80,可以改为80试一下是否可以使用

3、在拿到chatgpt的接口中,确实是有一些可变参数需要去调整,目前,本人就只发现两个参数,headers里的author认证,还有json里的conversationid,经本人实验,这个headers的认证过期时间应该挺久,我用了三天还仍然可以用,json里的参数可以直接去掉,也能够成功请求接口

4、由于微信自动回复有5秒的限制,并且最多请求3次,超过3次,自动回复会报服务出现故障,请稍后再试的提示,但是因为chatgpt的回复过长,一般都会超过十几二十秒,所以这里推荐有异步的形式去访问,每次收到消息后,将结果先进行存储,稍后根据关键词,再将结果拿出来,如下图:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/543577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何用国产DBDesginer软件进行数据库建模设计?

我们在开发软件系统之前都需要进行数据结构的建模设计&#xff0c;传统的都是通过PowerDesiger等国外的软件或直接Excel来进行数据库表结构设计&#xff0c;今天来了解一下如何使用国产软件来进行数据库建模设计 1、首先是注册DBDesigner用户&#xff08; http://dbdesigner.n…

用蹩脚英语在StackOverflow上飞奔:如何在一个RestApi接口中调用另一个RestApi文件接口发送上传文件请求

上班摸鱼、下班干活&#xff0c;日常埋坑、加班填坑——这是我的搬砖&#xff0c;亦是在座的各位&#xff01; 昨天在StackOverflow上面闲逛&#xff0c;突然看到一个国际友人提出了一个问题&#xff0c;他发出了好久都没有人来回答&#xff0c;本着在下为人处世乐善好施、广结…

视频flv怎么转换成mp4格式?

视频flv怎么转换成mp4格式&#xff1f;关于视频格式转换这个问题&#xff0c;小编发现&#xff0c;就算不是从事视频编辑的朋友也有可能经常会遇到这种转换操作&#xff0c;为什么会这样呢&#xff1f;原因主要是因为视频格式的种类真的非常多&#xff0c;多到我们数不清&#…

软件测试之自动化测试

目录 一、初试自动化测试 1.自动化测试的分类&#xff08;简单了解&#xff09; 2.如何实施自动化单元测试 二、selenium 介绍&#xff08;重点内容&#xff09; 1.工作原理 2.Selenium 环境搭建 2.1 Chrome java 2.2 常见问题及解决方案 1.元素的定位 1.1 CSS 定位…

sonarqube分析仓库

sonarqube可以有多种方式分析仓库 使用GitlabCI 设置项目编码 添加环境变量 创建或修改配置文件 sonarqube-check:image: name: sonarsource/sonar-scanner-cli:latestentrypoint: [""]variables:SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Defi…

GE H201Ci-1 单通道变压器控制单元

HYDRAN 201Ci-1一个标准模拟输出通道控制器非隔离&#xff0c;跳线可配置为0-l mA 一个遥控电子控制器或4-20 mA&#xff08;最大输出10 V&#xff09;、0-1 V或0-10 V&#xff1b;0-2000 ppm范围 HYDRANR 201Ti智能变送器&#xff1b;它提供网络通信能力 第二个可选模拟输出加…

基于Web的智慧产业园区3D可视化运营管理平台

改革开放以来&#xff0c;园区逐渐成为地区招商引资、储备人才的重要途径。我国社会、经济处于快速发展阶段&#xff0c;园区正向着智慧化、创、科技化转变。 建设背景 在人类的历史发展过程中&#xff0c;随着5G、人工智能、云计算、物联网、GIS等新一轮信息技术的迅速发展&…

Jenkins流水线整合k8s实现代码自动集成和部署

一、前置条件 1、安装好k8s集群 这里先要搭建好一个K8s集群&#xff0c;笔者这边就采用使用了一个一主一丛的k8s集群&#xff0c;k8s集群的版本使用1.19.5版本&#xff0c;服务器的配置&#xff1a;2核4G&#xff0c;操作系统: CentOS Linux release 7.9.2009 (Core) 主机名…

Rabbitmq 下载与安装

文章目录 说明1、下载Erlan2、下载对应的rabbitmq 说明 Rabbitmq依赖于Erlan 对应版本查看&#xff1a;https://www.rabbitmq.com/which-erlang.html 这里版本使用&#xff1a; Rabbitmq 3.9.11 Erlan 24.1.7 1、下载Erlan https://www.erlang.org/patches/otp-24.1.7 安装完…

matlab代码复现:室内定位、无线传感器网路定位、估计优化滤波等探讨及技术支持

室内外定位导航、无线传感器网路定位、估计优化滤波等探讨及技术支持 博主主要擅长以下几个方面&#xff0c;探讨、技术支持、代码复现等问题欢迎联系&#xff0c;也可以站内私信 weixin: ZB823618313&#xff08;备注来意&#xff09; 1. 估计\滤波\融合 1 各种参数估计算法…

ChatGPT智能聊天系统1.0.3版本发布啦~

ChatGPT智能聊天系统1.0.3版本啦&#xff01;主要更新内容如下&#xff1a; 新增功能 获取微信昵称 支付宝支付 PC端允许退出登录 PC端创作和技能支持关键词搜索 分享记录添加今日分享统计 邀请记录添加今日邀请和今日发放统计 细节优化 模型对话框去掉快递发送功能 后…

bioinformatics2022 | Sc2Mol+:使用VAE和Transformer的两阶段基于骨架的分子生成

原文标题&#xff1a;Sc2Mol&#xff1a;a scaffold-based two-step molecule generator with variational autoencoder and transformer 论文地址&#xff1a;Sc2Mol: a scaffold-based two-step molecule generator with variational autoencoder and transformer | Bioinfo…

3 分钟利用 FastGPT 和 Laf 将 ChatGPT 接入企业微信

原文链接&#xff1a;https://forum.laf.run/d/556 FastGPT 是一个超级&#x1f42e;&#x1f37a;的 ChatGPT 平台项目&#xff0c;功能非常强大&#xff1a; ✅ 集成了 ChatGPT、GPT4 和 Claude ✅ 可以使用任意文本来训练自己的知识库、文档库&#xff0c;而且知识库专有模…

无人值守的IDC机房动环综合运维方案

企业数字化转型以及5G、物联网、云计算、人工智能等新业态带动了数据中心的发展&#xff0c;在国家一体化大数据中心及“东数西算”节点布局的推动下&#xff0c;数据中心机房已成为各大企事业单位维持业务正常运营的重要组成部分&#xff0c;网络设备、系统、业务应用数量与日…

16-01 云平台分类和思考

云环境的分类 混合云 为什么选择混合云 混合云网络互联 入口层分流 CDN内容分发网络 CDN工作原理 Captcha图灵测试 SLB软件负载均衡器 SDN&#xff1a;软件定义网络网络层次&#xff1a;通用网络&#xff08;2-4层&#xff09;和HTTP&#xff08;5-7层&#xff09;多种实现…

Espresso Sequencer:针对Rollup生态的Decentralized Shared Sequencing Layer

1. 引言 前序博客&#xff1a; Rollup去中心化Rollup DecentralizationAztec 征集 Rollup Sequencer去中心化提案Espresso Sequencer&#xff1a;去中心化RollupsRadius&#xff1a;针对Rollup生态的Trustless Shared Sequencing层 当前的L2 Rollup方案在扩容的同时&#xf…

Maven的生命周期详解

目录 一、生命周期&#xff08;cleansitedefault&#xff09;1、生命周期与插件的关系2、maven的三套生命周期3、生命周期执行规则 二、Maven插件&#xff08;plugin&#xff09;1、两种类型的插件2、调用插件有两种方式3、内置绑定4、自定义绑定插件 三、官网查找插件 本篇文章…

《Go专家编程(第2版)》书评

首先感谢官方的肯定&#xff0c;让我在【图书活动第四期】的活动中获得了《Go专家编程(第2版)》这本书&#xff0c;以下是从我的观点对这本书的书评 文章目录 前言书籍部分读者评价总结 前言 很高兴有机会写一篇关于《Go专家编程&#xff08;第2版&#xff09;》的书评。大致读…

Scrum进入疲惫期?三点帮你走出困境

《敏捷软件开发》中提到&#xff1a;“Scrum可以帮助团队更好地应对变化和不确定性&#xff0c;以及更快地响应客户需求。通过持续的反馈和改进&#xff0c;Scrum可以提高团队的适应性和灵活性。” 然而&#xff0c;有些团队在使用Scrum后&#xff0c;却出现了工作任务越来越多…

在线搭建产品FAQ常用问题的网页Tips清单

在线搭建产品FAQ&#xff08;常见问题解答&#xff09;页面&#xff0c;是现代企业建立客户服务体系中的重要组成部分&#xff0c;旨在通过提供问题解答&#xff0c;为客户提供更好的用户体验。 在线搭建产品FAQ网页的常用Tips清单&#xff1a; 确定FAQ的主题和范围 在创建FAQ…