LangChain使用概述

1、介绍LangChain

1.1 什么是LangChain

  • LangChain是2022年10月,由哈佛大学的Harrison Chase(哈里森·蔡斯)发起研发的一个开源框架,用于开发由大语言模型(LLMs)驱动的应用程序。

    • 比如,搭建“智能体”(Agent)、问答系统(QA)、对话机器人、文档搜索系统等。
    • LangChain的发布比ChatGPT问世还要早一个月,他那时候是怎么发现大模型要火的?
    • 从这个启动日期也可以看出创始人的眼光,这比ChatGPT问世还要早一个月呢,他那时候是怎么发现大模型要火的?占了先机的它迅速获得广泛关注和支持!
  • 官方文档:https://github.com/langchain-ai/langchain

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

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

1.2 大模型应用开发框架

  • 截止到2025年7月26日,GitHub统计数据:

    • 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)、多轮推理等功能。

  • 大模型默认不能联网,如果需要联网,用langchain。

  • LangChain 为更方便解决这些问题,而生的。

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

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

  • 但使用LangChain的好处:

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

      开发人员可以更专注于业务逻辑,而无须花费大量时间和精力处理底层技术细节。

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

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

      你做过GPT或GLM4的API做过项目以后,你再用langchain会更有感觉。

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

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

1.4 LangChain的使用场景

  • 学完LangChain,如下类型的项目,大家都可以实现:

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

  • 比如:万象知识库

  • 比如:京东助手

  • LangChain的位置

1.5 LangChain资料介绍

1.6 架构设计

1.6.1 总体架构图

  • V0.1版本

  • V0.2 / V0.3 版本

    • 图中展示了LangChain生态系统的主要组件及其分类,分为三个层次:架构(Architecture)、组件(Components)和部署(Deployment)。
      • 最底层是架构部分,包括LangChain和LangGraph,它们均开源(OSS)。
      • 中间层是组件部分,标注为开源(OSS)的Integrations模块,负责与外部工具或服务集成,例如与API、数据库或第三方模型交互,支持灵活扩展与适配。
      • 最顶层是部署部分,包括LangGraph Cloud和LangSmith。其中:LangGraph Cloud是商业化的云端解决方案,支持跨平台部署与管理,LangSmith后面介绍。

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

1.6.2 内部架构详情

结构1:LangChain

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

  • langchain-community:第三方集成

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

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

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

    LangChain:就是封装了一堆的API。langchain框架不大,但是里面琐碎的知识点特别多。

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

结构2:LangGraph

  • https://langchain-ai.github.io/langgraph/concepts/why-langgraph/

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

    LangGraph:可以看做基于LangChain的api的进一步封装,可以实现更高级的功能。未来会单拿出来。

结构3:LangSmith

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

  • 链路追踪。提供调试、交互式测试环境、评估和监控 LLM 应用程序等功能,便于持续优化,帮助你从原型阶段过渡到生产阶段。 与LangChain无缝集成

    起到运维或监控的功能。(可视化的监控一些指标)

    正是因为LangSmith这样的工具出现,才使得LangChain意义更大,要不仅靠一些API(当然也可以不用,用原生的API),支持不住LangChain的热度。

结构4:LangServe

  • http://www.aidoczh.com/langchain/v0.2/docs/langserve/

  • 将LangChain的可运行项和链部署为REST API,使得它们可以通过网络进行调用。

    Java怎么调用langchain呢?就通过这个langserve。将langchain应用包装成一个rest api,对外暴露服务。同时,支持更高的并发,稳定性更好。

    langserve做部署,不用它的话,我们也可以自己搞定,所以重要性也就那样。

总结

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

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

2、大模型应用开发

  • 大模型应用技术特点:门槛低,天花板高。

2.1 基于RAG架构的开发

  • 背景:

    • 大模型的知识冻结
    • 大模型幻觉

    随着 LLM 规模扩大,训练成本与周期相应增加。因此,包含最新信息的数据难以融入模型训练过程,无法及时反映最新的信息或动态变化。导致 LLM 在应对诸如“请推荐当前热门影片”等时间敏感性问题。

  • 举例:LLM在考试的时候面对陌生的领域,答复能力有限,然后就准备放飞自我了,而此时RAG给了一些提示和思路,让LLM懂了开始往这个提示的方向做,最终考试的正确率从60%到了90%!

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

    检索-增强-生成过程:检索可以理解为第10步,增强理解为第13步(这里的提示词包含检索到的数据),生成理解为第15步。

    • 原始数据处理后得到的文件比较大,不利于检索,需要切割成一小片一小片的知识点。接着对这些知识进行向量化,向量化以后存储到向量数据库。
    • 检索算法,比如有向量相似度算法。
    • 从向量数据库检出的数据会存在噪声,会有一些与答案没关的内容。我们需要用重排序的算法,对知识进行整理,生成的新的chunks,结合原有的Prompt,封装成新的提示词,给到大模型,产生最后答案。
    • 这些过程中的难点:1、文件解析 2、文件切割 3、知识检索 4、知识重排序
      • 文件解析:如果是pdf,内部包含文件、图片、表格,图片上还有文字,需要处理。
      • 文件切割:没有固定的格式
      • 在 RAG 应用中,随着文档数量增加,召回准确率会下降,引入reranker(重排器)可对初步召回的较多 chunk(如 top 20 或 top 50)进行精排,提高召回准确率,防止LLM 处理无关信息,减少时间和成本。
    • 此外,与基于基本矢量搜索的 RAG 相比,reranker增强型 RAG 的成本更高,但与仅依靠LLM 生成答案相比,它的成本低些。
    • 这里有三个位置涉及到大模型的使用:
      • 第3步向量化时,需要使用EmbeddingModels。
      • 第7步重排序时,需要使用RerankModels。
      • 第9步生成答案时,需要使用LLM。
    • Reranker的使用场景:
      • 适合:追求回答高精度高相关性的场景中特别适合使用 Reranker,例如专业知识库或者客服系统等应用。
      • 不适合:引入reranker会增加召回时间,增加检索延迟。服务对响应时间要求高时,使用reranker可能不合适。

2.2 基于Agent架构的开发

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

  • 举例:传统的程序 vs Agent

  • OpenAI的元老翁丽莲(Lilian Weng)于2023年6月在个人博客首次提出了现代AI Agent架构。

  • 一个数学公式来表示:Agent = LLM + Memory + Tools + Planning + Action

    比如,打车到西藏玩。

    • 大脑中枢:规划行程的你

    • 规划:步骤1:规划打车路线,步骤2:定饭店、酒店,。。。

    • 调用工具:调用MCP或FunctionCalling等API,滴滴打车、携程、美团订酒店饭店

    • 记忆能力:沟通时,要知道上下文。比如定酒店得知道是西藏路上的酒店,不能聊着聊着忘了最初的目的。

    • 能够执行上述操作。说走就走,不能纸上谈兵。

  • 智能体核心要素被细化为以下模块:

    • 大模型(LLM)作为“大脑”:提供推理、规划和知识理解能力,是AI Agent的决策中枢。

      大脑主要由一个大型语言模型 LLM 组成,承担着信息处理和决策等功能, 并可以呈现推理和规划的过程,能很好地应对未知任务。

    • 记忆(Memory)

      智能体像人类一样,能留存学到的知识以及交互习惯等,这样的机制能让智能体在处理重复工作时调用以前的经验,从而避免用户进行大量重复交互。

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

        ChatGPT:支持约8k token的上下文

        GPT4:支持约32k token的上下文

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

        1个Token对应约1.5-1.8个汉字。例如,若中文文本包含1000个汉字,则对应约1500-1800个Token。

      • 长期记忆:可以横跨多个任务或时间周期,可存储并调用核心知识,非即时任务。

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

      以人作类比:

      • 短期记忆:在进行心算时临时记住几个数字
      • 长期记忆:学会骑自行车后,多年后再次骑起来时仍能掌握这项技能
    • 工具使用(Tool Use):调用外部工具(如API、数据库)扩展能力边界。

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

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

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

2.3 大模型应用开发的4个场景

场景1:纯 Prompt

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

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

    image-20250927134114881

场景2:Agent + Function Calling

  • Agent:AI 主动提要求
  • Function Calling:需要对接外部系统时,AI 要求执行某个函数
  • 当人看:你问 ta「我明天去杭州出差,要带伞吗?」,ta 让你先看天气预报,你看了告诉ta,ta 再告诉你要不要带伞

场景3:RAG (Retrieval-Augmented Generation)

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

    • Embeddings:把文字转换为更易于相似度计算的编码。这种编码叫向量

    • 向量数据库:把向量存起来,方便查找

    • 向量搜索:根据输入向量,找到最相似的向量

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

    这个在智能客服上用的最广泛。

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

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

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

如何选择

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

  • 注意:其中最容易被忽略的,是准备测试数据

  • 下面,我们重点介绍下大模型应用的开发两类:基于RAG的架构,基于Agent的架构。

3、LangChain的核心组件

  • 学习Langchain最简单直接的方法就是阅读官方文档:https://python.langchain.com/v0.1/docs/modules/

  • 通过文档目录我们可以看到,Langchain构成的核心组件。

  • 两个红框内容是核心。中间的Integrations:集成各种工具或云平台。

3.1 一个问题引发的思考

  • 如果要组织一个AI应用,开发者一般需要什么?
    • 第1,提示词模板的构建,不仅仅只包含用户输入。
    • 第2,模型调用与返回,参数设置,返回内容的格式化输出。
    • 第3,知识库查询,这里会包含文档加载,切割,以及转化为词嵌入(Embedding)向量。
    • 第4,其他第三方工具调用,一般包含天气查询、Google搜索、一些自定义的接口能力调用。
    • 第5,记忆获取,每一个对话都有上下文,在开启对话之前总得获取到之前的上下文吧?

3.2 核心组件的概述

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

3.3 核心组件的说明

核心组件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:Agents

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

  • Agent 的关键组成:

    • AgentType:定义决策逻辑的工作流模式

    • Tool:是一些内置的功能模块,如API调用、搜索引擎、文本处理、数据查询等工具。Agents通过这些工具来执行特定的功能。

    • AgentExecutor:用来运行智能体并执行其决策的工具,负责协调智能体的决策和实际的工具执行。

目前最热门的智能体开发实践,未来能够真正实现通用人工智能的落地方案。

这里的Agent,就会涉及到前面讲的memory,以及tools。

核心组件5:Retrieval

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

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

    绿色的是入库存储前的操作。

核心组件6:Callbacks

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

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

3.4 小结

  • Model I/O模块:使用最多,也最简单

  • Chains 模块: 最重要的模块

  • Retrieval模块、Agents模块:大模型的主要落地场景

  • 在这个基础上,其它组件要么是它们的辅助,要么只是完成常规应用程序的任务。

    辅助:比如,向量数据库的分块和嵌入,用于追踪、观测的Callbacks

    任务:比如,Tools,Memory

  • 下图展示了一个由LangChain Agent驱动的典型的大模型系统设计架构。

    上图所示的架构中,用户通过服务器提供提示(Prompt),系统则通过索引(Indexes,也就是Retrieval)检索信息。这些信息被用来更新系统的记忆(Memory),为处理用户的输入提供上下文。

    系统核心是模型(Model),其中包括一个大模型,可能是用于理解和生成语言的AI。大模型通过链(Chains)与其他模型相连,这可能意味着不同模型之间的信息流动和合作。

    在系统底部,多个Agent负责执行具体任务。它们可以完成不同的操作,并且可以独立工作。每个Agent都可能代表系统中的一个功能模块或服务。

    用户的提示被模型处理后,系统产生输出(Output),并可能通过回调(Callbacks)触发额外的动作或处理,这通常用于处理异步事件或在满足某些条件时执行特定的函数。

    整个过程形成了一个从输入到输出的循环,涉及信息检索、记忆更新、模型处理和动作执行,最终达到响应用户请求的目的。