用go编写一个聊天机器人后端(QQ,Tg)

github地址:Gobot-vio

使用go搭建的bot,取名为 Vio ,旨在提供一个接口,用来接受不同协议的请求,调用转发外部讯息并返回,目前可以完成基于chatgpt聊天任务,部署在一个服务器可以多个平台共同调用。

如果你有想法和意见请提issue!这对我和bot都很重要!
欢迎qq加群讨论:340961300

支持通信方式:

  • http
  • webhook
  • 反向websocket

实现平台:

  • Telegram bot
  • QQ bot
  • 微信bot

写在前面/preface

有部署聊天机器人的想法,但是我使用的国内服务器,而且服务器性能也堪忧,于是决定不用云服务器部署了,找个国外的Paas平台,把写的后端送上去就好了。

传统的聊天机器人服务都是一体化的,和聊天平台需要集成。我希望把消息处理的逻辑和平台部署的逻辑做两个服务,后者发送信息给前者,前者返回需要发送的信息,后者再在聊天平台呈现信息。

目前已经完成了:

http:

  • 该后端天然支持http请求,使用go原生net包,创建了一个post请求的路由,可以解析post内容转发调用chatgpt,目前我将其使用在微信公众号的后端上。

webhook

  • 为Tg设置了webhook,可以监听tg服务器的消息,实现tgbot。
  • 针对Telegram的消息处理,对私人,群组,超级群组各有不同的应答模式。

反向ws:

  • 配合go-cqhttp使用,用于实现qqbot,基于上报事件,调用gocq提供的api进行回复。注意参考gocq官方文档
  • 可以调用api发送图片,随机图片api参考

chatgpt调用:

只部署一个机器人接口就好了.无论什么聊天平台,通讯功能的实现基本都是互通的。

本后端最终希望实现只对外暴露一个API,实现机器人通讯的应答模式,对不同平台创建不同的新服务,调用接口皆可进行通讯服务.

实现要点

  • 使用一个goroutine实现同时启动http端口的监听和webhook地址的监听
  • tgbot多参考官方示例和已有项目,官方的机器人接口很完善
  • gocq的配置建议阅读我的个人博客
  • 微信公众号不建议集成,因为公众号的后端需要连接微信官方的后端,用一个新后端通过http请求调用这个bot后端比较好。
  • chatgpt的调用参考go的openai库文档即可,也很完善。注意调用api是无法进行联系上下文对话的,要实现上下文对话只有把历史消息都post给api,这显然是不现实的。
    或者你将ai模型部署在本地,将历史记录存放在本地数据库中,而你的ai模型调用chatgpt(显然工作量太大)
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值