通过ChatGPT构建微信ai助理(一)
0x01 背景和功能
ChatGPT 相信大家最近都玩的比较多了 , 但是其只提供网页端服务与国服锁区的限制,导致我不是特别专门去开一个tab,去挂这个服务,我就在想能否做一个微信机器人,让我在微信里面,就可以使用 ChatGPT ? 爆肝一整天,总算是搞定了,基于企业微信应用的 ChatGPT 聊天机器人~
ChatGPT 是什么?
ChatGPT 是一种由 OpenAI 训练的大型语言模型,可以让人们在多种语言下与设备进行交流,可以被用于回答人们提出的问题,分析文本,完成自然语言处理任务,如情绪分析、机器翻译等,还可以自动生成文本。
企业微信如何与微信进行联动?
- 如何给微信发消息?
一般情况下,通过微信第三方客户端,或是网页扫码来绕过微信客户端的行为,很快就会收到,警告⚠ 或者被永久封禁,对于个人大号,来说风险太大了。
一般可以通过测试公众号模板消息来进行提示,但是要做一个双向对话的机器人还是不够。
这个时候我发现了企业微信的内部应用的消息是跟微信互通的,通过开发文档发现思路上是可行的,而且企业微信也是允许个人注册但不认证的~
0x02 方案与踩坑
使用GPT-3和企业微信来构建一个个人ai微信助理最终实现的方案是
本来就是同步调用API的事情为什么架构到最后变得怎么复杂?
坑一
企业微信要求回调请求地址必须为域名,但在国内备案实在是给自己找事,只能通过其他方式来中转。
坑二
我一开始选择了一家香港的 serviceless 服务商 aircode,说句实话,做的很简洁也很舒适,很符合小而美的应用,但是我写了半天,发现它家的服务,给我把微信回调的xml 给吞了,我收不到用户消息,只能转战 阿里/腾讯云这种 函数云服务来实现,所以就多了 阿里云fc中间层用来给企业微信消息做中转。
坑三
阿里云的 fc node.js runtime 同步函数服务超时时间为 5 - 6 秒,我 await 等待openai服务给响应的过程中,整个服务还是会被杀掉,实在无奈只能同步转异步,在自己的服务器上起了一个 golang 的服务,接受微信消息,异步等待openai响应后,再调用 企业微信服务给微信推送消息。
0x03 未来
经过一些测试,我发现这个机器人在很多方面都有提高的空间,毕竟也才刚刚发布3个多月,在使用上 prompt 很重要,基于一些限制条件,同一机器人可以承担各种各样的功能。能够模拟各种角色,且差的不是很离谱,这大概就是这个机器人用途广泛的原因。
我之后会把详细的配置文档跟代码放到 https://github.com/whyiyhw/chatgpt-wechat
上,各位感兴趣的,我也可以拉进 企业微信,自己体验,代码开源的也可以自己搭建试试?
目前我使用的ai 辅助软件有 openai ChatGPT
、 github copilot
、 stable-diffusion-webui
ai也在渐进式的进入我们的生活,君子不器
(以上文章大纲与部分内容出自 ChatGPT ,你们觉得哪些是 它写的?)