本项目旨在构建一个:模型层(models)-服务层(service)-展示层(views) 三层完全解耦的、支持二次开发、分开部署的、LLM落地框架。
(本项目展示层(views)已支持langchain-ChatGLM)
模型层:使用Python 3。采用各种方式加载模型,并采用Fastapi将所有接口api化。
后续计划:
用OPenai api的格式统一封装所有本地模型。
将模型层制作成sdk并独立仓库,进一步降低部署难度。
计划参考:https://github.com/ninehills/chatglm-openai-api
服务层:使用JS。采用Langchain.js+nest.js框架,实现业务逻辑开发与数据处理,提高与拓展模型层的性能。 后续计划: 不断跟进langchain-ChatGLM等优秀中间层项目,升级服务层。 参考项目:https://github.com/imClumsyPanda/langchain-ChatGLM
展示层: 使用JS。采用vue3全家桶+native-ui,展示本项目的成果。 后续计划: 不断跟进应用层的升级,同时提高页面的美观程度和交互体验。 参考项目:https://github.com/Chanzhaoyu/chatgpt-web
如果你有想要应用的模型,还在寻找部署、落地和增强拓展方案,请联系我们!
如果你有增强llm模型的方案或框架,还在寻找对接本地llm模型和展示界面的方案,请联系我们!
如果你拥有好看的界面,想要接入更多的模型,拓展更多的功能,请联系我们!
联系方式在页面最底部
本项目的阶段性目标,是提供 LLM封装->本地知识库搭建->商业化部署->用户反馈收集(前端埋点,数据清洗等)->模型专业领域微调(使用上一个阶段收集的数据集)->LLM封装 这样的LLM专业领域落地闭环解决方案
即在将数据收集处理,模型微调解决方案也加入工作流。
⛓️ 本项目实现原理如下图来自(https://github.com/imClumsyPanda/langchain-ChatGLM/tree/master) 所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的top k
个 -> 匹配出的文本作为上下文和问题一起添加到prompt
中 -> 提交给LLM
生成回答。
2023.5.18 service层初步重构,部署后访问http://localhost:3000/api 即可查看接口文档.
2023.5.11 项目引入Openai和Cohere接口,降低硬件要求 v0.2.5
2023.5.7 项目完成初步设计v0.2.0
2023.4.27 项目正式发布v0.1.0
-
Openai或Cohere无硬件需求
本项目已引入Openai与Cohere接口,使用apikey,无硬件要求。
Cohere的embedding模型可以在线使用,注册门槛低且有免费试用额度,推荐尝试 https://dashboard.cohere.ai/api-keys
-
ChatGLM-6B 模型硬件需求
量化等级 最低 GPU 显存(推理) 最低 GPU 显存(高效参数微调) FP16(无量化) 13 GB 14 GB INT8 8 GB 9 GB INT4 6 GB 7 GB -
Embedding 模型硬件需求
本项目选用的 Embedding 模型 GanymedeNil/text2vec-large-chinese 约占用显存 3GB,也可修改为在 CPU 中运行。
Node18,Python 3
cd service 安装依赖并启动
- 项目下载\
- 安装依赖
- yarn
- 运行
- pnpm start:dev
- 配置
- .env
在项目的根目录下,设置.env,EMBEDDING_SERVER_URL为embedding的ip地址,CHATGLM_6B_SERVER_URL为chatGLM-6B的ip地址
- .env
(如果不使用本地模型,请忽略此步骤) cd models
-
chatGLM-6B
cd ChatGLM-6B
- pip install -r requirements.txt #建议走国内pip镜像源,比较快
- python api.py
-
embedding
cd ../embedding
- python api.py # 依赖讲道理都可以在chatGLM-6B的依赖里
cd views
pnpm i
npm run dev
-
git clone https://github.com/fxjhello/langchain_chatglm_nest.git
-
cd langchain_chatglm_nest
-
cd service
docker build -t langchain_chatglm_nest:v1.0.0 -f ./dockerfile . # 打包
-
docker run -d --restart=always --name langchain_chatglm_nest-main -p 51798:3000 langchain_chatglm_nest-main:1.0.0 #左边的端口随便取
- issues
- 微信群
欢迎大家提问,我们会补充文档和优化的
本项目的原理图,实现思路,以及Embedding 模型py封装,均来自(https://github.com/imClumsyPanda/langchain-ChatGLM/tree/master)
- Langchain 应用
- 支持多种文档格式(已支持 pdf、docx、txt 文件格式)
- 搜索引擎与本地网页接入
- 结构化数据接入(如 csv、Excel、SQL 等)
- 知识图谱/图数据库接入
- 更多功能 实现
- 增加更多 LLM 模型支持
- 增加更多 Embedding 模型支持
- 前端
- 增加前端展示界面
🎉 langchain-nest.js 项目交流群,如果你也对本项目感兴趣,欢迎加入群聊参与讨论交流。