Skip to content

LangChain使用概述

image-20250924212421126

1、介绍LangChain

1.1 什么是LangChain

LangChain是 2022年10月 ,由哈佛大学的 Harrison Chase (哈里森·蔡斯)发起研发的一个开源框架,

用于开发由大语言模型(LLMs)驱动的应用程序。

比如,搭建“智能体”(Agent)、问答系统(QA)、对话机器人、文档搜索系统、企业私有知识库

等。

LangChain在Github上的热度变化

image-20250924221123848

简单概括

LangChain ≠ LLMs

LangChain 之于 LLMs,类似 Spring 之于 Java

LangChain 之于 LLMs,类似 Django、Flask 之于 Python

顾名思义:Langchain 中的“Lang” 是指Language,即大语言模型,“Chain”即链,也就是将大语言模型与外部数据&各种组件连接成链,以构建AI应用程序。

1.2 有哪些大模型应用开发框架呢?

截止到2025年9月25日,GitHub统计数据:

开发语言开发框架Stars数量推荐指数
PythonLangChain116k⭐⭐⭐⭐⭐
PythonLlamIndex44.4k⭐⭐⭐⭐
JavaLangChain4J9.1k⭐⭐⭐
JavaSpringAI6.8k⭐⭐
JavaSpringAI Alibaba5.9k⭐⭐
C#SemanticKernel26.3k⭐⭐⭐⭐⭐
  • LangChain :这些工具里出现最早、最成熟的,适合复杂任务分解和单智能体应用LlamaIndex :专注于高效的索引和检索,适合 RAG 场景。(注意不是Meta开发的)

  • LangChain4J :LangChain还出了Java、JavaScript(LangChain.js)两个语言的版本,

  • LangChain4j的功能略少于LangChain,但是主要的核心功能都是有的

  • SpringAI/SpringAI Alibaba :有待进一步成熟,此外只是简单的对于一些接口进行了封装

  • SemanticKernel :也称为sk,微软推出的,对于C#同学来说,那就是5颗星

1.3 为什么需要LangChain?

问题1:LLMs用的好好的,干嘛还需要LangChain?

在大语言模型(LLM)如 ChatGPT、Claude、DeepSeek 等快速发展的今天,开发者不仅希望能“使 用”这些模型,还希望能 将它们灵活集成到自己的应用中 ,实现更强大的对话能力、检索增强生成 (RAG)、工具调用(Tool Calling)、多轮推理等功能。

image-20250924223844947

LangChain 为更方便解决这些问题,而生的。比如:大模型默认不能联网,如果需要联网,用 langchain。

问题2:我们可以使用GPT 或GLM4 等模型的API进行开发,为何需要LangChain这样的框架?

不使用LangChain,确实可以使用GPT 或GLM4 等模型的API进行开发。比如,搭建“智能体” (Agent)、问答系统、对话机器人等复杂的 LLM 应用。 但使用LangChain的好处:

  • 简化开发难度 :更简单、更高效、效果更好

  • 学习成本更低 :不同模型的API不同,调用方式也有区别,切换模型时学习成本高。使用 LangChain,可以以统一、规范的方式进行调用,有更好的移植性。

  • 现成的链式组装 :LangChain提供了一些 现成的链式组装 ,用于完成特定的高级任务。让复杂的逻 辑变得 结构化、易组合、易扩展 项目名称 技术点 难度

image-20250924224639597

问题3:LangChain 提供了哪些功能呢?

LangChain 是一个帮助你构建 LLM 应用的 全套工具集 。这里涉及到prompt 构建、LLM 接入、记忆管 理、工具调用、RAG、智能体开发等模块。

1.4 LangChain资料介绍

官网地址:https://www.langchain.com/langchain

官网文档:https://python.langchain.com/docs/introduction/

API文档:https://python.langchain.com/api_reference/

github地址:https://github.com/langchain-ai/langchain

1.5 架构设计

1.5.1 总体架构图

V0.1 版本

Diagram outlining the hierarchical organization of the LangChain framework, displaying the interconnected parts across multiple layers.

V0.2 / V0.3 版本

Diagram outlining the hierarchical organization of the LangChain framework, displaying the interconnected parts across multiple layers.

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

版本的升级,v0.2 相较于v0.1 ,修改了⼤概10%-15% 。功能性上差不多,主要是往稳定性(或兼容性)、安全性上使劲了,⽀持更多的⼤模型,更安全。

1.5.2 内部架构详情

结构1:LangChain

langchain :构成应用程序认知架构的Chains,Agents,Retrieval strategies等

构成应⽤程序的链、智能体、RAG 。

langchain-community :第三方集成

⽐如:Model I/O 、Retrieval 、Tool & Toolkit ;合作伙伴 包 langchain-openai ,langchain-anthropic 等。

langchain-Core :基础抽象和LangChain表达式语言 (LCEL)

小结:LangChain,就是AI应用组装套件,封装了一堆的API。langchain框架不大,但是里面琐碎的知 识点特别多。就像玩乐高,提供了很多标准化的乐高零件(比如,连接器、轮子等)

结构2:LangGraph

LangGraph可以看做基于LangChain的api的进一步封装,能够协调多个Chain、Agent、Tools完成更 复杂的任务,实现更高级的功能。

结构3:LangSmith

https://docs.smith.langchain.com/

提供了6大功能,涉及Debugging (调试)、Playground (沙盒)、Prompt Management (提 示管理)、Annotation (注释)、Testing (测试)、Monitoring (监控)等。与LangChain无缝集成,帮助你 从原型阶段过渡到生产阶段。

正是因为LangSmith 这样的⼯具出现,才使得LangChain 意义更⼤,要不仅靠⼀些 API (当然也可以不⽤,⽤原⽣的API )⽀持不住LangChain 的热度。

结构4:LangServe

将LangChain的可运行项和链部署为REST API,使得它们可以通过网络进行调用。同时,支持更高的并发,稳定性更好。

总结:LangChain当中,最有前途的两个模块就是:LangGraph,LangSmith。

LangChain 能做RAG ,其它的⼀些框架也能做,而且做的也不错,⽐如LlamaIndex 。所以这时候LangChain 要在 Agent 这块发⼒,那就需要LangGraph 。而LangSmith 做运维、监控。故⼆者是LangChain ⾥最有前途的。

2、介绍RAG

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

有啥用?

  • 解决大模型知识冻结问题
  • 解决大模型幻觉问题

举例:

LLM在考试的时候面对陌生的领域,答复能力有限,然后就准备放飞自我了。而此时RAG给了一些提示

和思路,让LLM懂了开始往这个提示的方向做,最终考试的正确率从60%到了90%!

image-20250924231151905

细节图:

image-20250924231939673

  1. Unstructured Loader:通过非结构化数据加载器加载本地文档,如PDF、Word、txt等
  2. Text:从文档中提取的原始文本内容。
  3. Text Splitter:将文本分割成更小的块,以便处理(因语言模型有输入长度限制)。
  4. Text Chunks:分割后的文本块,便于后续嵌入和检索。
  5. Embedding:调用嵌入模型将文本块转换为数值向量。
  6. Vector Store:向量数据库,用于存储文本嵌入向量。
  7. Vectors:实际存储的向量数据。
  8. Embedding:将用户查询转换为向量。
  9. Query Vector:查询向量数据库
  10. Vector Similarity:计算查询向量与存储向量的相似度,找到最相关的文本块。
  11. Related Text Chunks:基于相似度检索到的相关文本块。
  12. Prompt Template:创建提示模板,将查询和相关文本块组合成结构化提示,供语言模型使用。
  13. Prompt:填充向量数据库中查询到的信息和用户请求的问题到模板,生成完整提示词
  14. LLM:发送到提示词到大型语言模型。
  15. Answer:LLM根据提示生成最终答案。

3、介绍Agent

什么是LLM Agent? 大模型Agent是一种构建于大型语言模型(LLM)之上的能自主感知环境并采取行动实现目标的智能体。

Agent的核心决策逻辑是让LLM根据动态变化的环境信息选择执行具体行动或者作出判断,并影响环境,通过多轮迭代重复执行上述步骤,直到完成目标。

精简的决策流程: P(感知)→ P(规划)→ A(行动)

  1. 感知(Perception)是指Agent从环境中收集信息并从中提取相关知识的能力。
  2. 规划(Planning)是指Agent为了某一目标而作出的决策过程。
  3. 行动(Action)是指基于环境和规划做出的动作。

工程实现上可以拆分出四大块核心模块:推理、记忆、工具、行动,如下图所示

image-20250924234450893

对照中文版如下:

image-20250924234652884

一个数学公式来表示:

Agent = LLM + Memory + Tools + Planning + Action

LLM:大语言模型提供推理、规划和知识理解能力,是AI Agent的决策中枢。

Memmory:记忆机制,让智能体能够在处理工作时调用以前的记忆,避免大量重复交互

  • 短期记忆:存储单词对话的上下文信息,属于临时信息存储机制,受限于模型上下文窗口长度。

    ChatGPT:⽀持约8k token的上下⽂

    GPT4:⽀持约32k token的上下⽂

    最新的很多⼤模型:都⽀持100万、1000万 token的上下⽂ (相当于2000万字⽂本或20小时视频)

    ⼀般情况下模型中 token 和字数的换算⽐例⼤致如下:

    • 1个英文字符 ≈ 0.3个token
    • 1个中文字符 ≈ 0.6个token
  • 长期记忆 :可以横跨多个任务或时间周期,可存储并调用核心知识,非即时任务。

    长期记忆,可以通过 模型参数微调(固化知识) 、知识图谱(结构化语义网络) 或向量数据库 (相似性检索) 方式实现。

Tools:调用外部工具(如API、数据库)扩展能力边界。

Planning :通过任务分解、反思与自省框架实现复杂任务处理。例如,利用思维链 (Chain of Thought)将目标拆解为子任务,并通过反馈优化策略。

Action :实际执行决策的模块,涵盖软件接口操作(如自动订票)和物理交互(如机器人 执行搬运)。例如:检索、推理、编程等。

智能体会形成完整的计划流程。例如先读取以前⼯作的经验和记忆,之后规划⼦⽬标并使⽤相应⼯具去处理问题,最后输出给⽤⼾并完成反思。

4、大模型应用开发场景

4.1 prompt

Prompt是操作大模型的唯一接口

当人看:你说一句,ta回一句,你再说一句,ta再回一句...

image-20250925210125333

4.2 Agent + Function Calling

  • Agent:主动提需求

  • Function Calling:需要对接外部系统时,AI要求执行某个函数

  • 示例:我问大模型,【我明天要去杭州出差,要带伞吗?】,AI 通过 Function Calling 查询杭州明日天气,再回复我是否需要带伞。

image-20250925210427838

4.3 RAG

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

举例:开卷考试

image-20250925211231222

4.4 Fine-tuning(精调/微调)

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

image-20250925211600670

4.5 开发思路

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

image-20250925212102942

注意:其中最容易忽视的和重要的是准备测试数据。

5、LangChain 核心组件

5.1 Model I/O

Model I/O:标准化各个大模型的输入和输出,包含输入模板,模型本身和格式化输出。

以下是使用语言模型从输入到输出的基本流程。

Flowchart illustrating the Model I/O process with steps Format, Predict, and Parse, showing the transformation from input variables to structured output.

各个部分解释说明:

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

5.2 Chains

Chain:“链条”,用于将多个模块串联起来组成一个完整的流程,是LangChain框架中最重要的模块。

例如,一个 Chain 可以包括一个Prompt模板、一个语言模型和一个输出解释器,它们一起工作以处理用户输入、生成响应并处理输出。

常见的Chain类型:

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

5.3 Memory

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

常见的Memory类型:

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

5.4 Agents

Agents:智能体,是LangChain的高阶能力,它可以自主选择工具并规划执行步骤。

Agents的关键组成:

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

5.5 Retrieval

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

Illustrative diagram showing the data connection process with steps: Source, Load, Transform, Embed, Store, and Retrieve.

各个部分解释说明如下:

  • source:数据源,即大语言模型可以识别的数据:视频、文字、图片、代码和文档等等。
  • load:将不同数据源的非结构化数据加载成文档对象。
  • Transform:负责对加载的文档进行转换和处理,比如将文本拆分成具有实际意义的小块。
  • Embed:将文本编码为向量的能力。一种用于嵌入文档,两一种用于嵌入查询。
  • Store:将向量后的数据进行存储。
  • Retrieval:从大规模文本库中检索和查询相关的文本段落。

5.6 Callbacks

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

回调函数,对于程序员们应该并不陌生。这个函数允许我们在LLM的各个阶段使用各种各样的“钩子”,从而实现日志的记录、监控以及流式传输等功能。

上次更新: