【大模型】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-serverpoetry 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
  • 更多的待需要时再补充
    `

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/587.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jenkins的作用以及操作

一 jenkins 1.1 概念 1.2 流程 1.2.1 流程 1.2.2 配置 1.3 jenkins容器自动化部署

【UE5 C++课程系列笔记】29——在UE中使用第三方库的流程

目录 前言 步骤 一、新建插件 二、创建第三方库 三、使用第三方库 前言 主要就是介绍如何将普通C++工程生成的头文件和.dll导入到UE中去使用。 步骤 一、新建插件 1. 打开插件浏览器选项卡 2. 打开插件创建器 3. 选择“第三方库”,这里命名为“MyThirdPartyLibrary…

Mybatis——Mybatis开发经验总结

摘要 本文主要介绍了MyBatis框架的设计与通用性,阐述了其作为Java持久化框架的亮点,包括精良的架构设计、丰富的扩展点以及易用性和可靠性。同时,对比了常见持久层框架,分析了MyBatis在关系型数据库交互中的优势。此外&#xff0…

【数据结构-堆】【二分】力扣3296. 移山所需的最少秒数

给你一个整数 mountainHeight 表示山的高度。 同时给你一个整数数组 workerTimes,表示工人们的工作时间(单位:秒)。 工人们需要 同时 进行工作以 降低 山的高度。对于工人 i : 山的高度降低 x,需要花费 workerTimes…

网络传输层TCP协议

传输层TCP协议 1. TCP协议介绍 TCP(Transmission Control Protocol,传输控制协议)是一个要对数据的传输进行详细控制的传输层协议。 TCP 与 UDP 的不同,在于TCP是有连接、可靠、面向字节流的。具体来说,TCP设置了一大…

玩转大语言模型——langchain调用ollama视觉多模态语言模型

系列文章目录 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 langchain调用ollama视觉多模态语言模型 系列文章目录前言使用Ollama下载模型查找模型下载模型 测试模型ollama测试langchain测试加载图片加载模型…

3 前端: Web开发相关概念 、HTML语法、CSS语法

文章目录 前言:导学1 Web开发相关概念2 Web标准(网页标准)3 软件架构(CS/BS)(1)C/S: Client/Server 客户端 / 服务器端(2)B/S: Browser/Server 浏览器 / 服务器端VSCode配置前段开发环境一、HTML概念1 概念2 HTML快速入门(1)语法快速入门(2)VSCode一个 !(快捷键…

STM32如何测量运行的时钟频率

前言 环境: 芯片:STM32F103C8T6 Keil:V5.24.2.0 一、简介STM32F103C8T6的时钟源 ①HSI 内部高速时钟,RC振荡器,频率为8MHz,精度不高。②HSE 外部高速时钟,可接石英/陶瓷谐振器,频率范围为4MHz~16MHz&…

项目实战--网页五子棋(用户模块)(1)

接下来我将使用Java语言,和Spring框架,实现一个简单的网页五子棋。 主要功能包括用户登录注册,人机对战,在线匹配对局,房间邀请对局,积分排行版等。 这篇文件讲解用户模块的后端代码 1. 用户表与实体类 …

【HTML+CSS+JS+VUE】web前端教程-16-HTML5新增标签

扩展知识 div容器元素,也是页面中见到的最多的元素 div实现

Codeforces Round 995 (Div. 3)【题解】D ~ G

比赛地址传送门 D.Counting Pairs 注意到确定一个数后&#xff0c;第二个数可以一个范围内任选。故排序二分查找上下界后计数 #include <bits/stdc.h> #define int long long using namespace std; typedef pair<int, int> PII; const int N 4e5 10;int n, x, …

【Linux】Linux基础命令(二)

locate命令 locate命令可以用于快速查找文件的路径&#xff0c;比如我要查找所有.cpp文件的路径&#xff1a; sudo locate *.cppless 命令 less命令和more命令类似&#xff0c;都是查看文件内容&#xff0c;但less命令更强大 可以使用光标上下&#xff08;左右&#xff09;…

自动化构音障碍严重程度分类:基于声学特征与深度学习的研究 学习技术

自动化构音障碍严重程度分类 原文名称&#xff1a;Automated Dysarthria Severity Classification:A Study on Acoustic Features and Deep Learning Techniques 摘要 本文比较了不同深度学习技术和声学特征在构音障碍严重程度分类中的应用。研究评估了深度神经网络&#xff0…

【NLP】ELMO、GPT、BERT、BART模型解读及对比分析

文章目录 一、基础知识1.1 Word Embedding&#xff08;词嵌入&#xff09;1.2 词嵌入模型1.3 神经网络语言模型NNLM 二、ELMO2.1 ELMO的提出2.2 ELMO核心思想2.3 ELMO的优缺点 三、GPT3.1 Transformer3.2 GPT简介3.3 GPT模型架构3.4 预训练及微调3.5 GPT和ELMO对比 四、BERT4.1…

EasyExcel(二)导出Excel表自动换行和样式设置

EasyExcel(一)导出Excel表列宽自适应 背景 在上一篇文章中解决导出列宽自适应,然后也解决了导出列宽不可超过255的问题。但是实际应用场景中仍然会有导出数据的长度超过列宽255。这时导出效果就会出现如下现象: 多出列宽宽度的内容会浮出来,影响后边列数据的显示。 解决…

【深度学习】多目标融合算法(二):底部共享多任务模型(Shared-Bottom Multi-task Model)

目录 一、引言 1.1 往期回顾 1.2 本期概要 二、Shared-Bottom Multi-task Model&#xff08;SBMM&#xff09; 2.1 技术原理 2.2 技术优缺点 2.3 业务代码实践 三、总结 一、引言 在朴素的深度学习ctr预估模型中&#xff08;如DNN&#xff09;&#xff0c;通常以一个行…

分类模型为什么使用交叉熵作为损失函数

推导过程 让推理更有体感&#xff0c;进行下面假设&#xff1a; 假设要对猫、狗进行图片识别分类假设模型输出 y y y&#xff0c;是一个几率&#xff0c;表示是猫的概率 训练资料如下&#xff1a; x n x^n xn类别 y ^ n \widehat{y}^n y ​n x 1 x^1 x1猫1 x 2 x^2 x2猫1 x …

快速导入请求到postman

1.确定请求&#xff0c;右键复制为cURL(bash) 2.postman菜单栏Import-Raw text&#xff0c;粘贴复制的内容保存&#xff0c;请求添加成功

第432场周赛:跳过交替单元格的之字形遍历、机器人可以获得的最大金币数、图的最大边权的最小值、统计 K 次操作以内得到非递减子数组的数目

Q1、跳过交替单元格的之字形遍历 1、题目描述 给你一个 m x n 的二维数组 grid&#xff0c;数组由 正整数 组成。 你的任务是以 之字形 遍历 grid&#xff0c;同时跳过每个 交替 的单元格。 之字形遍历的定义如下&#xff1a; 从左上角的单元格 (0, 0) 开始。在当前行中向…

专题 - STM32

基础 基础知识 STM所有产品线&#xff08;列举型号&#xff09;&#xff1a; STM产品的3内核架构&#xff08;列举ARM芯片架构&#xff09;&#xff1a; STM32的3开发方式&#xff1a; STM32的5开发工具和套件&#xff1a; 若要在电脑上直接硬件级调试STM32设备&#xff0c;则…