
用go编写一个聊天机器人后端(QQ,Tg)
有部署聊天机器人的想法,但是我使用的国内服务器,而且服务器性能也堪忧,于是决定不用云服务器部署了,找个国外的Paas平台,把写的后端送上去就好了。传统的聊天机器人服务都是一体化的,和聊天平台需要集成。我希望把消息处理的逻辑和平台部署的逻辑做两个服务,后者发送信息给前者,前者返回需要发送的信息,后者再在聊天平台呈现信息。目前已经完成了:该后端天然支持http请求,使用go原生net包,创建了一个po
·
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:
chatgpt调用:
- 在聊天中支持chatgpt的回复。该功能使用了go-openai库,支持了go语言对openai api的调用
- 提示词参考:awesome-chatgpt-prompts-zh
只部署一个机器人接口就好了.无论什么聊天平台,通讯功能的实现基本都是互通的。
本后端最终希望实现只对外暴露一个API,实现机器人通讯的应答模式,对不同平台创建不同的新服务,调用接口皆可进行通讯服务.
实现要点
- 使用一个goroutine实现同时启动http端口的监听和webhook地址的监听
- tgbot多参考官方示例和已有项目,官方的机器人接口很完善
- gocq的配置建议阅读我的个人博客
- 微信公众号不建议集成,因为公众号的后端需要连接微信官方的后端,用一个新后端通过http请求调用这个bot后端比较好。
- chatgpt的调用参考go的openai库文档即可,也很完善。注意调用api是无法进行联系上下文对话的,要实现上下文对话只有把历史消息都post给api,这显然是不现实的。
或者你将ai模型部署在本地,将历史记录存放在本地数据库中,而你的ai模型调用chatgpt(显然工作量太大)
更多推荐
所有评论(0)