让你拥有自己的ChatGPT机器人

slug
series-status
status
summary
date
series
type
password
icon
tags
category

2023-03-02 23:00更新

API好像被墙了 = = (很可惜,估计至少晚上8点就被墙了==)

前言

就在今天凌晨两点,OpenAI在它的官方推特账号发布了升级信息,内容包括多个升级,其中就包含ChatGPT-3.5-turbo模型API的开放,今天我们就来介绍一下如何通过hubot将它接入我们自己的聊天平台 Rocket.Chat~
本文不是面向完全的小白同学,所以可能有些内容有些难懂,如果有看不懂的部分可以评论留言~

部署Rocket.Chat

本章节内容转自 我不是咕咕鸽 大佬的博客文章:https://blog.laoda.de/archives/docker-compose-install-rocketchat
如果大家已经搭建好这个聊天平台了可以直接看下一部分~

介绍

RocketChat是一个开源并且完全免费的WEB聊天系统,虽然核心部分是基于WEB,但是官方开发了众多跨平台客户端:
你可以到这里下载Windows、macOS、Linux的桌面客户端。
安卓用户和iOS用户可以在分别在Google Play和App Store上下载移动端。
可以说RocketChat现在在众多主流操作系统上使用是完全没有问题的。
其实,与其说RocketChat是一个聊天系统不如说它是一个强大的团队协作平台。

特点

咕咕这边简单在网上也抄搜集了一些特点,供大家参考:
1、公共频道聊天,就类似QQ群或者Telegram群组。当然我们可以新建任意多的频道。
2、频道只读,功能类似于Telegram的频道系统,在Telegram中群组可以公开发言,但频道只能由创建者发言。
3、私人对话,功能就相当于QQ好友与好友之间聊天。
4、无记录对话,类似于“阅后即焚”。聊私密信息的神器~
5、@功能,可以在群组和频道中使用,类似于Telegram中@一个人的用户名,该用户可以得到消息提示。
6、语音聊天以及视频聊天的支持。
7、网址链接预览,类似于Telegram中发一个网站地址可以读取网站的标题和描述。
8、文件共享、上传、下载、分享等等。
9、用户搜索、群组搜索、消息搜索等等一系列强大的搜索功能。
10、自定义聊天表情,这个可以由管理员设置。
11、完善的用户权限设置功能,每个用户所对应的用户组都可以设置相应的使用权限。
12、完善的自定义功能,可以自定义CSS、上传站点LOGO、站标、设置描述、设置ToS、开关闭用户注册,等等。
13、各种额外属性的支持,比如OAUTH第三方登录、外部聊天窗口,等等等等。。。
感觉有没有心动呢?
来动手搞一个玩玩吧~
  • 一般教程都是用的是snap搭建的。
安装 Rocket.Chat 最快的方法是使用它的 Snap。Snap 是 Linux 系统上一种软件包管理的方式。它类似一个容器拥有一个应用程序所有的文件和库,各个应用程序之间完全独立。所以使用snap包的好处就是它解决了应用程序之间的依赖问题,使应用程序之间更容易管理。

原项目信息

GitHub原项目地址:https://github.com/RocketChat/Rocket.Chat(32k star)
官网地址:https://rocket.chat/

部署

  • 这里暂时仅放置一个 docker-compose.yml文件,如果大家有不会使用的可以去咕咕大佬的原文查看具体的部署方式~
  • 这里我也是十分推荐使用docker的形式搭建的,部署和迁移都很方便,安全性也有保障~
  • 最后放一个部署好的示意图:
notion image

部署hubot

介绍

Hubot是一个流行的开源聊天机器人框架,使用CoffeeScript编写,可以轻松地扩展和集成到各种聊天平台中,如Slack、HipChat、Discord、IRC、Rocket.Chat等。
Hubot提供了丰富的功能和插件,可以处理各种任务,如自动部署、日程安排、提醒、查询等。您可以通过编写自己的脚本或使用社区提供的现成脚本来扩展Hubot的功能。
除了内置的功能和插件外,Hubot还支持自定义集成,可以通过API与其他服务进行交互,如GitHub、Jenkins、Trello等。这使得它成为一个强大的自动化工具,可以帮助团队更高效地协作和管理工作流程。
总之,Hubot是一个灵活、易于扩展和定制的聊天机器人框架,可以在各种环境中使用,帮助用户自动化各种任务,并提高生产力。

准备工作

在我们开始部署机器人之前,我们首先要建立一个机器人账户。
进入我们的管理后台的用户页面,点击右上角的添加:
notion image
这里要特别注意我表明的几个位置,都是必填项,尤其是电子邮箱的验证按钮一定要打开~
设定密码、角色为bot:
notion image
注意:框起来的几个按钮都不要开启~
然后点击保存即可~
随后我们再次进入这个页面,点击这个机器人,在右侧的三个点处激活他:
notion image
notion image

部署

相信对于可以自行部署好上一步的聊天系统的同学来说已经掌握了基本的docker和docker-compose的使用方法,因此这里我们首先直接将部署hubot的docker-compose.yml文档放在这里:
  • 这里注意,environment中的参数,第一个参数为你的Rocket.Chat的url,ROCKETCHAT_USER为你前边设定的bot的用户名,下一个是密码,最后的BOT_NAME为你称呼它的方式。
接下来就是我们的script目录下最重要的hubot的脚本:
  • 这里先简单解释一下这个脚本:
    • 这个脚本是用coffeescript语言编写的,这个语言也是基于JavaScript的。
    • 在这个脚本里我们的主要逻辑就是通过官方新的API传入我们要说的话再解析返回的内容并输出。
    • 这里有几个我进行了优化的点:
      • 96-104行优化了回复的回车开头的问题
      • 107-114行将API返回的LaTeX格式的公式转换为了Rocket.Chat可以显示的KaTeX格式
      • 并通过将上下文一同传入实现了对上下文语境的支持
    • 使用注意:
      • 先在12行处YOUR_OPENAI_KEY处修改为自己的key后再启动服务~
启动命令:
notion image
查看日志:
notion image
到显示这个内容的时候即可开始使用。

开始使用

回到我们的聊天页面,搜索这个机器人:
notion image
单击后即可开始私聊:
notion image
发送“帮助”,即可看到基本的使用方法:
notion image
可以看到,现在就可以正常开始对话了,这里也可以正确记录上下文信息:
notion image
同时我们也可以通过“聊天记录”命令查看会发送给机器人的上下文:
notion image
也可以清空这些:
notion image

无上下文版本

但是这里要注意,在RocketChat中的机器人有一个问题,就是它的局部变量是全对话共享的,也就说我们用来记录聊天记录的数组是所有用户都能访问的,因此这里为想要部署给所有用户访问的同学一份单独的无上下文语境的版本:
好啦,今天的文章就先到这里,时间有限内容不是很充实,有很多细节的地方没有讲到,后续如果大家需求多的话会继续补充,欢迎大家点赞留言~

项目地址

Hubot

本文相关的项目地址:
  1. 支持上下文的Hubot:https://github.com/Shydlock/Hubot-ChatGPT-Contextual-support
  1. 不支持上下文的Hubot:https://github.com/Shydlock/Hubot-ChatGPT
希望大家也多多支持我帮忙在Github多多点星星~
Loading...

尚未开始
更新中
近期核心
已完结
已弃更

© River 2021-2025