【大模型】Langchain-Chatchat-v0.3.1 的环境配置

1 Langchahin-chatchat的工程简介

本项目是利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
本项目的最新版本中可使用 Xinference、Ollama 等框架接入 GLM-4-Chat、 Qwen2-Instruct、 Llama3 等模型,依托于 langchain 框架支持通过基于 FastAPI 提供的 API 调用服务,或使用基于 Streamlit 的 WebUI 进行操作。

工程已经更新到v0.3之上,相较于v0.2版本,有明显变化,具体如下:


v0.3之后更关注知识库和agent的实现,大模型的运行使用一些流行的大模型部署工具。包括xinference、llama等。
在这里插入图片描述

2 langchain-chatchat 环境安装与运行

所以我们需要在langchain-chatchat运行之前,先将大模型运行起来。 这里使用了xinference。具体安装和使用方式记录在 【大模型】Xinference的安装和部署

  1. 虚拟环境创建与激活

    conda create --name chatchat-0.3.1 python=3.10
    conda activate chatchat-0.3.1
    
  2. 环境的配置

    pip install langchain-chatchat[xinference] -U -i https://pypi.tuna.tsinghua.edu.cn/simple3
    
  3. 初始化项目配置与数据目录

    • 设置 Chatchat 存储配置文件和数据文件的根目录(可选)
      # export CHATCHAT_ROOT=/path/to/chatchat_data
      export CHATCHAT_ROOT=~/workfile_2024/LLMs/Langchain-Chatchat-0.3.1  #(个人设置路径)
      
    • . 执行初始化
      chatchat init
      
      该命令会执行内容如下。正确执行终端界面如下图:
      • 创建所有需要的数据目录
      • 复制 samples 知识库内容
      • 生成默认 yaml 配置文件

        在这里插入图片描述

        生成的5个配置文件,如下图
        在这里插入图片描述
  4. 配置文件的修改

    • 配置模型(model_settings.yaml)
      需要根据步骤 2. 模型推理框架并加载模型 中选用的模型推理框架与加载的模型进行模型接入配置,具体参考 model_settings.yaml 中的注释。主要修改以下内容:
      在这里插入图片描述
    • 配置知识库路径(basic_settings.yaml)(可选)
      默认知识库位于 CHATCHAT_ROOT/data/knowledge_base,如果你想把知识库放在不同的位置,或者想连接现有的知识库,可以在这里修改对应目录即可。
    • 配置知识库(kb_settings.yaml)(可选)
      默认使用 FAISS 知识库,如果想连接其它类型的知识库,可以修改 DEFAULT_VS_TYPE 和 kbs_config。
  5. 初始化知识库
    进行知识库初始化前,请确保已经启动模型推理框架及对应 embedding 模型,且已按照上述步骤3完成模型接入配置。

    chatchat kb -r
    

    在这里插入图片描述

  6. 启动langchain-chatchat

    chatchat start -a
    

    在这里插入图片描述

  7. web界面打开
    可能存在如下bug:
    在这里插入图片描述
    在这里插入图片描述
    原因httpx库的版本不兼容。具体的可查看github上的issue:https://github.com/chatchat-space/Langchain-Chatchat/issues/5115
    解决

    pip install httpx==0.27.2
    

接下来记录 langchain-chatchat 的使用。

3 知langchain-chatchat 的识库的添加与问答

  1. 知识库的添加
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 知识库的问答
    在这里插入图片描述

4 agent 的使用

在这里插入图片描述
可以自行测试测试。

5 Langchain-chatchat 的源码安装

  1. 源码下载,并进入工程目录
  2. 虚拟环境的安装和激活
    conda create --name chatchat-code-0.3.1 python=3.10
    conda activate chatchat-code-0.3.1
    
  3. 安装 poetry
    pip install poetry
    
  4. 安装 Langchain-Chatchat 依赖
    cd  ./libs/chatchat-server
    
    poetry install --with lint,test -E xinference
    pip install -e .
    
    在这里插入图片描述
  5. 设置项目数据目录、初始化项目配置文件和数据目录
    export CHATCHAT_ROOT=~/workfile_2024/LLMs/Langchain-Chatchat-0.3.1/Langchain-Chatchat-master/chatchat_data
    python chatchat/cli.py init
    
    在这里插入图片描述
  6. 初始化知识库
    python chatchat/cli.py kb --recreate-vs
    
    在这里插入图片描述
  7. 启动服务
    python chatchat/cli.py start -a
    

Poetry 的介绍

  • 简单介绍poetry的使用
    Poetry 是一个用于管理 Python包 和项目 的工具,它简化了依赖管理和打包过程。例如我们安装langchain-chatchat0.3.1时,直接使用pip install langchain-chatchat,这里安装的库就是使用Poetry完成打包的。
    以下是 Poetry 的主要功能:

    1. 依赖管理:
      • Poetry 可以用来声明、管理和锁定项目的依赖关系。你可以在 pyproject.toml 文件中指定项目所需的库及其版本要求。
      • 使用 poetry add 和 poetry remove 命令可以添加或移除依赖。
      • poetry lock 会生成或更新 poetry.lock 文件,该文件锁定了所有依赖的具体版本,确保在不同环境中安装相同的依赖集。
    2. 虚拟环境管理:
      • 每个项目都可以有一个独立的虚拟环境,这有助于隔离不同项目的依赖关系。
      • Poetry 自动创建和管理这些虚拟环境,并且可以通过简单的命令来激活它们。
    3. 构建和发布:
      • Poetry 能够将你的项目打包成标准的 Python 分发格式(如 wheel 或 sdist),并且可以直接发布到包索引服务器,比如 PyPI。
      • 使用 poetry build 来构建分发包,使用 poetry publish 发布到仓库。
    4. 开发工作流支持:
      • 提供命令行工具来执行常见的开发任务,例如运行测试、检查代码质量等。
      • 支持为项目定义可执行脚本,方便开发者快速运行自定义命令。
  • Poetry 的虚拟环境和 Conda 的区别
    选择使用 Conda 还是 Poetry 取决于你的具体需求,最直接的就是看是否要与要进行python项目的打包。

    • 如果你需要一个全面的环境管理系统,能够处理多语言和复杂依赖(包括非 Python 组件),那么 Conda 可能更适合你。
    • 如果你只需要一个专注于 Python 项目的依赖管理和打包工具,希望获得更好的依赖解析能力和更简洁的工作流,那么 Poetry 是一个很好的选择。
  • 在实际使用中的理解

    • virtualenvs.create
      如果这个设置被设为 true,poetry 会在项目目录下或全局位置创建自己的虚拟环境。如果设置了 virtualenvs.create 为 false,那么 Poetry 不会创建新的虚拟环境,并且会尝试直接安装依赖到当前激活的环境中。这通常不是推荐的做法,因为 Poetry 和 Conda 管理环境的方式不同,可能会导致冲突。
    • virtualenvs.in-project
      如果这个设置被设为 true,Poetry 创建的虚拟环境将放置在你的项目目录下的 .venv 文件夹中。否则,虚拟环境会被创建在 Poetry 的默认位置(通常是用户主目录中的隐藏文件夹)。
    • virtualenvs.path
      可以通过这个设置自定义虚拟环境存储的位置。
    • virtualenvs.prefer-active-python
      如果这个设置被设为 true。当conda 环境中运行 poetry 命令时,poetry 会自动检测到当前活跃的 conda 环境中的 Python 解释器。具体设置命令:`poetry config virtualenvs.prefer-active-python true
  • 更多的待需要时再补充
    `