feat: add support for the third party reverse proxy mode

This commit is contained in:
ikechan8370 2023-02-12 15:05:03 +08:00
parent 36aaa12586
commit a8ec5f41e3
6 changed files with 201 additions and 72 deletions

View file

@ -15,26 +15,27 @@ Node.js >= 18 / Node.js >= 14(with node-fetch)
> API模式和浏览器模式如何选择
>
> * API模式会调用OpenAI官方提供的GPT-3 LLM API只需要提供API Key。一般情况下该种方式响应速度更快可配置项多且不会像chatGPT官网一样总出现不可用的现象但其聊天效果明显较官网差。但注意GPT-3的API调用是收费的新用户有18美元试用金可用于支付价格为`$0.0200/1K tokens`.(问题和回答加起来算token)
> * 浏览器模式通过在本地启动Chrome等浏览器模拟用户访问ChatGPT网站使得获得和官方一模一样的回复质量。缺点是本方法对环境要求较高需要提供桌面环境和一个可用的代理能够访问ChatGPT的IP地址且响应速度不如API而且高峰期容易无法使用。
> * API2模式会调用第三方提供的基于OpenAI text-davinci-002-render模型官网同款的API需要提供ChatGPT的Token。效果比单纯的GPT-3 API好很多但同时将Token提供给了第三方API其中风险自行承担。
> * 浏览器模式通过在本地启动Chrome等浏览器模拟用户访问ChatGPT网站使得获得和官方以及API2模式一模一样的回复质量同时保证安全性。缺点是本方法对环境要求较高需要提供桌面环境和一个可用的代理能够访问ChatGPT的IP地址且响应速度不如API而且高峰期容易无法使用。
1. 进入 Yunzai根目录
2. 检查 Node.js 版本,并根据对应的 Node.js 版本选择安装教程。
2. 检查 Node.js 版本
```
node -v
```
### Node.js >= 18
若 Node.js >= 18根据下方步骤安装即可。否则参考[这里](LowerNode.md)
1. 进入 Yunzai根目录
2. 安装依赖
```
pnpm install -w undici chatgpt showdown mathjax-node delay uuid remark strip-markdown random puppeteer-extra-plugin-recaptcha puppeteer-extra puppeteer-extra-plugin-stealth
pnpm install -w undici chatgpt showdown mathjax-node delay uuid remark strip-markdown random puppeteer-extra-plugin-recaptcha puppeteer-extra puppeteer-extra-plugin-stealth @waylaidwanderer/chatgpt-api keyv-file
```
**若使用API模式chatgpt的版本号注意要大于4.2.0**
若不使用浏览器模式,可以不安装`random puppeteer-extra-plugin-recaptcha puppeteer-extra puppeteer-extra-plugin-stealth`这几个
若不使用浏览器模式,可以不安装`random puppeteer-extra-plugin-recaptcha puppeteer-extra puppeteer-extra-plugin-stealth`这几个依赖,这几个依赖仅用于模拟浏览器登录。
3. 克隆项目
```
@ -46,75 +47,46 @@ git clone https://github.com/ikechan8370/chatgpt-plugin.git ./plugins/chatgpt-pl
---
### Node.js >= 14 (并且 <18)
**如果不是 CentOS 7, RHEL 7, Ubuntu 18 请自行搜索并升级你的 Node.js 版本!**
**此教程是为了因 glibc 不支持升级 Node.js 的Linux发行版准备的。**
1. 进入 Yunzai 根目录
2. 安装依赖
```
pnpm install -w undici chatgpt showdown mathjax-node delay uuid remark strip-markdown node-fetch
```
**若使用API模式chatgpt的版本号注意要大于4.2.0**
若不使用浏览器模式,可以不安装`random puppeteer-extra-plugin-recaptcha puppeteer-extra puppeteer-extra-plugin-stealth`这几个
3. 克隆项目
```
git clone https://github.com/ikechan8370/chatgpt-plugin.git ./plugins/chatgpt-plugin
```
4. 修改配置
修改 Yunzai根目录/node_modules/.pnpm/chatgpt\@4.1.0/node_modules/chatgpt/build/index.js
**此处 chatgpt\@4.1.0 路径不是绝对的!请根据自己安装的版本进行替换!**
**将 // src/fetch.ts 部分修改成如下样子,其他部分不要动**
```
// src/fetch.ts
import fetch from 'node-fetch';
globalThis.fetch = fetch;
```
再编辑`Yunzai根目录/plugins/chatgpt-plugin/config/index.js`文件,根据其中的注释修改必要配置项。
---
## 使用
### 基本使用
@机器人 发送聊内容即可
将配置文件中的toggleMode修改为prefix可以将触发方式改为【#chat+问题】,可以避免指令冲突。
根据配置文件中的toggleMode决定联通方式。
* at模式@机器人 发送聊内容即可
* prefix模式#chat+问题】,本模式可以避免指令冲突。
![img.png](resources/img/example1.png)
发挥你的想象力吧!
关于配置中的一些模型的配置项:
* `model`通常保持空即可除非你想调用特定的模型比如你用gpt-3微调的学到特定领域知识的机器人。
关于API及API1模式下配置中的一些模型的配置项
* `model`通常保持空即可除非你想调用特定的模型比如你用gpt-3微调的学到特定领域知识的机器人。API1模式下将强制使用chatGPT模型。
* `promptPrefixOverride`:通常保持空即可。如果你想调整机器人回复的风格,可以在这里加入对机器人的一些暗示,比如要求用中文,要求回答长一点/短一点。甚至可以让它有自己的小脾气。下图为我让他不要回答太简单的问题,并且表现出不耐烦。
![)T@~XY~NWXUM S1)D$7%I3H](https://user-images.githubusercontent.com/21212372/217540723-0b97553a-f4ba-41df-ae0c-0449f73657fc.png)
![image](https://user-images.githubusercontent.com/21212372/217545618-3793d9f8-7941-476b-81f8-4255ac216cf7.png)
* `assistantLabel`默认为ChatGPT表示机器人认知中的自己的名字。你可以修改为其他名字。
* `plus`如果你购买了ChatGPT Plus将这个值改为true可以使响应速度更快。
### 获取帮助
发送#chatgpt帮助
## TODO
* 更灵活的Conversation管理
* 支持Bing版本
* 版本号和归档
* API2模式下自动获取/刷新Token
## 关于openai账号
1. 注册openai账号
进入https://chat.openai.com/ 选择signup注册。目前openai不对包括俄罗斯、乌克兰、伊朗、中国等国家和地区提供服务所以自行寻找办法使用其他国家和地区的ip登录。此外注册可能需要验证所在国家和地区的手机号码如果没有国外手机号可以试试解码网站收费的推荐https://sms-activate.org/。
2. 获取API key
进入账户后台创建API keyhttps://platform.openai.com/account/api-keys
3. 获取Access Token
登录后访问https://chat.openai.com/api/auth/session
其他问题可以参考使用的api库 https://github.com/transitive-bullshit/chatgpt-api
其他问题可以参考使用的api库 https://github.com/transitive-bullshit/chatgpt-api 以及 https://github.com/waylaidwanderer/node-chatgpt-api
## 其他
@ -138,8 +110,12 @@ OpenAI 即将开放其官方ChatGPT API且微软必应也公开发布了基
>
> 实测该方案资源占用低运行稳定基本1核2G的轻量云服务器就足够了。
3. 我和机器人聊天但没有任何反应怎么办?
可能是由于Yunzai-bot异常退出等原因造成Redis 队列中有残留的等待问题。使用`#清空队列`命令清除队列后再试。
## 感谢
* https://github.com/transitive-bullshit/chatgpt-api
* https://github.com/waylaidwanderer/node-chatgpt-api
* https://chat.openai.com/
![Alt](https://repobeats.axiom.co/api/embed/076d597ede41432208435f233d18cb20052fb90a.svg "Repobeats analytics image")