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

AI模型:包含各大语言模型的LangChain接口和调用细节,以及输出解析机制。
提示模板(Prompts): 提示模板,激发大语言模型的潜力。
检索(Retrieval): 自建知识库,实现检索增强生成(Retrieval Augmented Generation ,RAG),包含文档加载、文本拆分、转换成向量、向量存储、知识检索。
向量数据库: 保存语料信息。
组件
架构 | 🦜️🔗 LangChain 框架

快速上手
安装依赖
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 作为一个大语言模型(LLM, Large Language Model)开发框架,是 LLM 应用架构的重要一环。借助 LangChain,我们可以创建各种应用程序,包括聊天机器人和智能问答工具。 AI模型:包含各…...
如何使用postman来测试接口
一、postman的介绍与下载 可参考: https://blog.csdn.net/freeking101/article/details/80774271 二、api获取网站 阿里云API应用市场 地址:云市场_镜像市场_软件商店_建站软件_服务器软件_API接口_应用市场 - 阿里云 三、具体测试过程 可模拟浏览…...
深入剖析B树、B+树与B*树:从二叉树到多叉树的演进
引言 在计算机科学中,树结构是数据存储和检索的核心工具之一。从二叉树到二叉排序树,再到平衡二叉树,我们已经看到了这些数据结构在高效处理数据方面的优势。然而,随着数据量的爆炸式增长,二叉树的局限性逐渐显现出来…...
《算法篇:三数之和问题的两种解法》
问题描述 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a b c 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 给定数组 nums [-1, 0,…...
【2025】基于springboot+uniapp的乡村旅游小程序系统统(源码、万字文档、图文修改、调试答疑)农家乐预约
乡村旅游小程序系统通过 Spring Boot 与 uniapp 技术栈的深度整合,为乡村旅游产业打造了一个功能全面、交互流畅、性能稳定的综合服务平台。系统根据不同角色(管理员、商家、用户)的业务需求,提供了针对性的功能模块,实…...
DeepSeek Kimi详细生成PPT的步骤
以下是使用 DeepSeek 和 Kimi 协作生成 PPT 的详细步骤,结合了两者的优势实现高效创作: 第一步:使用 DeepSeek 生成 PPT 大纲或内容 明确需求并输入提示词 在 DeepSeek 的对话界面中,输入具体指令,要求生成 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:全方位电脑系统优化的高效工具
在日常使用电脑时,系统性能的下降、垃圾文件的堆积以及硬盘的老化等问题常常困扰着用户。为了提升电脑性能、优化系统运行,许多人会选择系统优化工具。然而,国内一些系统优化软件常常因为广告过多或功能冗杂而让人望而却步。此时,…...
LVDS系列3:Xilinx的IOBUFDS原语
前面两节讲解了差分转单端的IBUFDS原语和单端转差分的OBUFDS原语,今天来讲一个同时带有两者功能的原语IOBUFDS; 前述的IBUFDS原语只能接收外部差分信号,此时连接管脚为input管脚,OBUFDS只能向外部输出差分信号,此时连接…...
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 的查询 如何理解 "只发起一次查询,包含所有相关作者信息"1. select_related 的工作原理2. 具体示例解析3. 为什么只发起一次查询 数据库中的books量巨大࿰…...
蓝桥杯 k倍区间
题目描述 给定一个长度为 NN 的数列,A1,A2,⋯ANA1,A2,⋯AN,如果其中一段连续的子序列 Ai,Ai1,⋯AjAi,Ai1,⋯Aj ( i≤ji≤j ) 之和是 KK 的倍数,我们就称这个区间 [i,j][i,j] 是 K 倍区间。 你能求出数列中总共有多少个 KK 倍区间…...
数据结构(蓝桥杯常考点)
数据结构 前言:这个是针对于蓝桥杯竞赛常考的数据结构内容,基础算法比如高精度这些会在下期给大家总结 数据结构 竞赛中,时间复杂度不能超过10的7次方(1秒)到10的8次方(2秒) 空间限制&#x…...
Tomcat+Servlet运行后出现404错误解决方案
TomcatServlet运行后出现404错误解决方案 一、错误效果复现 后续的解决方案,仅仅针对我遇到的情况。对不能涵盖大部分情况感到抱歉。 二、错误分析 先看看源代码? package com.example.secondclass.Servlet; import java.io.*; import jakarta.servl…...
论文摘要生成器:用TextRank算法实现文献关键信息提取
我们基于python代码,使用PyQt5创建图形用户界面(GUI),同时支持中英文两种语言的文本论文文献关键信息提取。 PyQt5:用于创建GUI应用程序。 jieba:中文分词库,用于中文文本的处理。 reÿ…...
Flutter中网络图片加载显示Image.network的具体用法
Image.network的具体用法 Image.network 是 Flutter 中用于从网络加载图片的便捷方法。它基于 NetworkImage,可以快速加载并显示网络图片。以下是 Image.network 的具体用法和常见参数说明。 基本用法 最简单的用法是提供一个图片的 URL: dart 复制 …...
【HarmonyOS Next】鸿蒙应用故障处理思路详解
【HarmonyOS Next】鸿蒙应用崩溃处理思路详解 一、崩溃问题发现后定位 1. 崩溃现象: 常见的崩溃问题表现为,应用操作后白屏闪退,或者应用显示无响应卡死。 2.定位问题: 发现崩溃后,我们首先需要了解复现步骤&#x…...
狮子座大数据分析(python爬虫版)
十二星座爱情性格 - 星座屋 首先找到一个星座网站,作为基础内容,来获取信息 网页爬取与信息提取 我们首先利用爬虫技术(如 Python 中的 requests 与 BeautifulSoup 库)获取页面内容。该页面(xzw.com/astro/leo/&…...
QT系列教程(18) MVC结构之QItemSelectionModel模型介绍
视频教程 https://www.bilibili.com/video/BV1FP4y1z75U/?vd_source8be9e83424c2ed2c9b2a3ed1d01385e9 QItemSelectionModel Qt的MVC结构支持多个View共享同一个model,包括该model的选中状态等。我们可以通过设置QItemSelectionModel,来更改View的选…...
git设置本地仓库和远程仓库
设置本地仓库和远程仓库是使用Git进行版本控制的基本操作。以下是详细步骤: 创建本地仓库 初始化本地仓库: 打开命令行工具(如Terminal或Git Bash)。导航到你希望创建Git仓库的项目文件夹。运行以下命令来初始化一个新的Git仓库&…...
8 款最强 AI 文字转语音横评:中文方言谁最强、免费党有没有真王者?
👉 这是一个或许对你有用的社群🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 《项目实战(视频)》:从书中学,往事上…...
从仿真到论文图表:手把手教你用FDTD参数扫描和Matlab处理WO3薄膜光学数据
从仿真到论文图表:FDTD参数扫描与Matlab数据可视化全流程解析 在光电材料研究中,WO₃薄膜因其优异的电致变色特性备受关注。当我们需要系统研究薄膜厚度对光学性能的影响时,FDTD Solutions的参数扫描功能配合Matlab的数据处理能力,…...
从零搭建生产级LLM API服务:架构设计、部署与性能调优实战
1. 项目概述与核心价值 最近在折腾大语言模型本地部署和API服务搭建的朋友,估计都绕不开一个词:文档。不是模型本身的论文,而是那些能把复杂技术栈串起来、让你从“能跑起来”到“能稳定用起来”的操作指南。我关注到 GitHub 上一个名为 var…...
一键解决!VisualCppRedist AIO彻底告别Windows DLL错误困扰
一键解决!VisualCppRedist AIO彻底告别Windows DLL错误困扰 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 还记得那个令人抓狂的时刻吗?…...
前端状态管理:主流状态管理库对比与选型指南
前端状态管理:主流状态管理库对比与选型指南 前言 状态管理是前端开发中的核心问题。随着应用复杂度的增加,选择一个合适的状态管理库变得越来越重要。今天我就来给大家对比一下目前主流的状态管理库,帮助你做出最佳选择。 主流状态管理库概览…...
如何在JavaScript中快速生成专业的PowerPoint演示文稿
如何在JavaScript中快速生成专业的PowerPoint演示文稿 【免费下载链接】PptxGenJS Build PowerPoint presentations with JavaScript. Works with Node, React, web browsers, and more. 项目地址: https://gitcode.com/gh_mirrors/pp/PptxGenJS PptxGenJS是一个功能强大…...
SignalTap调试进阶:巧用约束与别名捕获FPGA优化后的关键信号
1. 为什么优化后的信号会"消失"? 很多FPGA工程师都遇到过这样的场景:明明在代码里明确定义了reg和wire信号,但在SignalTap里死活找不到它们的身影。这其实不是工具出了问题,而是Quartus的综合优化在"作怪"。…...
AI工程化实战:基于Python工具箱构建生产级AI服务
1. 项目概述:一个AI驱动的Python开发工具箱 最近在GitHub上看到一个挺有意思的项目,叫“antarys-ai/python”。光看名字,你可能会觉得这又是一个普通的Python库或者某个AI框架的封装。但当我深入进去,发现它的定位其实相当独特&am…...
HC32F460移植指南:除了代码,你还需要搞定Keil、J-Flash和驱动库这三大件
HC32F460开发环境搭建实战:从工具链配置到驱动库迁移 第一次拿到华大HC32F460开发板时,我对着Keil里找不到的芯片型号和一堆陌生的驱动库文件陷入了沉思。与STM32生态相比,华大MCU的开发环境搭建确实存在不少"坑点"。本文将分享一套…...
告别黑盒:用Python+Wireshark抓包,手把手解析CANoe FDX协议数据交互全过程
告别黑盒:用PythonWireshark抓包,手把手解析CANoe FDX协议数据交互全过程 在汽车电子和嵌入式系统开发领域,CANoe作为主流的网络仿真与分析工具,其FDX协议提供了一种强大的跨语言数据交互能力。但对于许多开发者而言,协…...
