利用chatGPT实现公众号智能管家 您所在的位置:网站首页 管家课堂公众号 利用chatGPT实现公众号智能管家

利用chatGPT实现公众号智能管家

2023-03-30 13:24| 来源: 网络整理| 查看: 265

利用chatGPT实现公众号智能管家

写在前面的话:当时开发完还能使用来着,写完文章后chatgpt已经被墙了,思索再三还是发出来祭奠下~如果大家有兴趣的还是可以看看,也能学到不少。

目前openai已经开放了最新的gpt-3.5-turbo模型,价格打了骨折,效果也有较大的提升,用来接入公众号玩玩也是挺有意思的,虽然本人技术不行,但人菜瘾大,非得尝试尝试。

在翻遍了网上的所有资源和guihub各种项目后,终于折腾出来了(😓)。。。当然了,我会给出一套最简单、高效、0成本(除了注册费用)的方案,帮助大家快速上手自己的智能公众号管家(纯小白也能行)。只要有api_key,就能实现一个基于最新gpt-3.5-turbo模型,可多轮会话,回复效率高的智能公众号管家。

⚠️:如果你只是想快速上手,看完第一部分【快速部署即可】,正常30分钟即可完成

快速部署

必备条件: api_key:这个是无法避免的成本,而且早期注册会免费给18美元(听说现在只有5刀了。。。)。具体的注册方法可以参考我前面的chatGPT使用初体验 服务器:微信云托管免费使用3个月的环境,还附赠MySQL 源码:直接fork我的github仓库即可

准备源码

有git经验的可以自行拉取代码并创建自己的代码库,没有git经验的直接fork我的仓库就行:进入我的仓库we-chat[1],点击fork即可。

可放心公开,api_key写进了环境变量里,不在代码中展示~

部署服务器进入控制台:在公众号管理界面-开发者工具-点选进入微信云托管-点击免费试用部署:服务列表-模版部署-点选使用flask-直接部署,等待完成就行 首次部署不需要填数据库密码,首次创建后会给你的微信发一些信息,其中有数据库的账户密码,以后再创建新的服务就会需要了。建议收藏,或者在MySQL重建一个自己记得住的。填写环境变量API_KEY:在服务设置的最下方的环境变量中增加一行,填上自己的密钥就行。

image-20230305173137196

发布:点击发布-绑定GitHub仓库-选择自己的仓库-分支选master-端口默认80,然后点发布等待发布完成就行,如下图。

image-20230305171329971

消息推送:设置-全局设置-消息推送-path地方填【/wechat】-推送模式选【XML】-提交。然后扫码确认即可。

image-20230305172114341

公众号上测试

然后在自己的公众号发消息即可,下图是我的记录:可以看到能记住历史会话,回复效率也很快。

image-20230305172627375

一些简单的设置

重点说一下:当最小实例副本数=0时,30min内无请求就会缩容到0(理解为休眠),所以当有人开始在公众号发消息时,首次可能没响应,因为服务需要重新启动。如果你觉得影响较大,就可以将最小实例副本数设置为1(弊端是可能会消耗较大吧)

image-20230305173321424

项目实施的心(踩)路(坑)历(日)程(记)

如果你只是想上手玩玩,看到上面就行了,如果你想学习新(看)知(笑)识(话),还是可以继续看下去的,看完了,你可能对云服务、本地服务、开发等概念有些清晰的认知了(开发大佬请绕路,勿喷~)

没有服务器怎么办

现在网上的大多数教程都是基于自己的服务器,我又不做开发,也没搞什么大项目,买那玩意干嘛。不过在经历了这么多坑后,以后挣钱了(画个饼~)还是考虑买个服务器折腾下。

皇天不负有心人,在公众号最低成本接入ChatGPT及如何优化体验[2]上看到了希望。作者采用微信云托管实现了免费的云上服务。

如果采用服务器配置进行公众号的开发,公众号的自定义菜单和关键词回复都会失效。而采用微信云托管则不会出现这情况,这对于很多人来说都是很重要的!

微信云托管简介认识微信云托管 可以在公众号管理页面的开发者工具找到微信云托管,正如它所说的:支持公众号网页开发,免服务器免运维,无需维护access token和签名即可免鉴权调用微信开放接口。 在消息配置时,不用像服务器配置开发那样,进行消息校验。

image-20230304222046867

部署发布 从部署到发布都很简单,建议直接采用模版部署,傻瓜式一键操作。你每次将修改的代码push到仓库时,微信云托管会自动进行流水线部署发布(偶尔不会及时自动部署发布,你就手动点发布,然后点执行流水线就好了。)手动发布可以参考官方b部署发布文档[3]。云端调试 云端调试功能真的很垃圾,我到现在都没搞明白。仅知道的是:空body调试是没有传递信息的,如果你的代码不能处理这个问题就会报错,如果报错在设置消息推送就会失败(全是坑,而且没有文档说明,全靠大海捞针)。所以需要确保你的代码在接收到任何消息时都能return(可以使用try finally),这个时候云端调试的status就会等于200,才能正常配置消息推送。运行日志 运行日志就是执行代码过程中的所有记录,可以在代码适当地方加上print信息,这样可以在运行日志中看到问题所在。当然了,微信云托管的云上调试是在是太拉了,还是建议通过本地调试(后面会继续介绍本地调试的坑,累了~)服务设置 服务监控没啥看头,直接看设置吧。这里有几点比较重要,比如关闭服务(当你觉得这个服务没啥用了,就像我该用flask后就不需要koa的服务了,就可以关掉了)。可以改一些参数,例如cpu核,最小实例副本数。 这里重点说一下最小实例副本数,当最小实例副本数=0时,30min内无请求就会缩容到0(理解为休眠),所以当有人开始在公众号发消息时,首次可能没响应,因为服务需要重新启动。如果你觉得影响较大,就可以将最小实例副本数设置为1(弊端是可能会消耗较大吧,具体的我也不懂~)。MySQL与对象存储 这是用来维护MySQL及相关存储信息的,这个项目没有用到MySQL,所以没做深究。需要注意的是,当你首次创建服务的时候,会给微信上发送MySQL的账号和密码,你可以在这里重置,或者记住给的随机密码,在创建第二个服务的时候需要用到。设置 资源监控与费用中心看不懂,不想了解了。设置里面比较重要的是这个全局设置,和这个项目相关的就是消息推送了,前面说了,如果你的代码不能通过调试,就无法配置消息推送(但是你随便写一个简单的先部署上,就可以配置消息了。后续改完代码有bug也不需要重新配置消息了,算是曲线救国吧~)。后面的拓展功能暂时也用不上,就不说了。藏的贼深的云上linux 当你找到云上linux时,你才真正知道这是个云服务器,恍然大明白!。在这里你可以可以查找文件,看python安装包有哪些。你需要在部署发布页面,点击你服务下面的实例子,然后会出现Webshell,点击它就能进入linux了。(这个产品设计的初衷在哪,完全搞不懂)本地调试

代码调试是必不可少的,假设你们想在我的代码基础上实现一些自定义功能,就需要改源码。你不可能每次改完然后push到仓库,然后在到线上看运行日志吧。

小声逼逼:很不幸,我一开始就是这样的,每次部署发布就是2、3分钟,运行日志又臭又长,找个问题几分钟,改完也不知道改的对不对,反反复复,真的是太菜了啊~

官方本地调试 感觉就突出一个难,对小白(比如我)一点都不友好。首先你需要安装docker,本地代码(这个我有),VScode,微信开发者工具。示例还是用java写的。我在下载完docker,然后就不知道该干嘛了,也没用过啊,果断放弃。但是云上调试我是不想再尝试了。 优点:不需要配置服务器信息,所以不会造成微信公众号的自定义菜单和关键词回复失效。所以介意的同学还是自行研究这个方法吧!!!内网穿透实现本地服务器公网访问 缺点:前面说到,配置服务器信息时,会导致微信公众号的自定义菜单和关键词回复失效,介意的同学请不要尝试。不过在停用配置服务消息后,且取消第三方授权,微信公众号的自定义菜单和关键词回复会再次重新生效,也不需要重新编辑,所以不必过度担心。 听起来是不是高大上,感觉比官方的还难?No!我试了下极其简单,用过都说好。至于我是怎么想到的,这都依赖于chatGPT了,后面我会继续讲chatGPT是如何帮助我,又是如何坑惨我的。。。 我问chatGPT,有没有什么办法可以在本地模拟接受微信公众号的消息(我的初衷是模拟线上的消息格式到底是什么样的,因为我的代码一直都是解析xml错误。)chatGPT就告诉我可以通过ngrok将本地服务器映射到可以访问的公网,然后在微信公众号服务器配置上填写url和token就可以了。听起来好简单啊,果断决定试试。为什么放弃ngrok,选择用natapp 但是ngrok给我的映射一直都是https协议的,微信公众号服务器配置上https一直显示token验证失败(又是一个大坑!)。反复问chatGPT也没有得到有效的解决办法,最后在网上看到有人说需要http协议的才行。按理说ngrok应该可以提供两个协议的,但不清楚为啥我的只有一个,我猜测是没有注册的原因,但是注册官网始终打不开,无奈只能放弃。最终决定尝试natapp,免费的也够用了内网穿透实现本地调试实例在natapp官网[4]下载自己需要的安装包,例如mac 64位将压缩包解压,得到一个无法打开的natapp文件在终端进入该natapp文件的路径,输入chmod a+x natapp得到一个可执行文件natapp,logo类似于命令行界面。在官网注册一个账号,然后购买一个免费隧道,然后在我的隧道里面查看authtoken,点击复制即可在终端执行./natapp -authtoken=你的authtoken值,就能在终端得到一个指向地址了。

image-20230305001215741

安装natapp在公众号管理页-基本配置-服务器配置中完成配置 URL:填写上面映射的地址:http://xx6wf4.natappfree.cc Token:自定义一个,需要在自己的代码中用到,主要用来验证微信消息。 EncodingAESKey:随机生成即可 消息加解密方式:选择明文模式 ⚠️:先不要点提交!!!在自己代码微信消息验证中加上刚才填写的Token,然后执行自己的flask应用

image-20230305000828215进入自己项目地址,执行自己的主程序,例如本项目的app.py。方式有多种,最简单的是python app.py

image-20230305001009062

点击立即提交-点击启用 正常情况,配置不会有问题,点击提交就OK了,然后点击启用就可以在手机上给公众号发消息,因为代码中加了debug=True,所以你每次修改不需要重新启动程序(不过有时候不好使,还是退出重新启动比较保险)就能看到运行日志了,这样就实现了简单的本地测试。等测试完了,就可以将代码push到仓库,然后开始进行微信云托管了。注意事项 因为现在openai的API被墙了,natapp给的公网是国内的,所以想要测试调用openai的API效果,需要挂着代理才行。ngrok给的地址是国外的,所以可以 正常调用openai的API。缺点是不稳定,且前提是它能提供http协议的地址。源码解读

我自己写的app(old).py挺简单的,没啥可以解读的了,由于它回复效率太差,所以弃用了。给大家解读下这个开源的chatbotv3[5]吧,这也是主要调用的类。其实我们只要知道它是干什么的,怎么用的就行,所以先help一下,如下图:

image-20230305004321247

嗯,都是英文。。。没事,现在我们有了chatGPT,让它解释给我们听就行(这就是我要告诉你们的,虽然它给的好多代码都是错的,但是它解释代码是真的强,不信你把源码一段一段复制给它看)

image-20230305004601348

你甚至还能让它给你写个例子,怎么用这些方法

image-20230305004650919

one more thing:微信对话开放平台

其实腾讯有自己的微信对话开放平台[6],对消息设置更为友好。它会有一些简单的预置技能,还可以定制一些高级技能,高级技能中的机器人回答也可通过调用自定义接口(这就给调用chantgpt提供了方便),具体的可以参考如何将ChatGPT接入微信公众号[7],不过这里的自定义接口需要自己开发集成了chatgpt服务的第三方API,我目前还不会,等以后有时间了再倒腾下(再次画饼~)

image-20230305091740523

不过目前看这些预置技能什么的对比chatgpt实在是太低能了,但是保不齐腾讯开发出了自己的大语言模型呢(开始PUA腾讯)?耐心等等也不是不可以~

总结

本文历经波折,终于实现了从调试到部署到实现微信公众号接入chatGPT的全过程,折腾的有够呛。不过也算学到了不少,例如微信云托管、服务器相关、内网穿透等知识,也算小有收获吧。

这个公众号智能管家比较简单,由于是薅的微信云和openai的API,所以使用额度和时间有效,如果大家使用频繁后没有免费资源了,就会暂时下线了,再次上线得等我挣大钱开始买买买的时候了(再再再次画饼~)

这个代码前面也介绍了,是开源的(我本人也写了一个简单的,直接调用的API,然后返回结果。详见app(old).py,只是不知道为什么回复效率极低,只能放弃。。。),功能也很多,可以进行二次开发,完成一些自定义的效果。例如开发用户区分功能、关键词启动、自定义设定等等,当然这个就更遥遥无期了(持续画饼中~)

chatGPT是真的好用,什么信息不懂直接问它就行,例如我通过它知道了内网穿透,知道了如何解读代码,知道了怎么写简单的flask应用,知道了怎么看各种错误等等。但是它坑起人来也不含糊,例如服务器token配置错误给了我一堆毫无用处的解决方案、给我的解析微信消息的代码是错误的,导致我一直以为服务器有问题。这可能与它对2021年后的信息掌握较少有关吧,所以如果是最新的信息还是网上搜吧,代码看看思路就好,信他你就惨了~

最后的最后,希望大家闲着没事来体验体验,我的免费额度还挺多的,粉丝也比较少(扎心了~),可以疯狂薅起来~(现在不用了。。。)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有