Skip to content

用 FastAPI 和 Vue3 搭建的 ChatGLM 网页 (前端样式仿照chatgpt-web, 支持chatglm流式输出、前端调整参数、上下文选择、保存图片、知识库问答等功能)

License

Notifications You must be signed in to change notification settings

eventlOwOp/chatglm-web

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChatGLM Web

cover

介绍

默认模型更改为ChatGLM2-6B

这是一个可以自己在本地部署的ChatGLM网页,使用ChatGLM-6B模型来实现接近ChatGPT的对话效果。 源代码Fork和修改于Chanzhaoyu/chatgpt-web & WenJing95/chatgpt-web& 开源模型ChatGLM

ChatGPT对比,ChatGLM Web有以下优势:

  1. 独立部署ChatGLM Web只需要一个能运行ChatGLM-6B模型的服务器即可使用,可以使用自己微调的GLM模型。
  2. 完全离线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或者gpu
  • quantize 量化等级。可选值:16,8,4,默认为16
  • host HOST,默认值为 0.0.0.0
  • port 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

About

用 FastAPI 和 Vue3 搭建的 ChatGLM 网页 (前端样式仿照chatgpt-web, 支持chatglm流式输出、前端调整参数、上下文选择、保存图片、知识库问答等功能)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Vue 46.1%
  • TypeScript 28.2%
  • Less 17.8%
  • Python 5.5%
  • HTML 1.1%
  • Dockerfile 0.5%
  • Other 0.8%