【收藏必备】LangChain、LangGraph与LangSmith:大模型应用开发三大框架详解
本文详解了大模型开发核心框架LangChain(静态顺序工作流)和LangGraph(动态分支工作流)的区别与应用,并介绍LangSmith监控工具。同时探讨了RAG技术解决LLM知识局限性,MCP协议优化上下文管理,A2A实现Agent协作,以及分层记忆系统和知识图谱如何提升AI应用性能,为大模型开发提供全面技术指南。
前言
LangChain v.s. LangGraph
LangChain 和 LangGraph 出自于同一个团队,都被设计用于与 LLM 集成并协同工作,两者常被混淆。但顾名思义,两者有着显著的区别:
- LangChain(链条):静态顺序工作流,每个步骤都遵循预先定义的顺序。
- LangGraph(有向图):动态分支工作流,允许在每一步进行决策并选择分支。
显然,LangChain 和 LangGraph 有着不同的应用场景,LangChain 专注于提供组件和 LCEL(LangChain Expression Language)链式编程语法,适合简单的一次性任务;LangGraph 则是构建有状态 Agent 系统的理想选择。两者并不互斥,可以协同工作。例如:在 LangGraph 中的一个 Node 可以使用LangChain 来定义一系列步骤。
所以,在学习 LangGraph 前,建议先学习 LangChain 的基础知识。虽然使用 LangGraph 创建智能体或许不需要完全掌握 LangChain,但扎实掌握其基础知识肯定会有所帮助。
特性对比:应用场景对比:
LangChain
LangChain 是一个开发 LLM AI 应用程序的基础框架,封装并提供了各种常用的接口和工具,可以方便开发者快速调用并实现业务功能,加快开发速度。 官方手册:https://python.langchain.com/docs/introduction/
- 调用 LLM 的统一接口
- 搜索、文档处理、向量数据库处理等工具
- 链式调用(Chains)语法
- 记忆管理
- 提示词模版
- 等
LangChain 的 LCEL 语法示例:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
model = ChatOpenAI()
prompt = ChatPromptTemplate.from_template("请回答以下问题:{question}")
# LCEL 链式编排
chain = prompt | model
# 运行链
result = chain.invoke({"question": "什么是人工智能?"})
LangGraph
LangGraph 基于 LangChain 之上,是一个基更高级的 AI Agent 编排框架,可以处理复杂的 Workflow 编排和 Multi-Agent 编排。 官方手册:https://langchain-ai.github.io/langgraph/
- 图结构架构:支持条件分支、循环、并行、回溯等复杂的控制流。
- 状态管理:基于状态(State)的工作流处理,拥有强大的状态管理模块,确保上下文连续性。
- 检查点(Checkpoints)管理:支持人工介入二次检查
- 等
顾名思义,Lang(语言)+ Graph(图)= 用图结构组织 LLM AI 的思考流程。如下图所示。
值得注意的是 LangGraph 中的 State 机制。常规的 LLM 模型 API 调用不能维持多步骤的连续推理过程,每次对话都是独立的,不能记住之前的处理结果,也不能基于中间结果动态调整后续步骤。LangGraph State 正是为了解决这个问题,它将复杂任务分解成多个步骤,并记住每个步骤的结果。后续步骤可以访问前面步骤的结果和数据,并根据结果判断调整执行路径,最终完成整个任务链条。
在这里插入图片描述
LangGraph 的图结构编程示例:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
from langgraph.graph import StateGraph
from typing import TypedDict
class State(TypedDict):
messages: list
current_step: str
def node_a(state: State) -> State:
return {"messages": state["messages"] + ["处理A"], "current_step": "A"}
def node_b(state: State) -> State:
return {"messages": state["messages"] + ["处理B"], "current_step": "B"}
# 创建图结构
graph = StateGraph(State)
graph.add_node("node_a", node_a) # node
graph.add_node("node_b", node_b) # node
graph.add_edge("node_a", "node_b") # edge
执行模式对比:
LangSmith
LangSmith 是一个针对 Agent 和 LLM Call 之间的可视化监控、追踪、调试、测试和评估平台:
- Debugging:实时诊断 LLM 交互中的逻辑错误。高亮异常节点(如工具调用超时、JSON 解析失败),关联错误与代码位置(如提示词第 15 行格式错误)。
- Tracing:记录跨组件的完整调用链,例如:串联 LangGraph 节点调用、数据库查询、API 请求等。
- Monitoring:生产环境实时指标观测与告警,包括:请求量、延迟、错误率、Token 消耗分布、工具调用成功率等。
- Test & Evaluation:自动化测试,支持对不同的 Prompt、LLM 执行 A/B 测试并生成质量评估。
- Prompt & Optimisation:追踪每次 Prompt 的修改对结果输出的影响。 官方地址:https://www.langchain.com/langsmith

Agent-chat UI
Agent-chat UI 是 LangChain Ecosystem 中的一部分,帮助开发者快速搭建一个基于 AI Agent 的 Chat WebUI。 项目地址:https://github.com/langchain-ai/agent-chat-ui
RAG
RAG(Retrieval Augmented Generation,检索增强生成)最初用于解决 LLM 数据过时、幻觉和偏见问题,现今也常被用于注入私域知识。是 Agent 和 LLM 交互环节中的一个重要组成部分。
- 数据过时:LLM 的知识边界受限于过时的预训练数据。此外,LLM 版本迭代往往也是滞后的。
- 幻觉:当 LLM 遇到知识盲区时,会启动一种联想补全机制基于局部信息拼接出看似合理、实则虚构的内容,并自信的认为这是真实的。
- 私域知识:LLM 预训练数据来自于公域数据,并不包含企业内部的私域数据,所以也无法理解企业内部的私域知识。
请添加图片描述
RAG 是缓解或解决上述问题的良药,核心是 “动态知识注入机制”,提供了一个外部知识存储,在不修改 LLM 参数的前提下,通过 “外挂” 的形式为 LLM 补充 “实时、准确、私域” 的知识,拓宽了 LLM 的知识边界。
- 解决数据过时:RAG 外部知识存储具有实时性,输入 User Query 前会主动检索实时数据,再将其组合到上下文输入给 LLM。
- 缓解幻觉:RAG 外部知识存储具有准确性,LLM 返回结果之前会自动检索准确数据进行对比,降低 LLM 捏造虚假内容的概率。但实际上 RAG 无法完全杜绝幻觉问题。
- 解决私域知识:RAG 外部知识存储具有私域知识,输入 User Query 前会将私域知识输入给 LLM。
如下图所示,RAG 的核心流程有检索阶段、增强阶段和生成阶段。
MCP
Agentic AI 解决了 LLM 无法操作外部环境的问题,RAG 解决了 LLM 知识边界固化的问题,使得 LLM 应用的潜力得到了极大的扩展。而 Anthropic 于 2024 年 11 月推出的 MCP(Model Context Protocol,模型上下文协议)则是为了解决 LLM 上下文的局限性问题,包括:
- 长上下文传输瓶颈:传统 JSON 格式输入 10K token 的上下文到 LLM 需 500ms+,而 MCP 压缩后仅需 20ms。
- 动态更新低效:局部更新(如新增对话)需重传全量上下文到 LLM,而 MCP 支持增量更新。
- 多模型协同障碍:MCP C/S 是与 LLM 解耦的,LLM-A 的输出作为 LLM-B 的输入需序列化转换,因为 MCP 提供了标准化上下文协议容器字段。例如:创建一个与 GitHub 交互的 MCP Server 时,任何支持 MCP 的 LLM 应用程序都可以使用它。
- 标准化扩展性差:在软件工程层面标准化 Agentic AI 和 RAG 的实现方式,使得 LLM 应用系统能够在一个标准化的协议之上进行构建,继而实现 LLM 应用的可扩展性、稳定性和深度上下文感知。
MCP 最大的特点是能够让 LLM 统一调用各种外部工具或数据源,不再需要为每一个工具单独写适配代码。带来了以下好处:
- 标准化交互:确保 Agentic AI 能够轻松集成和扩展其功能,纳入新工具、API 或服务。
- 降低开发复杂性:通过抽象化交互逻辑,减少代理开发的复杂性,使开发者能够专注于增强核心代理功能。
- 促进集体智能:通过标准化通信渠道共享见解和协调行动,使分布式 Agentic AI 系统能够实现单一架构无法实现的结果。
MCP 结构
- MCP Host:LLM 应用及其运行环境,例如:ChatBot、AI IDE、AI Agent 等。
- MCP Client:运行在 LLM 应用内的、和 MCP Server 一一对应的、向 MCP Server 发出请求的 Client 模块。
- MCP Server:作为 MCP Client 和 Real Service 之间的桥梁,左边接受 MCP Client 的请求,右边将请求翻译并转发到后端的 Real Service,例如:API、DB、File、SSE、Internet 等等。
- Local Resources:运行在 MCP Host 本地的工具或数据。
- Remote Resources:云端或在线可访问的远程服务。
MCP 的 Transport Layer 采用了 JSON-RPC 结构化通信协议,支持多种消息类型:
- Stdio(标准输入输出)
- HTTP over SSE(服务器推送事件流)
- 自定义实现
在这里插入图片描述
MCP 运行流程
MCP 应用示例
- 使用 LLM 应用总结代码库中最近的 5 次提交。MCP Host with Client 首先调用 MCP Server,询问有哪些可用的 Tools List。
- 然后 MCP Host 将这些 Tools 输入到 LLM。LLM 接收到这些信息后,会选择使用某个工具。然后 MCP Host 再向 MCP Server 发送具体某个工具的使用请求,并收到工具执行结果。
- 最后,MCP Host 将工具执行结果输入到 LLM。LLM 返回最终的响应结果给用户。
A2A
A2A(Agent2Agent Protocol)由 Google 在 2025 年 4 月提出,专注于 AI Agent 之间能够进行通信、协作和任务委托,并以结构化格式返回结果。支持异步工作流和多模态交互。通过 A2A 协议,Agents 之间可以了解彼此的技能,并完成任务的委托。
- MCP 赋予智能体 “操作世界” 的能力。
- A2A 赋予智能体 “协作彼此” 的能力。
在这里插入图片描述
A2A 结构
在这里插入图片描述
A2A 协议:基于 HTTP/S JSON-RPC 2.0 传输协议,符合 Web 原生的安全协议设计。
A2A Client:作为 Client 角色的 Agent,通过其他 A2A Server 的 Agent Cart 进行发现,并通过委托 Task 让其他 A2A Server 帮助自己完成可完成的任务。它向 A2A Server 的 URL 发送请求,如:tasks/send。
A2A Server:一个实现了 A2A 协议的 HTTP Endpoint,通过 Agent Card 对外进行发布,用于接收请求并管理任务执行。
Agent Card:是 A2S Server 的名片,JSON 格式,用于介绍 Agent 的名称、版本、能力描述、访问 Endpoint URL、支持的消息类型、身份认证方式、运行时 Metadata、供应商等信息。
Task:是 A2A Client 委托 A2A Server 执行的一个任务对象。Client 通过发送 Message(如 tasks/send 或 tasks/sendSubscribe)委托一个 Task。拥有唯一 ID 和 Stateful 状态机(如 submitted、working、input-required、completed、failed、canceled)。
Message:是 A2A 协议的消息体,A2A Client(role: “user”)与 A2A Server(role: “agent”)之间交互信息单元,由多个 Part 组成。A2A 协议建立时,Client 和 Server 之间会协商消息格式、内容粒度和可视化等机制。
Part(消息体部分):多个 Parts 组成一个 Message,可细分为 TextPart、FilePart、DataPart(结构化 JSON)等富媒体信息交换类型。
Push Notifications:A2A Server 执行 Task 的过程中会主动向 A2A Client 提供的 webhook URL 推送通知,该 URL 可通过 tasks/pushNotification/set 进行配置。
Artifact:中间产物流式处理。对于长时间运行的 Task,A2A Server 在过程中生产的持久化产物,A2A Client 从 Artifact 获取任务更新数据。例如:生成的文件或结构化数据。
Streaming:实时反馈流式处理。对于支持流式传输的 A2A Server,A2A Client 可使用 tasks/sendSubscribe 进行调用,然后接收到包含 TaskStatusUpdateEvent 或 TaskArtifactUpdateEvent 的 Server-Sent Events(SSE),以获取实时进度。
A2A 工作流程
A2A 的典型应用场景是 Multi-Agent 软件架构,以及对来自不同团队或供应商的 Agents 进行安全互操作,形成跨平台的智能体生态系统。
- 发现对方:Client 从 Server 的 well‑known URL(例如 https://DOMAIN/.well-known/agent.json)获取 Agent Card。
- 任务委托:Client 发送包含 Client Infos 和 Task ID 的 tasks/send 或 tasks/sendSubscribe 请求。
- 任务处理:
- 非流式处理:Server 同步处理任务,并在 HTTP Resp 中返回最终的 Task 对象。
- 流式处理:Server 在任务过程中,通过 SSE 发送状态更新或 Artifact 更新事件。
- 交互(可选):如果 Task 进入 input-required 状态,Client 可使用相同的 Task ID,通过 tasks/send 或 tasks/sendSubscribe 发送后续消息以提供所需输入。
- 完成:Task 最终达到终止状态之一,包括:completed、failed 或 canceled。
分层记忆系统
目前关于 AI 记忆系统的研究尚未形成统一清晰的框架,特别是缺乏对记忆机制底层原子操作的系统化理解。以下通用架构图基于现有 AI Agent 记忆系统的主流设计模式,综合参考了 MemoryOS、Mem0、LangChain Memory 等系统的架构特点,以及相关学术研究中的理论框架。
- 多策略检索:结合语义检索、关键词匹配和图关系查询,从三层记忆中检索相关信息。
- 短期记忆:存储会话缓存、对话历史和临时状态,支持快速访问和上下文连续性。
- 中期记忆:维护向量索引、语义搜索和时序索引,实现高效的语义检索和时间序列分析。
- 长期记忆:管理知识图谱、实体关系和规则库,建立持久化的知识体系和推理规则。
- 智能记忆更新:通过增量更新、智能摘要、去重合并和分层存储,动态更新三层记忆。
在这里插入图片描述
Context Engineering
Context Engineering 是 Prompt Engineering 和 In-context Learning 的演进方向。
- Prompt Engineering(提示工程):通过设计过的、结构化的 Prompt 让 LLM 准确理解用户意图,并生成期望的输出。
- In-Context Learning(上下文学习):通过在 Prompt 中注入设计过的 Context 供 LLM 学习,而无需更新 LLM 的权重(不进行微调),最终让 LLM 能够生成期望的输出。
- 零样本学习(Zero-shot Learning):默认的,不提供任务示例,仅靠指令和 LLM 预训练知识进行推理。
- 少样本学习(Few-shot Learning):在 Prompt 中提供少量(e.g. 2~5 个)任务示例,引导 LLM 进行模仿,继而输出与示例相似的结果。
可见,Prompt Engineering 是应用 In-context Learning 的前提,两者有共同的目标,并且具有都是针对某个问题的、静态的、一次性的等共同特性,所以在 Chat 场景中表现良好。但在追求自主智能的 Agent 场景中,有着以下不足:
- 复杂度高:Agent 场景涉及数十上百个步骤,需要编写大量的静态 Prompt 费时费力。
- 适用性差:在长对话或多步骤任务中,目标和环境会不断演变。静态 Prompt 并不一定适用。
- 持续性差:长期运行会产生海量历史信息,无法全部放入有限上下文窗口。
简而言之,PE 和 ICL 本质上是 “静态” 的,它们无法适应长期运行(Long Run)的自主任务(Autonomous)中不断变化的环境和状态。Context Engineering 在 PE 和 ICL 的基础之上,提出了一种 “动态地” 为长对话/多步骤任务提供完整背景信息的思路。即:根据对话/任务的当前状态和变化,动态地构建最相关的、最有效的 Context Window(上下文窗口)。
在这里插入图片描述
实现 Context Engineering 的关键技术:
- RAG(检索增强生成):检索到的信息动态注入上下文,为模型提供最新、准确、具体的背景知识,解决模型知识陈旧和幻觉问题。
- 工具调用(Tool Calling / Function Calling):将工具调用的输入请求和返回结果动态地整合进上下文,极大地扩展了模型的能力边界,使其能处理实时数据、执行具体操作。
- 智能体记忆系统(Agent Memory):根据当前任务需求,从记忆库中动态检索并注入最相关的历史片段,维持智能体的连贯性和个性化。
例如,智能客服系统不仅能记住你 “昨天咨询过退货政策”,还能结合 “你是 VIP 用户”、“购买商品未满 7 天” 等信息,直接给出 “退货免运费” 的解决方案,无需重复解释。上下文工程需要处理动态变化的信息网络,包含三个层级:
- 即时信息:当前用户的输入内容,如 “我想退这个商品”。
- 历史信息:用户过去的交互记录,如 “3 天前购买,未拆封”。
- 外部信息:与场景相关的系统数据,如 “该商品支持 7 天无理由退货”、“用户是 VIP,免退货费”。
这些信息并非静态存储,而是需要通过 RAG、Tools、Memory 来获取并形成动态上下文信息。
在这里插入图片描述
Context Engineering 的终极目标不仅是构建数据上下文,甚至能实现指令上下文的动态优化,推动智能体向自适应性(Self-adaptive)和自我改进(Self-improvement)演进:
- 动态 Prompt 内容或策略调整:基于任务进展、用户反馈或观察,智能地调整后续步骤的 Prompt 内容或策略。例如:
- 内容:发现模型输出冗长时,自动在后续 Prompt 中加入 “请简洁回答” 的要求。
- 策略:在解决复杂推理问题时,根据中间步骤的成败动态切换不同的策略,如 CoT 切换到 ToT。
- 自我改进的实现:
- PromptWizard 等框架:让 LLM 基于自身输出结果进行 “自我批评”,生成改进建议,并迭代优化提示。实现 Prompt 的自动优化。
- Promptbreeder 等技术:采用进化算法,让 Prompt 在代际更替中不断优化(“自我参照”),在数学推理等任务上显著超越静态提示方法。
- 记忆驱动的优化:分析长期记忆中的成功/失败案例,自动总结出更有效的提示模板或行动策略。
在这里插入图片描述
知识图谱
虽然长上下文窗口、向量数据库、RAG 等技术可以提供基于语义的检索能找到语义相似的内容,在某些领域足以作为 Agent 记忆模块优选。但由于检索到的这些知识不具有关联关系特征,所以在对实体关系紧密的复杂推理场景中,就存在着精准性、推理性和可解释性上存在不足。例如:法律合同场景,对人物、时间、地点、观点、案件情景具有密切的关系。
对此,知识图谱可以通过建模实体及其关系,继而提供精准、可解释、覆盖全面的上下文工程,使得 LLM 拥有更接近人类认知模式:
- 作者与情境:明确 “谁说了什么,何时何地”。
- 动态结构:可随新信息快速更新关系网络。
- 可解释性与覆盖面:推理路径透明且可持续优化。
更具体的。我们常结合 RAG 来实现一个长记忆系统,但也有认为 RAG 记忆系统存在缺陷的观点,例如:
- 传统 RAG 系统本质上是一个文档馆,它假设知识是固定不变的,这在处理动态业务场景时就显得力不从心了。
- 当新信息与旧信息发生冲突时,RAG 系统无法智能地判断哪个更可信,往往会把矛盾的信息一股脑儿返回给用户。
- RAG 缺乏时间维度的理解让系统无法区分用户去年的偏好和用户现在的需求,导致推荐结果偏离实际情况。
Zep 是一个具有时间特性的知识图谱软件。Graphiti 是 Zep 记忆层背后的技术,它是一个开源的库,能够构建动态的、具有时间意识的知识图谱,用以表示实体之间复杂且不断变化的关系。它采用了一个巧妙的三层知识图谱架构来解决传统 RAG 的痛点,如下图所示:
- Episode 子图:完整地存储原始对话、文本或 JSON 数据,不丢失任何信息。
- Semantic Entity 子图:从原始数据中提取实体和关系。利用实体解析技术,将新旧信息有机地整合在一起。
- Community 子图:通过标签传播算法对相关实体进行聚类。形成高层次的概念理解。
这种架构设计使得 Zep 系统既能保留细节信息,又能进行抽象推理。
最后
为什么要学AI大模型
当下,⼈⼯智能市场迎来了爆发期,并逐渐进⼊以⼈⼯通⽤智能(AGI)为主导的新时代。企业纷纷官宣“ AI+ ”战略,为新兴技术⼈才创造丰富的就业机会,⼈才缺⼝将达 400 万!
DeepSeek问世以来,生成式AI和大模型技术爆发式增长,让很多岗位重新成了炙手可热的新星,岗位薪资远超很多后端岗位,在程序员中稳居前列。
与此同时AI与各行各业深度融合,飞速发展,成为炙手可热的新风口,企业非常需要了解AI、懂AI、会用AI的员工,纷纷开出高薪招聘AI大模型相关岗位。
最近很多程序员朋友都已经学习或者准备学习 AI 大模型,后台也经常会有小伙伴咨询学习路线和学习资料,我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师给大家这里给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频 全系列的学习资料,这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】

AI大模型系统学习路线
在面对AI大模型开发领域的复杂与深入,精准学习显得尤为重要。一份系统的技术路线图,不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点,还能提供一条高效、有序的学习路径。
但知道是一回事,做又是另一回事,初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性,在这基础上,找到高质量的学习资源,不浪费时间、不走弯路,又是重中之重。
AI大模型入门到实战的视频教程+项目包
看视频学习是一种高效、直观、灵活且富有吸引力的学习方式,可以更直观地展示过程,能有效提升学习兴趣和理解力,是现在获取知识的重要途径
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
海量AI大模型必读的经典书籍(PDF)
阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
600+AI大模型报告(实时更新)
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
AI大模型面试真题+答案解析
我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】

更多推荐
所有评论(0)