【AI基础】第四步:保姆喂饭级-langchain+chatglm2-6b+m3e-base

在第三步手动安装chatglm2-6b时,已经可以通过web进行交互。langchain重新封装了一下AI框架,提供更加友好的开发功能,类似于AI届的spring框架。langchain的安装过程也类似于上一步说的:【AI基础】第三步:纯天然手动安装并运行chatglm2-6b-CSDN博客。

此系列文章列表:

【AI基础】第一步:安装python开发环境-windows篇_下载安装ai环境python-CSDN博客

【AI基础】第一步:安装python开发环境-conda篇_minicode怎么换虚拟环境-CSDN博客

【AI基础】第二步:安装AI运行环境-CSDN博客

【AI基础】第三步:纯天然手动安装并运行chatglm2-6b-CSDN博客

【AI基础】第四步:保姆喂饭级-langchain+chatglm2-6b+m3e-base-CSDN博客

一、安装miniconda

参考 【AI基础】第一步:安装python开发环境-conda篇_minicode怎么换虚拟环境-CSDN博客

二、安装CUDA、cuDNN和pyTorch

参考 【AI基础】第二步:安装AI运行环境-CSDN博客

三、安装langchain

3.1 创建python运行环境

> conda create --name langchain python=3.11
> conda activate langchain

 目前推荐使用python 3.11版本。

3.2 拉取Langchain代码

# 拉取最新代码
> git clone https://github.com/chatchat-space/Langchain-Chatchat.git

# 拉取指定版本
> git clone -b v0.2.10 https://github.com/chatchat-space/Langchain-Chatchat.git

这里指定v0.2.10版本。

 3.3 安装依赖

# 进入项目目录
> cd Langchain-Chatchat
# 安装全部依赖,并使用清华源
> pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

安装完成:

3.4 下载模型

这里使用大模型chatglm2-6b和嵌入模型 M3e-base。

3.4.1 大模型chatglm2-6b下载地址: 

​​​​​​【AI基础】第三步:纯天然手动安装并运行chatglm2-6b-下载大模型文件-CSDN博客

3.4.2 嵌入模型M3e-base下载地址:

  • huggingface地址:https://huggingface.co/moka-ai/m3e-base
  • 国内百度飞浆地址: 中文文本嵌入模型m3e-base_数据集-飞桨AI Studio星河社区

以百度飞浆为例:

下载后解压m3e-base.zip,和另外两个文件放在同一个文件夹,最终结果如下:

 3.5 修改配置文件

3.5.1 初始化配置文件

执行命令

# 此命令负值配置文件,并移除后缀 example
> python copy_config_example.py

3.5.2 修改model_config.py

3.5.2.1 修改大模型地址

MODEL_PATH = {
    "llm_model": {
        "chatglm2-6b": "d:\\ai\\llms\\chatglm2-6b",
        "chatglm2-6b-32k": "THUDM/chatglm2-6b-32k",
        ...
    }
}

3.5.2.2 修改嵌入模型地址

MODEL_PATH = {
    "embed_model": {
        ...
        "m3e-base": "E:\\llm_models\\m3e-base",
        "m3e-large": "moka-ai/m3e-large",
        ...
    }
}

 3.5.2.3 配置使用的大模型及运行设备

# LLM 名称
LLM_MODELS = ["chatglm2-6b"]
 
# LLM 运行设备。设为"auto"会自动检测,也可手动设定为"cuda","mps","cpu"其中之一。
LLM_DEVICE = "cuda"

3.5.2.4 配置使用的嵌入模型及运行设备

# 选用的 Embedding 名称
EMBEDDING_MODEL = "m3e-base"

# Embedding 模型运行设备。设为"auto"会自动检测(会有警告),也可手动设定为"cuda","mps","cpu","xpu"其中之一。
EMBEDDING_DEVICE = "cuda"

3.6 初始化向量库

3.6.1 修复代码

在v0.2.10版本中,初始化向量库时调用了pwd模块,此模块只在linux系统存在,如果在windows下运行会提示错误:

所以这里需要模拟一个pwd模块,在conda的当前环境的lib目录下新建pwd.py:

文件内容:

from os import *
from pwd import *
def get_username():
    return getpwuid(getuid())[0]

 3.6.2 初始化向量库

> python init_database.py --recreate-vs

运行结果:

四、运行检验

4.1 运行

> python startup.py -a

运行结果: 

运行成功: 

 4.2 浏览器访问

默认会打开浏览器并访问 http://127.0.0.1:8501:

 五、参考

GitHub - Langchain-Chatchat(原Langchain-ChatGLM)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

github异常问题总结

问题1: gitgitlab.gz.cvte.cn: Permission denied (publickey). fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.解决方法: 这个错误表示 GitLab 服务器拒绝了你的 SSH…

【MySQL】(基础篇二) —— MySQL初始用

MySQL初始用 目录 MySQL初始用基本语法约定选择数据库查看数据库和表其它的SHOW 在Navicat中,大部分数据库管理相关的操作都可以通过图形界面完成,这个很简单,大家可以自行探索。虽然Navicat等图形化数据库管理工具为操作和管理数据库提供了非…

【小白专用24.6.8】c#异步方法 async task调用及 await运行机制

await是C#中用于等待异步操作完成的关键字。它通常用于异步方法内部,使得在等待异步操作期间,线程可以继续执行其他操作,从而保持程序的响应性。 在使用await时,需要注意以下几点: 1. async修饰符: 使用…

PgSQL技术内幕 - psql与服务端连接与交互机制

PgSQL技术内幕 - 客户端psql与服务端连接与交互机制 简单来说,PgSQL的psql客户端向服务端发起连接请求,服务端接收到请求后,fork出一个子进程,之后由该子进程和客户端进行交互,处理客户端的SQL等,并将结果返…

用HAL库改写江科大的stm32入门-输入捕获原理图示

原理与接线: (输入捕获的结构) cubeMx: PA11:

【复现】含能量路由器的交直流混合配电网潮流计算

目录 1 主要内容 2 理论及模型 3 程序结果 4 下载链接 1 主要内容 程序复现《含能量路由器的交直流混合配电网潮流计算》,主要是对算例4.1进行建模分析,理论和方法按照文献所述。能量路由器(ER)作为新兴的电力元器件&#xff…

应用matplotlib.animation.FuncAnimation绘制摆线

上次尝试了用matplotlib.animation.ArtistAnimation绘制摆线,实际上也可以用matplotlib.animation.FuncAnimation实现同样的功能。 导入相关文件 引用的库包括numpy,matplotlib,代码如下: import numpy as np import matplotli…

字符串形成树形

字符串形成树形 有的时候我们形成树形不是以ID的关系进行匹配的而是以字符串进行形成 数据 CREATE TABLE `contract_main_org_info` (`id` bigint(20) NOT NULL COMMENT 组织单位id,`parent_id` int(11) NULL DEFAULT NULL COMMENT 父组织单位id,`org_name` varchar(255) CHA…

mysql数据库密码破解

一、Mysql数据库密码破解 ①一旦获取了网站一定的权限后,如果能够获取MSQL中保存用户数据,通过解密后,即可通过正常途径来访问数据库;一方面可以直接操作数据库中的数据,另一方面可以用来提升权限。 ②MySQL数据库用户密码跟其它…

jmeter的infludb+grafana实时监控平台

目的:可以实时查看到jmeter拷机信息 框架:将 Jmeter 的数据导入 InfluxDB ,再用 Grafana 从 InfluxDB 中获取数据并以特定的模板进行展示 性能监控平台部署实践 一、influxDB 官网:https://www.influxdata.com/downloads/ wget h…

第一篇红队笔记-百靶精讲之W1R3S-john

https://download.vulnhub.com/w1r3s/w1r3s.v1.0.1.zip 主机发现 nmap端口扫描及思路 扫描某个网段 扫描单个ip所有端口 重复扫描单个ip具体端口 udp协议再来一次 漏洞扫描 FTP渗透 尝试匿名登陆 防止文件损坏 识别加密方式-hash-identifier base64 Web目录爆破…

CAN协议简介

协议简介 can协议是一种用于控制网络的通信协议。它是一种基于广播的多主机总线网络协议,常用于工业自动化和控制领域。can协议具有高可靠性、实时性强和抗干扰能力强的特点,被广泛应用于汽车、机械、航空等领域。 can协议采用了先进的冲突检测和错误检测…

Vue2入门(安装Vue、devtools,创建Vue)以及MVVM分层思想

文章目录 1.下载并安装Vue2.使用Vue2.1 创建Vue以及挂载Vue2.2 模板语句的数据来源:data2.3 template配置项详解2.4 Vue实例和容器的关系 3.安装devtools4.MVVM分层思想5.通过vm可以访问哪些属性 1.下载并安装Vue (1)Vue是一个基于JavaScrip…

vs - vs2013中编译sqlite3.44.2

文章目录 vs - vs2013中编译sqlite3.44.2概述笔记工程输出归档END vs - vs2013中编译sqlite3.44.2 概述 以前在vs2019下编译了sqlite3.44.2, 好使。做了笔记(sqlite3.44.2的编译) 现在准备将手头的vs2019工程改为vs2013的,自然要将sqlite也编译为vs2013版本的。 按…

使用LabVIEW进行大数据数组操作的优化方法

针对大数据量数组操作,传统的内存处理方法可能导致内存不足。通过LabVIEW的图像批处理技术,可以有效地进行大数据数组操作,包括分块处理、并行处理和内存优化等。这种方法能显著提高处理效率和系统稳定性。 图像批处理的优势 内存优化&#…

Qt Designer 生成的 .ui 文件转为 .py 文件并运行

1. 使用使用 PyUIC将 .ui 转 .py (1)打开命令行终端(可以用cmd,或pycharm 下面的 Terminal)。 (2)导航到包含.ui文件的目录。 cd 你的ui文件路径 (3)运行以下命令来…

H.264官方文档下载

H.264是ITU(International Telecommunication Union,国际通信联盟)和MPEG(Motion Picture Experts Group,运动图像专家组)联合制定的视频编码标准。其官方文档可以在ITU官网上下载:https://www.…

架构设计-用户信息及用户相关的密码信息设计

将用户的基本信息和用户密码存放在不同的数据库表中是一种常见的安全做法,这种做法旨在增强数据的安全性和管理的灵活性。以下是这种做法的几个关键原因: 安全性增强: 当用户密码被单独存放在一个表中时,可以使用更强大的加密和哈…

计算机网络 期末复习(谢希仁版本)第8章

元文件就是一种非常小的文件,它描述或指明其他文件的一些重要信息。这里的元文件保存了有关这个音频/视频文件的信息。 10. 流式:TCP;流式实况:UDP。

QT C++ QTableWidget 表格合并 setSpan 简单例子

这里说的合并指的是单元格,不是表头。span的意思是跨度、宽度、范围。 setSpan函数需要设定行、列、行跨几格,列跨几格。 //函数原型如下 void QTableView::setSpan(int row, i nt column, 、 int rowSpanCount,/*行跨过的格数*/ int columnSpanCount…