当前位置: 首页 > news >正文

基于langchain+llama2的本地私有大语言模型实战

Langchain功能

LangChian 作为一个大语言模型(LLM, Large Language Model)开发框架,是 LLM 应用架构的重要一环。借助 LangChain,我们可以创建各种应用程序,包括聊天机器人和智能问答工具。

image-20250306092604294

AI模型:包含各大语言模型的LangChain接口和调用细节,以及输出解析机制。

提示模板(Prompts): 提示模板,激发大语言模型的潜力。

检索(Retrieval): 自建知识库,实现检索增强生成(Retrieval Augmented Generation ,RAG),包含文档加载、文本拆分、转换成向量、向量存储、知识检索。

向量数据库: 保存语料信息。

组件

架构 | 🦜️🔗 LangChain 框架

image-20250307173645572

快速上手

安装依赖

pip install langchain
pip install -qU langchain-openai
pip install "langserve[all]"
pip install -U langchain-community
python
Python 3.10.0 | packaged by conda-forge | (default, Nov 10 2021, 13:20:59) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
pip list
Package                  Version
------------------------ -----------
aiohappyeyeballs         2.5.0
aiohttp                  3.11.13
aiosignal                1.3.2
annotated-types          0.7.0
anyio                    4.8.0
async-timeout            4.0.3
attrs                    25.1.0
build                    1.2.2.post1
certifi                  2025.1.31
charset-normalizer       3.4.1
cmake                    3.31.6
colorama                 0.4.6
dataclasses-json         0.6.7
diskcache                5.6.3
dpcpp-cpp-rt             2024.0.2
exceptiongroup           1.2.2
frozenlist               1.5.0
greenlet                 3.1.1
h11                      0.14.0
httpcore                 1.0.7
httpx                    0.28.1
httpx-sse                0.4.0
idna                     3.10
importlib_metadata       8.6.1
intel-cmplr-lib-rt       2024.0.2
intel-cmplr-lic-rt       2024.0.2
intel-opencl-rt          2024.0.2
intel-openmp             2024.0.2
jsonpatch                1.33
jsonpointer              3.0.0
langchain                0.3.20
langchain-community      0.3.19
langchain-core           0.3.41
langchain-text-splitters 0.3.6
langsmith                0.3.12
llama_cpp_python         0.2.23
marshmallow              3.26.1
mkl                      2024.0.0
mkl-dpcpp                2024.0.0
multidict                6.1.0
mypy-extensions          1.0.0
numpy                    2.2.3
onednn                   2024.0.0
onemkl-sycl-blas         2024.0.0
onemkl-sycl-datafitting  2024.0.0
onemkl-sycl-dft          2024.0.0
onemkl-sycl-lapack       2024.0.0
onemkl-sycl-rng          2024.0.0
onemkl-sycl-sparse       2024.0.0
onemkl-sycl-stats        2024.0.0
onemkl-sycl-vm           2024.0.0
orjson                   3.10.15
packaging                24.2
pip                      25.0
propcache                0.3.0
pydantic                 2.10.6
pydantic_core            2.27.2
pydantic-settings        2.8.1
pyproject_hooks          1.2.0
python-dotenv            1.0.1
PyYAML                   6.0.2
requests                 2.32.3
requests-toolbelt        1.0.0
setuptools               75.8.2
sniffio                  1.3.1
SQLAlchemy               2.0.38
tbb                      2021.13.1
tenacity                 9.0.0
tomli                    2.2.1
typing_extensions        4.12.2
typing-inspect           0.9.0
urllib3                  2.3.0
wheel                    0.45.1
yarl                     1.18.3
zipp                     3.21.0
zstandard                0.23.0

推理问题示例

完成代码:

from langchain_community.llms import LlamaCpp
from langchain.prompts import PromptTemplate
from langchain.schema.output_parser import StrOutputParser
from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler# 1. 定义中文提示模板
template_zh = """[INST] <<SYS>>
你是一个智能 助手,需用简洁且口语化的回答用户问题。若问题不明确,请主动询问细节。
<</SYS>>{question} [/INST]"""prompt = PromptTemplate(template=template_zh, input_variables=["question"])
callback_manager = CallbackManager([StreamingStdOutCallbackHandler()])
# 2. 加载本地模型
# 配置参数
n_gpu_layers = 40  # 根据您的模型和GPU VRAM大小调整
n_batch = 512  # 应在1到n_ctx之间,考虑GPU的VRAM大小llm = LlamaCpp(model_path="llama-2-7b-chat.Q4_K_M.gguf",n_gpu_layers=n_gpu_layers,n_batch=n_batch,callback_manager=callback_manager,verbose=True,
)# 3. 构建链
chain = prompt | llm | StrOutputParser()# 4. 调用示例
question = "如何用Python实现快速排序?"
response = chain.invoke({"question": question})
print(f"\n回答:{response}")

输出结果

回答:  Hey there! 😊
To implement quicksort in Python, you can use the following code:
```python
def quicksort(arr):if len(arr) <= 1:return arrelse:pivot = arr[0]less = [x for x in arr[1:] if x < pivot]greater = [x for x in arr[1:] if x >= pivot]return quicksort(less), pivot, quicksort(greater)
```
This is a basic implementation of the quicksort algorithm. The function takes an array as input and returns three values: the sorted list (or lists), the pivot element, and the results of recursively calling the quicksort function on the greater and less than elements.
Please let me know if you have any questions! 😃
(langchain) PS D:\code\trae> 

ref

一文详解最热的 LLM 应用框架 LangChain - 知乎

相关文章:

基于langchain+llama2的本地私有大语言模型实战

Langchain功能 LangChian 作为一个大语言模型&#xff08;LLM, Large Language Model&#xff09;开发框架&#xff0c;是 LLM 应用架构的重要一环。借助 LangChain&#xff0c;我们可以创建各种应用程序&#xff0c;包括聊天机器人和智能问答工具。 AI模型&#xff1a;包含各…...

如何使用postman来测试接口

一、postman的介绍与下载 可参考&#xff1a; https://blog.csdn.net/freeking101/article/details/80774271 二、api获取网站 阿里云API应用市场 地址&#xff1a;云市场_镜像市场_软件商店_建站软件_服务器软件_API接口_应用市场 - 阿里云 三、具体测试过程 可模拟浏览…...

深入剖析B树、B+树与B*树:从二叉树到多叉树的演进

引言 在计算机科学中&#xff0c;树结构是数据存储和检索的核心工具之一。从二叉树到二叉排序树&#xff0c;再到平衡二叉树&#xff0c;我们已经看到了这些数据结构在高效处理数据方面的优势。然而&#xff0c;随着数据量的爆炸式增长&#xff0c;二叉树的局限性逐渐显现出来…...

《算法篇:三数之和问题的两种解法》

问题描述 给定一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 &#xff1f;找出所有满足条件且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 给定数组 nums [-1, 0,…...

【2025】基于springboot+uniapp的乡村旅游小程序系统统(源码、万字文档、图文修改、调试答疑)农家乐预约

乡村旅游小程序系统通过 Spring Boot 与 uniapp 技术栈的深度整合&#xff0c;为乡村旅游产业打造了一个功能全面、交互流畅、性能稳定的综合服务平台。系统根据不同角色&#xff08;管理员、商家、用户&#xff09;的业务需求&#xff0c;提供了针对性的功能模块&#xff0c;实…...

DeepSeek Kimi详细生成PPT的步骤

以下是使用 DeepSeek 和 Kimi 协作生成 PPT 的详细步骤&#xff0c;结合了两者的优势实现高效创作&#xff1a; 第一步&#xff1a;使用 DeepSeek 生成 PPT 大纲或内容 明确需求并输入提示词 在 DeepSeek 的对话界面中&#xff0c;输入具体指令&#xff0c;要求生成 PPT 大纲或…...

【Film】MM-StoryAgent:沉浸式叙事故事书视频生成,具有跨文本、图像和音频的多代理范式

MM-StoryAgent:沉浸式叙事故事书视频生成,具有跨文本、图像和音频的多代理范式 https://arxiv.org/abs/2503.05242 MM-StoryAgent: Immersive Narrated Storybook Video Generation with a Multi-Agent Paradigm across Text, Image and Audio The rapid advancement of larg…...

Tweak Power:全方位电脑系统优化的高效工具

在日常使用电脑时&#xff0c;系统性能的下降、垃圾文件的堆积以及硬盘的老化等问题常常困扰着用户。为了提升电脑性能、优化系统运行&#xff0c;许多人会选择系统优化工具。然而&#xff0c;国内一些系统优化软件常常因为广告过多或功能冗杂而让人望而却步。此时&#xff0c;…...

LVDS系列3:Xilinx的IOBUFDS原语

前面两节讲解了差分转单端的IBUFDS原语和单端转差分的OBUFDS原语&#xff0c;今天来讲一个同时带有两者功能的原语IOBUFDS&#xff1b; 前述的IBUFDS原语只能接收外部差分信号&#xff0c;此时连接管脚为input管脚&#xff0c;OBUFDS只能向外部输出差分信号&#xff0c;此时连接…...

Git和GitHub基础教学

文章目录 1. 前言2. 历史3. 下载安装Git3.1 下载Git3.2 安装Git3.3 验证安装是否成功 4. 配置Git5. Git基础使用5.1 通过Git Bash使用5.1.1 创建一个新的仓库。5.1.1.1 克隆别人的仓库5.1.1.2 自己创建一个本地仓库 5.1.2 管理存档 5.2 通过Visual Studio Code使用 6. Git完成远…...

Django-ORM-select_related

Django-ORM-select_related 作用使用场景示例无 select_related 的查询有 select_related 的查询 如何理解 "只发起一次查询&#xff0c;包含所有相关作者信息"1. select_related 的工作原理2. 具体示例解析3. 为什么只发起一次查询 数据库中的books量巨大&#xff0…...

蓝桥杯 k倍区间

题目描述 给定一个长度为 NN 的数列&#xff0c;A1,A2,⋯ANA1​,A2​,⋯AN​&#xff0c;如果其中一段连续的子序列 Ai,Ai1,⋯AjAi​,Ai​1,⋯Aj​ ( i≤ji≤j ) 之和是 KK 的倍数&#xff0c;我们就称这个区间 [i,j][i,j] 是 K 倍区间。 你能求出数列中总共有多少个 KK 倍区间…...

数据结构(蓝桥杯常考点)

数据结构 前言&#xff1a;这个是针对于蓝桥杯竞赛常考的数据结构内容&#xff0c;基础算法比如高精度这些会在下期给大家总结 数据结构 竞赛中&#xff0c;时间复杂度不能超过10的7次方&#xff08;1秒&#xff09;到10的8次方&#xff08;2秒&#xff09; 空间限制&#x…...

Tomcat+Servlet运行后出现404错误解决方案

TomcatServlet运行后出现404错误解决方案 一、错误效果复现 后续的解决方案&#xff0c;仅仅针对我遇到的情况。对不能涵盖大部分情况感到抱歉。 二、错误分析 先看看源代码&#xff1f; package com.example.secondclass.Servlet; import java.io.*; import jakarta.servl…...

论文摘要生成器:用TextRank算法实现文献关键信息提取

我们基于python代码&#xff0c;使用PyQt5创建图形用户界面&#xff08;GUI&#xff09;&#xff0c;同时支持中英文两种语言的文本论文文献关键信息提取。 PyQt5&#xff1a;用于创建GUI应用程序。 jieba&#xff1a;中文分词库&#xff0c;用于中文文本的处理。 re&#xff…...

Flutter中网络图片加载显示Image.network的具体用法

Image.network的具体用法 Image.network 是 Flutter 中用于从网络加载图片的便捷方法。它基于 NetworkImage&#xff0c;可以快速加载并显示网络图片。以下是 Image.network 的具体用法和常见参数说明。 基本用法 最简单的用法是提供一个图片的 URL&#xff1a; dart 复制 …...

【HarmonyOS Next】鸿蒙应用故障处理思路详解

【HarmonyOS Next】鸿蒙应用崩溃处理思路详解 一、崩溃问题发现后定位 1. 崩溃现象&#xff1a; 常见的崩溃问题表现为&#xff0c;应用操作后白屏闪退&#xff0c;或者应用显示无响应卡死。 2.定位问题&#xff1a; 发现崩溃后&#xff0c;我们首先需要了解复现步骤&#x…...

狮子座大数据分析(python爬虫版)

十二星座爱情性格 - 星座屋 首先找到一个星座网站&#xff0c;作为基础内容&#xff0c;来获取信息 网页爬取与信息提取 我们首先利用爬虫技术&#xff08;如 Python 中的 requests 与 BeautifulSoup 库&#xff09;获取页面内容。该页面&#xff08;xzw.com/astro/leo/&…...

QT系列教程(18) MVC结构之QItemSelectionModel模型介绍

视频教程 https://www.bilibili.com/video/BV1FP4y1z75U/?vd_source8be9e83424c2ed2c9b2a3ed1d01385e9 QItemSelectionModel Qt的MVC结构支持多个View共享同一个model&#xff0c;包括该model的选中状态等。我们可以通过设置QItemSelectionModel&#xff0c;来更改View的选…...

git设置本地仓库和远程仓库

设置本地仓库和远程仓库是使用Git进行版本控制的基本操作。以下是详细步骤&#xff1a; 创建本地仓库 初始化本地仓库&#xff1a; 打开命令行工具&#xff08;如Terminal或Git Bash&#xff09;。导航到你希望创建Git仓库的项目文件夹。运行以下命令来初始化一个新的Git仓库&…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...