Awesome
ChatGLM Web
介绍
默认模型更改为ChatGLM2-6B
这是一个可以自己在本地部署的ChatGLM
网页,使用ChatGLM-6B
模型来实现接近ChatGPT
的对话效果。
源代码Fork和修改于Chanzhaoyu/chatgpt-web & WenJing95/chatgpt-web& 开源模型ChatGLM
与ChatGPT
对比,ChatGLM Web
有以下优势:
- 独立部署。
ChatGLM Web
只需要一个能运行ChatGLM-6B
模型的服务器即可使用,可以使用自己微调的GLM模型。 - 完全离线。
ChatGLM Web
依赖于ChatGLM-6B
模型,可以在离线环境或者内网中使用。
待实现路线
[✗] 支持chatglm、llama等模型
[✓] 追上原仓库的功能(权限控制、图片、消息导入导出、Prompt Store)
[✗] 支持langchain的知识问答
[✗] More...
快速部署
如果你不需要自己开发,只需要部署使用,可以直接跳到 使用最新版本docker镜像启动(待完善)
开发环境搭建
Node
node
需要 ^16 || ^18
版本(node >= 14
需要安装 fetch polyfill
),使用 nvm 可管理本地多个 node
版本
node -v
PNPM
如果你没有安装过 pnpm
npm install pnpm -g
Python
python
需要 3.8
以上版本,进入文件夹 /service
运行以下命令
pip install --no-cache-dir -r requirements.txt
开发环境启动项目
后端服务
硬件需求(参考自chatglm-6b官方仓库)
量化等级 | 最低 GPU 显存(推理) | 最低 GPU 显存(高效参数微调) |
---|---|---|
FP16(无量化) | 13 GB | 14 GB |
INT8 | 8 GB | 9 GB |
INT4 | 6 GB | 7 GB |
# 使用知识库功能需要在启动API前运行
python gen_data.py
# 进入文件夹 `/service` 运行以下命令
python main.py
还有以下可选参数可用:
device
使用设备,cpu或者gpuquantize
量化等级。可选值:16,8,4,默认为16host
HOST,默认值为 0.0.0.0port
PORT,默认值为 3002
也就是说可以这样启动(这里修改端口的话前端也需要修改,建议使用默认端口)
python main.py --device='cuda:0' --quantize=16 --host='0.0.0.0' --port=3002
前端网页
根目录下运行以下命令
# 前端网页的默认端口号是3000,对接的后端服务的默认端口号是3002,可以在 .env 和 .vite.config.ts 文件中修改
pnpm bootstrap
pnpm dev
打包为docker容器
-- 待更新
常见问题
Q: 为什么 Git
提交总是报错?
A: 因为有提交信息验证,请遵循 Commit 指南
Q: 如果只使用前端页面,在哪里改请求接口?
A: 根目录下 .env
文件中的 VITE_GLOB_API_URL
字段。
Q: 文件保存时全部爆红?
A: vscode
请安装项目推荐插件,或手动安装 Eslint
插件。
Q: 前端没有打字机效果?
A: 一种可能原因是经过 Nginx 反向代理,开启了 buffer,则 Nginx
会尝试从后端缓冲一定大小的数据再发送给浏览器。请尝试在反代参数后添加 proxy_buffering off;
,然后重载 Nginx。其他 web
server 配置同理。
Q: build docker容器的时候,显示exec entrypoint.sh: no such file or directory
?
A: 因为entrypoint.sh
文件的换行符是LF
,而不是CRLF
,如果你用CRLF
的IDE操作过这个文件,可能就会出错。可以使用dos2unix
工具将LF
换成CRLF
。
参与贡献
贡献之前请先阅读 贡献指南
感谢原作者Chanzhaoyu和所有做过贡献的人,开源模型ChatGLM
赞助
如果你觉得这个项目对你有帮助,请给我点个Star。
如果情况允许,请支持原作者Chanzhaoyu
License
MIT © NCZkevin