chatgpt-plugin/README.md
2023-03-15 11:25:06 +08:00

12 KiB
Raw Blame History

云崽qq机器人的chatgpt插件

特点

  • 支持单人连续对话Conversation群聊中支持加入其他人的对话
  • API模式下使用 gpt-3.5-turbo APIChatGPT官网同款模型仅需OpenAI Api Key开箱即用。注意收费
  • 支持问答图片截图
  • 支持AI性格调教
  • 支持对接vits回答直接转语音
  • API3模式下绕过Cloudflare防护直接访问ChatGPT的SSE API与官方体验一致且保留对话记录在官网可查。免费。
  • (Deprecated)提供基于浏览器的解决方案作为备选API3不可用的情况下或担心账户安全的用户可以选择使用浏览器模式。
  • 支持新必应Beta
  • 2023-03-15 API3支持GPT-4尝鲜需要Plus用户

如果觉得这个插件有趣或者对你有帮助请点一个star吧

版本要求

Node.js >= 18 / Node.js >= 14(with node-fetch) 小白尽可能使用18版本以上的nodejs

安装与使用方法

安装

在安装之前请先判断自己需要使用哪种模式本插件支持官方API/第三方API/浏览器/必应四种模式。也可以选择我全都要(通过qq发送命令#chatgpt切换浏览器/API/API3/Bing实时切换)

对于轻量用户可以先使用API模式有较高要求再转为使用其他模式。

API模式和浏览器模式如何选择

  • API模式会调用OpenAI官方提供的gpt-3.5-turbo APIChatGPT官网同款模型只需要提供API Key。一般情况下该种方式响应速度更快可配置项多且不会像chatGPT官网一样总出现不可用的现象但注意API调用是收费的新用户有18美元试用金可用于支付价格为$0.0020/1K tokens。(问题和回答加起来算token
  • API3模式会调用第三方提供的官网反代API他会帮你绕过CF防护需要提供ChatGPT的Token。效果与官网和浏览器一致但稳定性不一定。发送#chatgpt设置token来设置token。
  • (Deprecated)浏览器模式通过在本地启动Chrome等浏览器模拟用户访问ChatGPT网站使得获得和官方以及API2模式一模一样的回复质量同时保证安全性。缺点是本方法对环境要求较高需要提供桌面环境和一个可用的代理能够访问ChatGPT的IP地址且响应速度不如API而且高峰期容易无法使用。一般作为API3的下位替代。
  • 必应Bing将调用微软新必应接口进行对话。需要在必应网页能够正常使用新必应且设置有效的Bing登录Cookie方可使用。
  1. 进入 Yunzai根目录

  2. 请将 chatgpt-plugin 放置在 Yunzai-Bot 的 plugins 目录下

推荐使用 git 进行安装,以方便后续升级。在 Yunzai-Bot 根目录夹打开终端,运行下述指令进行安装

git clone --depth=1 https://github.com/ikechan8370/chatgpt-plugin.git ./plugins/chatgpt-plugin/
cd plugins/chatgpt-plugin
pnpm i

如果是手工下载的 zip 压缩包,请将解压后的 chatgpt-plugin 文件夹(请删除压缩自带的-master后缀放置在 Yunzai-Bot 目录下的 plugins 文件夹内

浏览器模式仅为备选,如您需要使用浏览器模式,您还需要有桌面环境优先级建议API≈必应>API3>浏览器 2.20更新必应被大削变得蠢了建议还是API/API3优先

  1. 修改配置 本插件配置项比较多,建议使用锅巴面板修改

    复制plugins/chatgpt-plugin/config/config.example.json并将其改名为config.json
    编辑plugins/chatgpt-plugin/config/config.json文件,修改必要配置项

  2. 重启Yunzai-Bot

我想使用浏览器模式但是我是linux云服务器没有桌面环境怎么办

linux云服务器可以安装窗口管理器和vnc创建并访问虚拟桌面环境

  1. 安装xvfb和fluxbox

    • Ubuntusudo apt-get install x11vnc xvfb fluxbox

    • CentOSsudo yum install x11vnc Xvfb fluxbox

  2. 启动桌面环境

    建议用tmux或screen等使其能够后台运行

    注意本命令使用默认5900端口和无密码,注意通过防火墙等保护,切勿在公网环境或不安全的网络环境下使用!!! x11vnc -create -env FD_PROG=/usr/bin/fluxbox -env X11VNC_FINDDISPLAY_ALWAYS_FAILS=1 -env X11VNC_CREATE_GEOM=${1:-1024x768x16} -nopw -forever

  3. 使用vnc客户端连接至云桌面

    右键Applications > Shells > Bash打开终端然后进入Yunzai目录下运行node app即可。

  4. 执行pnpm i时sharp安装失败

    sharp不影响chatgpt聊天仅影响Dalle2绘图功能。ubuntu可以执行apt install libvips-dev之后再pnpm i

实测该方案资源占用低运行稳定基本1核2G的轻量云服务器就足够了。


相关配置

配置文件相关

配置文件位置:plugins/chatgpt-plugin/config/config.js

部分关键配置项,其他请参照文件内注释:

名称 含义 解释
PROXY 代理地址 请在此处配置你的代理,例如http://127.0.0.1:7890
API_KEY openai账号的API Key 获取地址:https://platform.openai.com/account/api-keys
username/password openai的账号和密码 /

Token相关

与Token相关的设置需在qq与机器人对话设置设置后方可使用对应的api

名称 含义 解释 设置方式
ChatGPT AccessToken ChatGPT登录后的Token 具体解释见下方 #chatgpt设置token
必应token 必应登录后的Token 必应Bing将调用微软新必应接口进行对话。需要在必应网页能够正常使用新必应且设置有效的Bing 登录Cookie方可使用 #chatgpt设置必应token

我没有注册openai账号如何获取

您可以按照以下方法获取openai账号

进入https://chat.openai.com/ 选择signup注册。目前openai不对包括俄罗斯、乌克兰、伊朗、中国等国家和地区提供服务所以自行寻找办法使用其他国家和地区的ip登录。此外注册可能需要验证所在国家和地区的手机号码如果没有国外手机号可以试试解码网站收费的推荐https://sms-activate.org/

我有openai账号了如何获取API key和Access Token

ChatGPT AccessToken 设置了有什么用我为什么用不了API模式

我有新必应的测试资格了如何获取必应Token

  1. JS一键获取

登录www.bing.com刷新一下网页按F12或直接打开开发者模式点击Console/控制台运行如下代码执行后即在您的剪切板存储了必应Token

copy(document.cookie.split(";").find(cookie=>cookie.trim().startsWith("_U=")).split("=")[1]);
  1. 手动获取

登录www.bing.com刷新一下网页按F12或直接打开开发者模式点击Application/存储点击左侧Storage下的Cookies展开找到https://www.bing.com在右侧列表Name项下找到"_U"_U的value即为必应Token

其他问题可以参考使用的api库 https://github.com/transitive-bullshit/chatgpt-api 以及 https://github.com/waylaidwanderer/node-chatgpt-api

使用方法

根据配置文件中的toggleMode决定联通方式。

  • at模式@机器人 发送聊内容即可

  • prefix模式【#chat+问题】,本模式可以避免指令冲突。

发挥你的想象力吧,调教拟造出你自己的机器人风格!

文本/图片回复模式

#chatgpt文本/图片/语音模式

可以控制机器人回复的方式

对话相关

#chatgpt对话列表

#结束对话 [@某人]

#清空chat队列

#移出chat队列首位

#chatgpt开启/关闭问题确认

...

设置相关

#chat切换浏览器/API/API2/API3/Bing

#chatgpt设置[必应]Token

...

获取帮助

#chatgpt帮助

#chatgpt模式帮助

发送#chatgpt帮助有更多选项可以配置

如何更新

发送#chatgpt更新指令。如果有冲突可以使用#chatgpt强制更新。

示例与截图

  • 程序员版

img.png

  • 傲娇版

)T@XYNWXUM S1)D$7%I3H image

TODO

  • prompt预设与共享

其他

常见问题

  1. 如果在linux系统上发现图片模式下emoj无法正常显示可以搜索安装支持emoj的字体如Ubuntu可以使用sudo apt install fonts-noto-color-emoji

  2. 我和机器人聊天但没有任何反应怎么办?

    可能是由于Yunzai-bot异常退出等原因造成Redis 队列中有残留的等待问题。使用#清空队列命令清除队列后再试。

  3. Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'xxx'.

    请参照本文档前面的安装依赖部分重新依赖。随着项目更新可能引入新的依赖。

    一般情况下请按照 安装 小节的内容重新安装依赖即可

    最多的问题载入插件错误chat

    问题详情Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'showdown' imported from /app/Yunzai-Bot/plugins/chatgpt-plugin/apps/chat.js

    原因:没装依赖

    解决方式:请参考文档在本插件目录下用pnpm install安装依赖,安装完就不报错了

  4. 反代能自己搭吗?

    能。参考这里

  5. vit API能本地搭建吗

    能。克隆下来安装依赖直接运行即可。

交流群

  • QQ 559567232

感谢

本项目使用或参考了以下开源项目

图片以及Bing模式支持 @HalcyonAlcedo

语音vits模型来自于

以及ChatGPT及OpenAI

贡献者

感谢以下贡献者

Alt