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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

利用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点击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及如何优化体验上看到了希望。作者采用微信云托管实现了免费的云上服务。

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

微信云托管简介

  • 认识微信云托管

    可以在公众号管理页面的开发者工具找到微信云托管正如它所说的支持公众号网页开发免服务器免运维无需维护access token和签名即可免鉴权调用微信开放接口。

    在消息配置时不用像服务器配置开发那样进行消息校验。

image-20230304222046867

  • 部署发布

    从部署到发布都很简单建议直接采用模版部署傻瓜式一键操作。你每次将修改的代码push到仓库时微信云托管会自动进行流水线部署发布偶尔不会及时自动部署发布你就手动点发布然后点执行流水线就好了。手动发布可以参考官方b部署发布文档

  • 云端调试

    云端调试功能真的很垃圾我到现在都没搞明白。仅知道的是空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免费的也够用了

  • 内网穿透实现本地调试实例

    1. 安装natapp

      • natapp官网下载自己需要的安装包例如mac 64位

      • 将压缩包解压得到一个无法打开的natapp文件

      • 在终端进入该natapp文件的路径输入chmod a+x natapp得到一个可执行文件natapplogo类似于命令行界面。

      • 在官网注册一个账号然后购买一个免费隧道然后在我的隧道里面查看authtoken点击复制即可

      • 在终端执行./natapp -authtoken=你的authtoken值就能在终端得到一个指向地址了。

        image-20230305001215741

    2. 在公众号管理页-基本配置-服务器配置中完成配置

      URL填写上面映射的地址http://xx6wf4.natappfree.cc

      Token自定义一个需要在自己的代码中用到主要用来验证微信消息。

      EncodingAESKey随机生成即可

      消息加解密方式选择明文模式

      ⚠️先不要点提交

    3. 在自己代码微信消息验证中加上刚才填写的Token然后执行自己的flask应用

      image-20230305000828215

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

      image-20230305001009062

    4. 点击立即提交-点击启用

      正常情况配置不会有问题点击提交就OK了然后点击启用就可以在手机上给公众号发消息因为代码中加了debug=True所以你每次修改不需要重新启动程序不过有时候不好使还是退出重新启动比较保险就能看到运行日志了这样就实现了简单的本地测试。等测试完了就可以将代码push到仓库然后开始进行微信云托管了。

    5. 注意事项

      因为现在openai的API被墙了natapp给的公网是国内的所以想要测试调用openai的API效果需要挂着代理才行。ngrok给的地址是国外的所以可以 正常调用openai的API。缺点是不稳定且前提是它能提供http协议的地址。

源码解读

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

image-20230305004321247

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

image-20230305004601348

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

image-20230305004650919

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

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

image-20230305091740523

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

总结

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

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

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

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

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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: ChatGPT