Skip to content

fxjhello/langchainjs_llm_nest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

协助LLM模型落地的前-后-模型 三层分离框架

介绍

本项目旨在构建一个:模型层(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

如果本地已有模型:从本地加载模型

请参考 THUDM/ChatGLM-6B#从本地加载模型

服务层(service)

cd service 安装依赖并启动

  • 项目下载\
  • 安装依赖
    • yarn
  • 运行
    • pnpm start:dev
  • 配置
    • .env
      在项目的根目录下,设置.env,EMBEDDING_SERVER_URL为embedding的ip地址,CHATGLM_6B_SERVER_URL为chatGLM-6B的ip地址

模型层(models)

(如果不使用本地模型,请忽略此步骤) cd models

  • chatGLM-6B
    cd ChatGLM-6B

    • pip install -r requirements.txt #建议走国内pip镜像源,比较快
    • python api.py
  • embedding
    cd ../embedding

    • python api.py # 依赖讲道理都可以在chatGLM-6B的依赖里

前端(views)

cd views

pnpm i

npm run dev

docker部署


    1. git clone https://github.com/fxjhello/langchain_chatglm_nest.git

    1. cd langchain_chatglm_nest

    1. cd service
      docker build -t langchain_chatglm_nest:v1.0.0 -f ./dockerfile . # 打包

    1. 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 项目交流群,如果你也对本项目感兴趣,欢迎加入群聊参与讨论交流。

About

Langchain、Nest、Vue、LLM、Chatglm、embedding

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published