https://github.com/gaizhenbiao/synologychatgpt
ChatGPT client for Synology Chat, written with Django
https://github.com/gaizhenbiao/synologychatgpt
Last synced: about 1 month ago
JSON representation
ChatGPT client for Synology Chat, written with Django
- Host: GitHub
- URL: https://github.com/gaizhenbiao/synologychatgpt
- Owner: GaiZhenbiao
- License: apache-2.0
- Created: 2023-03-05T08:50:01.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-07-31T08:58:05.000Z (about 2 years ago)
- Last Synced: 2024-12-30T05:00:38.465Z (10 months ago)
- Language: Python
- Size: 35.2 KB
- Stars: 83
- Watchers: 4
- Forks: 15
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SynologyChatGPT
为群晖Chat设计的ChatGPT机器人,使用`Django`编写。
ChatGPT client for Synology Chat, written with Django
![]()
使用本应用共分四步:
1. 启动服务
2. 设置斜杠命令
3. 通过斜杠命令设置用户、密钥
4. 通过SynologyChat聊天机器人窗口与ChatGpt对话。
## 一、 启动
支持docker启动或本机运行。
以下三种择一即可,建议DSM7.2使用第二种docker-compose启动的方式,DSM7.1及以下使用docker图形界面或命令行。
### 1. 通过命令行docker使用```bash
docker run --rm \
-p 8000:8000 \
--name synology-chat-gpt \
-v $(pwd)/data:/app/data \
-e OPENAI_API_BASE=https://api.openai.com/v1 \ # Set custom OpenAI API base here
docker-registry.mujiannan.com:5001/mujiannan/synology-chat-gpt:latest
```
-p参数为端口映射,-v为数据目录映射(用于持久化保存聊天记录、api_key等)。
如果你想要从源码自行制作镜像,请参考项目目录项目目录下的`.debug-docker.sh`。
### 2. 通过Docker-Compose使用
DSM7.2以上可以在`container manager`内新建项目,然后通过WebStation建立自定义域名,该方式有不占用母机端口、方便管理、安全等好处。
```yaml
version: "3.7"
services:
synology-chat-gpt:
image: docker-registry.mujiannan.com:5001/mujiannan/synology-chat-gpt:latest
volumes:
- /volume1/docker/synology-chat-gpt/data:/app/data
deploy:
resources:
limits:
cpus: 500m
memory: 200m
ports:
- "8000:8000"
```
### 3. 本机运行
建议非开发者不要使用此方式启动。
### 3.1 安装 Python去群晖套件中心安装 Python3 即可。
### 3.2 安装 pip
群晖安装的 `python3` 没有自带 `pip`,请参照[这篇文章](https://homepea.top/2020/35.DSM-Synology-pip/)安装。下面假设你为 `root` 用户安装了`pip`,因为普通用户会遇到权限问题。
如果你执行提示语法错误/其他错误,首先试试把命令中的`python`和`pip`换成`python3` 和 `pip3`。你的`python`可能是python2。
### 3.3 通过pip安装依赖包
在项目目录下,执行
```
sudo pip install -r requirements.txt
```
### 3.4 运行服务器
如果本项目不部署在群晖上,会遇到`HTTP 400`错误。解决方案请参考这个Issue:[#4](https://github.com/GaiZhenbiao/SynologyChatGPT/issues/4)在项目目录下,依次执行以下两条命令,创建数据库:
```
sudo python manage.py makemigrations chat
sudo python manage.py migrate
```然后执行下面的命令启动服务器:
```
sudo python manage.py runserver
```在``中填入你指定的端口。注意,``是一个数字,不包含尖括号,如`1999`。如果服务器启动正常(没有端口冲突),按`Ctrl C`中断服务器。然后执行。
```
sudo nohup python manage.py runserver
```现在服务器就在后台执行,可以关闭SSH窗口了。(注意不要按`Ctrl C`中断`nohup`执行)
## 二、 创建斜杠命令和机器人。
在Chat界面右上角,创建整合。
### 斜杠命令
先创建一些斜杠命令。斜杠命令可以在Chat对话框里输入`/`执行。
点击创建按钮创建。
像这样填写表单内容。`请求URL`均为`http://127.0.0.1:/webhook`。其中``是你刚刚指定的端口,图中的示例使用了`1999`端口。你可以在`自定义名称`中填入任何合法名称,但`命令`必须按下面的指示填写。本项目不使用`令牌`参数,可以忽略它。
接下来列出本项目支持的命令及其参数。
| 字段名 | 内容 |
| ---- | ---- |
| 命令 | clear |
| 命令说明 | 清除对话历史记录 |
| 描述 | 清除ChatGPT的上下文,但Chat中的聊天记录仍然会被保留。 || 字段名 | 内容 |
| ---- | ---- |
| 命令 | totaltoken |
| 命令说明 | 查看当前token用量 |
| 描述 | token上限为4096 || 字段名 | 内容 |
| ---- | ---- |
| 命令 | retry |
| 命令说明 | 重新回答上一个问题 |
| 描述 | 让ChatGPT重新回答一次你的上一个提问 || 字段名 | 内容 |
| ---- | ---- |
| 命令 | whoami |
| 命令说明 | 返回当前用户ID |
| 描述 | 用户ID是每位用户的唯一身份证明 || 字段名 | 内容 |
| ---- | ---- |
| 命令 | newuser |
| 命令说明 | 创建新ChatGPT用户 |
| 描述 | 接受可选两个参数:BaseURL,群晖的URL;BotKey,为机器人界面展示的令牌。 || 字段名 | 内容 |
| ---- | ---- |
| 命令 | setapikey |
| 命令说明 | 设置当前用户的OpenAI API密钥 |
| 描述 | 接受一个参数:OpenAI API密钥。 || 字段名 | 内容 |
| ---- | ---- |
| 命令 | setbotkey |
| 命令说明 | 设置当前用户的Bot令牌 |
| 描述 | 接受一个参数:Bot令牌 || 字段名 | 内容 |
| ---- | ---- |
| 命令 | setbaseurl |
| 命令说明 | 设置群晖Chat的URL |
| 描述 | 接受一个参数:URL,如https://www.example.com:5001 || 字段名 | 内容 |
| ---- | ---- |
| 命令 | setsavedir |
| 命令说明 | 设置自动保存的目录 |
| 描述 | 接受一个参数:/path/to/a/dir,是一个目录的路径 || 字段名 | 内容 |
| ---- | ---- |
| 命令 | getsavedir |
| 命令说明 | 获取自动保存的目录路径 |
| 描述 | 返回当前自动保存的目录 || 字段名 | 内容 |
| ---- | ---- |
| 命令 | saveas |
| 命令说明 | 保存目前与ChatGPT的聊天到txt文件 |
| 描述 | 接受一个参数:filename,保存到默认保存路径中 || 字段名 | 内容 |
| ---- | ---- |
| 命令 | savenow |
| 命令说明 | 自动保存目前与ChatGPT的聊天到txt文件 |
| 描述 | 使用当前系统时间作为文件名 |### 然后创建机器人。
在`自定义名称`中填入机器人名称,可以任意指定,比如`ChatGPT`。
`传出URL`设定为`http://127.0.0.1:`。其中``为你指定的端口号。上面的截图使用了`1999`端口号。
### 开始使用
本项目支持多用户。因此,第一次使用时,需要创建ChatGPT机器人用户。使用`/newuser`命令创建。可以在此时指定`BaseURL`与`BotKey`,也可以稍后指定。`BaseURL`是群晖面板的URL,如`https://www.example.com:5001`,注意最后没有斜线`/`。`BotKey`是机器人的令牌。
```
/newuser <(可选)BaseURL> <(可选)BotKey>
```如果稍后指定,用`/setbotkey`命令指定`Bot Key`
```
/setbotkey
```用`setbaseurl`命令指定`BaseURL`
```
/setbaseurl
```注意,在设定BaseURL和BotKey之前,机器人无法给你发送信息,Chat可能会提示机器人不可用。
然后,需要设定你的OpenAI API密钥。
```
/setapikey
```如果你想使用将当前聊天记录保存成文件的功能,还需要配置默认文件保存文件夹的路径,路径中不允许含有空格:
```
/setsavedir /path/to/your/dir
```然后,你就可以愉快地开始使用啦!
## 已知问题
在使用`saveas`和`savenow`命令时,Chat会提示机器人不可用,然后收到保存成功的提示。文件可以正常保存。
## 问题排查
1. 容器问题排查
建议使用图形化`container manager`查看容器日志,或者使用命令行
```bash
docker logs -n 50 -f your-container-name
```
如有必要,可携带日志至github issue提问。
## 赞助感谢 [rashida](https://github.com/RashidaKAKU) 的慷慨赞助