55-LangChain核心概念-Chain-Agent-Tool-Memory关系
文章目录
【55.Python+AI】LangChain核心概念一张图讲透:Chain、Agent、Tool、Memory的关系
📖 文章简介: 本文用一张Mermaid架构图串讲LangChain的核心抽象——Chain(工作流编排)、Agent(自主决策)、Tool(外部能力)、Memory(上下文持久化)以及它们之间的协作关系。内容深挖Runnable接口与LCEL表达式语言的底层设计,对比"用LangChain"和"自己写"的边界选择,帮你在框架依赖和灵活性之间找到平衡。适合已经用LangChain搭过简单应用、想系统性理解框架设计的开发者。

🎬 个人主页: 源码骑士
❄ 专栏传送门: 《Android开发基础》《python基础课程》
⭐️热衷从源码视角拆解技术底层原理,将复杂架构讲得通俗易懂
🎬 源码骑士的简介:5年Android Framework系统开发经验,曾主导多项系统级性能优化专项
技术栈覆盖Android系统全链路(Binder/Handler/AMS/WMS/启动流程)及Java后端全家桶(Spring + MyBatis + Redis + Oracle)
累计产出原创技术文章100+篇,文章以流程图为特色,被读者评价为"看一篇胜过啃一周源码"
导入语
你用LangChain搭了RAG、做了Agent、接了Memory。但脑子里可能还是乱的——Chain和Agent到底什么关系?Tool是Agent专用的吗?Memory存在哪?LCEL这个奇怪的|管道符又是什么?
这篇文章的目标就是一张图+逐层拆解,让你对LangChain的四个核心抽象建立清晰的心智模型。理解了它们之间的关系,你就不再是"抄代码",而是"自己设计工作流"。
1 ~> 四大核心抽象关系图
2 ~> 逐层拆解
Chain:LangChain的骨架
# 最简单的Chain:用LCEL管道符组合
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
llm = ChatOpenAI()
prompt = ChatPromptTemplate.from_template("翻译成英文:{text}")
# LCEL语法:用 | 串联每一步
chain = prompt | llm
result = chain.invoke({"text": "你好世界"})
# 数据流:{"text":"你好世界"} → Prompt填充 → LLM生成 → 返回结果
Chain的本质: 把多个Runnable对象用|串联起来,形成一个数据处理流水线。每个Runnable都实现.invoke()方法,所以Chain本身也是一个Runnable——Chain可以嵌套Chain。
Agent:当Chain不够用了
Chain vs Agent的区别:
├─ Chain:事先知道要做什么、怎么做(固定流程)
│ └─ 适用场景:检索→拼Prompt→回答(流程固定)
└─ Agent:不知道"怎么做",让LLM自己决定
└─ 适用场景:"帮我查天气+发邮件+订会议室"(步骤不确定)
Agent本质上就是在Chain外面加了一个决策循环——它调用LLM决定下一步做什么,执行对应的Tool,把结果反馈给LLM,LLM再决定下一步……直到任务完成。
Tool:Agent的"手和脚"
Tool就是被Agent调用的外部函数。一个搜索Tool、一个数据库查询Tool、一个代码执行Tool——每个Tool都是一个被Agent"使唤"的能力模块。
Memory:跨越时间的记忆
Memory的三种形态:
├─ BufferMemory:完整保存所有对话(Token消耗大)
├─ SummaryMemory:用LLM压缩历史对话为摘要(省Token)
└─ WindowMemory:只保留最近K轮(折中方案)
3 ~> 什么时候该用LangChain,什么时候自己写
| 场景 | 建议 | 原因 |
|---|---|---|
| 简单Prompt→LLM→返回 | 自己写(直接用OpenAI SDK) | LangChain反而增加复杂度 |
| 文档加载→分块→向量化→检索→生成 | LangChain | 四大步每步都有封装好的组件 |
| 多步骤Agent循环 | LangChain + LangGraph | 状态管理、循环控制自己写容易出bug |
| 带复杂条件分支的工作流 | LangGraph | 状态图建模比手写if-else可靠 |
思考 && 总结
- Chain是骨架,Agent是大脑,Tool是手脚,Memory是记忆: 四个抽象覆盖了AI应用从简单到复杂的全部需求。
- LCEL让Chain的定义像Unix管道一样自然:
step1 | step2 | step3的写法比面向对象的链式调用更直观。 - Agent = LLM驱动的决策循环: 它不是"更高级的Chain",而是一个完全不同的范式——LLM决定做什么、什么时候停。
- 不要为了用而用LangChain: 一个简单API调用不需要LangChain。框架的价值在复杂工作流和组件生态。
理解这些抽象的关系,你就从"LangChain使用者"变成了"AI工作流设计者"。
结尾
各位小伙伴,本文完!源码骑士 — Android Framework & 全栈开发
👀 关注 | ❤️ 点赞 | ⭐ 收藏 | 💬 评论 | 🔄 一键四连!🗡️ 寄语:框架是手段不是目的——理解框架的设计哲学比会调API更重要。
往期回顾:【Python+AI】企业知识库实战 / 【Python+AI】RAG评估体系 / 【Python+AI】多模态RAG / 【Python+AI】Self-Querying / 【Python+AI】检索策略进阶
更多推荐
所有评论(0)