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

相关推荐
mwq301232 小时前
Cursor Tab 共享无限车
llm
AI大模型2 小时前
RAG不会过时,但你需要这10个上下文处理技巧丨Context Engineering
程序员·llm·agent
thginWalker2 小时前
《LangChain 实战课》学习笔记
langchain
AI大模型3 小时前
万人收藏的提示词工程指导白皮书(附中文版)!Google官方出品,看完整个人都通透了
程序员·llm·agent
三点水7693 小时前
Langchain提示词模版
langchain
三点水7693 小时前
创建自己的第一个LangChainAI
langchain
ImAlex4 小时前
IPIDEA代理IP深度测评:构建智能体知识库的得力助手
爬虫·agent
公众号-架构师汤师爷4 小时前
n8n工作流实战:从0到1打造公众号热点选题一键采集智能体(万字图文)
人工智能·agent·智能体·n8n
Baihai_IDP4 小时前
剖析大模型产生幻觉的三大根源
人工智能·面试·llm