LangChain 核心原理-核心组件&应用开发类型 01

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

一、LangChain到底是什么

LangChain是一个开源框架,用于开发由大语言模型(LLMs)驱动的应用程序,比如,搭建智能体(Agent)、问答系统(QA)、对话机器人、文档搜索系统、企业私有化知识库等。

简单概括:

  • LangChain ≠ LLMs
  • LangChain 之于LLMs,类似Spring之于Java
  • LangChain 之于LLMs,类似Django、Flask之于Python

LangChain中的Lang指language,即大预言模型,Chain 即 链,也就是将大模型与外部数据&各种组件链接成链,以此构建AI应用程序

1、LangChain的使用场景

项目名称 技术点 难度
文档问答助手 Prompt + Embedding +RetrievalQA ⭐⭐
智能日程助手 Agent + Tool + Memory ⭐⭐⭐
LLM+数据库问答 SQLDatabaseToolkit + Agent ⭐⭐⭐⭐
多模型路由对话系统 RouterChain + 多 LLM ⭐⭐⭐⭐
互联网智能客服 ConversationChain + RAG +Agent ⭐⭐⭐⭐⭐
企业知识助手(RAG+本地模型) VectorDB + LLM + Streamlit ⭐⭐⭐⭐⭐

比如:知识库的架构

2、LangChain的资料介绍

3、LangChain内部结构

图中展示了LangChain生态系统的主要组件及其分类,分为三个层次:架构(Architecture)、组件(Components)和部署(Deployment)。

结构1:LangChain --就是AI应用组装套件,封装了一堆API。整体框架不大,但是内部琐碎的知识点特别多

  • langchain:构成应用程序认知架构的Chains、Agent、Retrieval strategies等。构成应用程序的链、智能体、RAG
  • langchain-community:第三方集成,比如:Model I/O、Retrieval、Tool & Toolkit;合作伙伴包 langchain-openai,langchain-anthropic等
  • langchain-Core:基础抽象和表达式语言(LCEL)

结构2:LangGraph --基于langchain的api进一步的封装,能够协调多个Chain、Agent、Tools完成更复杂的任务,实现更高级的功能

结构3:LangSmith ---链路追踪;提供了6大功能,与langchain无缝对接,帮组从原型阶段过度到生成阶段

  • Debugging 调试
  • Playground 沙盒
  • Prompt Management 提供管理
  • Annotation 注释
  • Testing 测试
  • Monitoring 监控

结构4:LangServe -- 将langchain的可运行项和链部署为REST API,使得它们可以通过网络进行调用;java怎么调用langchain呢?就通过langserve,将langchain应用包装成一个rest api,对外暴露服务。同时支持更高的并发,稳定性更好。

总结:langchain当中,最有前途的两个模块是:LangGraph、LangSmith

二、LangChain安装

1、相关环境安装

官网下载python进行安装,或者使用包管理工具(Anaconda)进行安装,通过Anaconda创建和管理虚拟环境,为项目提供独立的依赖空间,避免不同项目之间的依赖关系

1)conda的安装 --官网下载地址:www.anaconda.com/download/su... 安装是勾选在用户环境变量的Path中添加相应路径

2)验证安装是否成功,cmd--输入 conda info

3)Conda常用命令

python 复制代码
conda -help            # 查看帮助
conda info             # 查看 conda 信息
conda --version        # 查看 conda 版本
conda update conda     # 更新 Conda (慎用)
conda clean -all      # 清理不再需要的包
conda <指令> --help     # 查看某一个指令的详细帮助
conda config --show    # 查看 conda 的环境配置
conda clean -p         # 清理没有用, 没有安装的包
conda clean -t         # 清理 tarball
conda clean --all      # 清理所有包和 conda 的缓存文件

4)环境管理

|-- 创建conda环境

使用conda可以在电脑上创建很多套相互隔离的python环境,命令:

ini 复制代码
# 创建一个名为 myenv 的环境, python 版本为3.10
conda create --name myenv python=3.10 # --name 可以简写为 -n

|-- 切换conda环境

bash 复制代码
 #语法 可以切换不同的环境
conda activate env_name

#样例 切换到 my_env环境
conda activate my_env

|-- 如果要退出当前环境

复制代码
conda deactivate

|-- 查看 Conda 环境

当电脑上安装了很多台 Conda环境的时候,可以使用 conda env list 命令查看所有已创建的 Conda环境。

bash 复制代码
# 查看当前电脑上所有的 conda环境
conda env list

|-- 删除某个 Conda 环境

csharp 复制代码
# 语法
conda remove --name <env_name> --all
# 样例
conda remove --name learn --all

|-- 克隆环境

bash 复制代码
# 语法
conda create --name <new_evn_name> --clone <old_env_name>#样例
conda create --name myclone --clone myenv

5)包管理

一旦激活了环境,你就可以使用 condapip在当前环境下安装你所需要的包。在conda环境中, 不建议使用 pip

|-- 安装包

在激活的环境中安装包,例如安装NumPy:

复制代码
conda install numpy

可以使用以下命令安装特定版本的包:

ini 复制代码
conda install numpy=1.18

|-- 更新包

更新某个包到最新版本:

sql 复制代码
conda update numpy
​
#更新所有包到最新版本 (慎用)
conda update --all

执行命令后,conda将会对版本进行比较并列出可以升级的版本。同时,也会告知用户其他相关包也会升级到相应版本。当较新的版本可以用于升级时,终端会显示Proceed([y]/n)? , 此时输入y 即可进行升级。

|-- 卸载包

如果不再需要某个包,可以将其卸载:

arduino 复制代码
conda remove numpy

|-- 列出环境中的所有包

查看当前环境中已安装的所有包:

复制代码
conda list

查看当前虚拟环境中已安装的某个包的信息

复制代码
conda list pip

|-- 搜索包

搜索可用的包及其版本信息:

go 复制代码
 conda search package-name

2、安装langchain包

可以使用pip进行安装 -->pip install langchain

也可以使用conda进行安装

ini 复制代码
# 安装包(默认仓库)
conda install langchain

# 指定频道(如 conda-forge)
conda install -c conda-forge langchain==0.3.7

# 更新包
conda update langchain

# 卸载包
conda uninstall langchain

# 查看已安装包  conda 安装的包显示频道,pip安装的显示 pypi
conda list

-c :是 --channel 的缩写,conda⽤于指定包的安装来源渠道。
conda-forge :该源⽐官⽅默认渠道更新更快、包更全

#建议: 二者最好不好混用,推荐先conda装基础包,后 pip补充的顺序。

二、大模型RAG&Agent开发知识

1、基于RAG架构的开发

RAG主要是为了解决大模型幻觉和知识冻结

何为RAG? Retrieval-Augmented Generation(检索增强生成)

细节图:

强调一下难点的步骤:

整体在开发过程中蓝色部分是难点:1、文件解析 2、文件切割 3、知识检索 4、知识重排序(Reranker)

Reranker的使用场景:

  • 适合:追求回答高精度和高相关性的场景中特别适合使用Reranker,例如专业知识库或者客服系统等应用
  • 不适合:引入后会增加召回时间,增加检索延迟。对响应要求高的服务就不太适合

RAG有三处涉及到大模型的使用:

  • 第3步向量化时,需要使用切入模型(EmbeddingModels)
  • 第7步重排序时,需要使用排序模型(RerankerModels)
  • 第9步生成答案时,需要使用LLM

2 、基于Agent架构的开发

利用LLM的推理决策能力,通过增强规划、记忆和工具调用的能力,构造一个能够独立思考逐步完成给定目标的智能体

Agent的架构:Agent = LLM +Memory+Tools+Planning+Action

智能体的核心要素:

  • LLM:作为大脑,主要提供推理、规划、知识理解能力、是AI Agent的决策中枢

  • 记忆(Memory):记忆机制能让智能体在处理重复工作时调用以前的经验,从而避免用户进行大量重复交互

    • 短期记忆:存储单次对话周期的上下文信息,属于临时信息存储机制。受限于模型上下文窗口长度
    • 长期记忆:可以横跨多个任务或时间周期,可存储并调用核心知识,非即时任务;可以通过模型参数微调(固话知识)、知识图谱(结构化语义网络)或向量数据库(相似性检索)方式实现
  • 工具使用(Tool Use):调用外部工具,扩展能力边界

  • 规划决策(Planning):通过任务分解、反思与自省框架实现复杂任务处理。例如:把一个任务拆解成多个子任务,并通过与用户反馈随时优化策略

  • 行动(Action):实际执行策略的模块,涵盖软件接口操作和物理交互 。比如:检索、推理、变成等

3、大模型应用开发的四个场景

场景1:纯Prompt

  • Prompt是操作大模型的唯一接口,当用户说一句,ta回一句,在说一句,ta在回一句

场景2:Agent+Function Calling

  • Agent:AI主动提要求
  • Function Calling:需要对接外部系统时,AI要求执行某个函数
  • 当人看:你问ta[ 十一要去新疆旅游需要穿什么衣服],ta会让你查看天气预报,你看了告诉ta,ta在告诉你要穿什么衣服

场景3:RAG(Retrieval-Augmented Generation)

RAG:需要补充领域知识时使用

  • Embeddings:把文字转换成更易于相似度计算的编码。这种编码叫向量
  • 向量数据库:把向量存起来,方便查找
  • 向量搜索:根据输入量,找到最相似的向量

举例:考试答题时,到书上找相关内容,在结合题目组成答案

场景4:Fine-tuning(精调/微调)

举例:努力学习考试内容,长期记住,活学活用

特点:成本最高;在前面的方式解决不了问题的情况下,在使用

如何选择:

面对一个需求,如何开始,如何选择技术方案?下面是个常用思路:

LangChain核心组件

langchain的核心组件涉及到六大模块,这六大模块提供了一个全面且强大的框架,使开发者能够创建复杂,高效且用户友好的基于大模型的应用

核心组件1:Model I/O

model I/O:标准化各个大模型的输入和输出,包含输入模版,模型本身和格式化输出。 --->这个模块使用最多,也最简单

  • Format(格式化) :指代Prompts Template,通过模版管理大模型的输入。将原始数据格式化成模型可以处理的形式,插入到一个模版问题中,然后送入模型进行处理
  • Predict(预测) :指代Models,使用通用接口调用不同得到大语言模型。接收被送进来的问题,然后基于这个问题进行预测或生成回答
  • Parse(生成):指代Output Parser部分,用来从模型的推理中提取信息,并按照预先设定好得到模版来规范化输出。比如:格式化成一个结构化的JSON对象

核心组件2:Chains

Chain:"链条",用于将对个模块串联起来组成一个完整的流程,是langchain框架中最重要的模块。-->例如:一个Chain可能包括一个Prompt模版、一个语言模型和一个输出解析器,他们一起工作以处理用户输入,生成响应并处理输出。

常见的Chain类型:

  • LLMChain:最基础的模型调用链
  • SequentialChain:多个链串联执行
  • RouterChain:自动分析用户的需求,引导到最适合的链
  • RetrievalQA:结合向量数据库进行过问答的链

核心组件3:Memory

Memory:记忆模块,用户保存对话历史或上下文信息,以便在后续对话中使用

常见的Memory类型:

  • ConversationBufferMemory:保存完整的对话历史
  • ConversationSummaryMemory:保存对话内容的精简摘要(适合长对话)
  • ConversationSummaryBufferMemory:混合型记忆机制,兼具上面两个类型的特点
  • VectorStoreRetrieverMemory:保存对话历史存储在向量数据库中

核心组件4:Agent

Agents对应智能体,是langchain的高阶能力,ta可以自主选择工具并规划执行步骤

关键组成部分:

  • AgentType:定义决策逻辑的工作流模式
  • Tool:是有一些内置的功能模块,如API调用、搜索引擎、文本处理、数据查询等工具。Agents通过这些工具来执行特定的功能
  • AgentExecutor:用来运行智能体并执行其决策的工具,负责

核心组件5:Retrieval

Retrieval:对应着RAG,检索外部数据,然后在执行生成步骤时将其传递到LLM。步骤包括文档加载、切割、Embedding等

上图绿色部分是让入库存储前的操作

  • source:数据源,即大模型可以识别的多种类型的数据:视频、图片、文本、代码、文档等
  • load:负责将来自不同数据源的非结构化数据,加载为文档(Document)对象
  • Transform:负责对加载的文档进行转换和处理,比如讲过文本拆分为具有语义意义的 小块
  • Embed:将文本编码为向量的能力,一种用于嵌入文档,另一种用于嵌入查询
  • store:将向量化的数据进行存储
  • Retrieve:从大规模文本库中检索和查询相关的文本段落

核心组件6:Callbacks

Callbacks:回调机制,允许连接到LLM应用程序的各个阶段,可以监控和分析LangChain的运行情况,比如日志记录、监控、流传输等等,以优化性能

回调函数允许我们在LLM的各个阶段使用各种各样的"钩子",从而达实现日志的记录、监控以及流式传输等功能

小结:

  • Model I/O模块:使用最多,也最简单
  • Chains模块:最重要的模块
  • Retrieval、Agent模块:大模型的主要落地场

在这个基础上,其它组件要么是它们的辅助(比如:向量数据库的分块和嵌入),要么只是完成常规应用程序的任务

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

相关推荐
KG_LLM图谱增强大模型4 分钟前
【102页最新综述】AI智能体时代的记忆系统:形式、功能与知识图谱长记忆动态机制全景解析
大数据·人工智能·agent
小时前端25 分钟前
谁说 AI 历史会话必须存后端?IndexedDB方案完美翻盘
前端·agent·indexeddb
长空任鸟飞_阿康2 小时前
LangChain 技术栈全解析:从模型编排到 RAG 实战
前端·python·langchain
沛沛老爹2 小时前
Web开发者进阶AI Agent:LangChain提示词模板与输出解析器实战
人工智能·ai·langchain·llm·agent·提示词·web转型
骚戴2 小时前
LLM API Gateway:LLM API 架构、AI 聚合与成本优化全解(2025深度指南)
人工智能·python·大模型·llm·gateway·api
snoopy_213 小时前
LLM中位置编码
llm
Robot侠11 小时前
极简LLM入门指南4
大数据·python·llm·prompt·提示工程
janefir12 小时前
LangChain框架下DirectoryLoader使用报错zipfile.BadZipFile
人工智能·langchain
lpfasd12316 小时前
多模态多Agent智能助手系统完整方案汇总
语言模型·agent·多模态
至此流年莫相忘16 小时前
第三版:1、LangGraph之基本介绍+项目生成
langchain