二阶段:系统性掌握 LangChain 的核心概念体系
需要意识到:零散学习概念 ≠ 构建能力。
我们需要的不是“知道这些词”,而是“理解它们如何构成一个系统”。
🎯 目标
在 4 周内,通过刻意练习和渐进式学习,系统性掌握 LangChain 的核心概念体系,能够独立设计并实现一个具备记忆、检索、工具调用和评估能力的 AI 应用。
我们将所有概念组织成 6 个核心模块,形成一个 从基础到高阶、从组件到系统 的学习路径。
🧩 模块化学习路径:LangChain 概念系统图谱
📚 模块 1:核心运行机制(The Engine)
可运行接口 + LCEL + 回调 + 追踪
🎯 学习目标
理解 LangChain 的“运行时引擎”——所有组件如何被统一调度和编排。
🔗 核心概念
可运行接口
(Runnable)LangChain 表达式语言
(LCEL)回调
(Callbacks)追踪
(Tracing)流式传输
(Streaming)异步编程
(Async)
🔄 刻意练习任务(渐进式)
- 复现:写一个
prompt | model | parser
链。 - 扩展:添加
.stream()
和.astream()
,观察输出差异。 - 注入:添加自定义
CallbackHandler
,打印on_llm_start/end
。 - 追踪:启用
LANGCHAIN_TRACING_V2
,在 LangSmith 查看 trace。 - 破坏:故意在链中插入
RunnableLambda(lambda x: 1/0)
,观察错误传播。
✅ 成果:你能解释
Runnable
的invoke/stream/batch
是如何统一调度的。
📚 模块 2:模型与输入输出(The Brain)
聊天模型 + 消息 + 提示 + 结构化输出
🎯 学习目标
掌握如何“喂给模型正确的输入”并“解析出想要的输出”。
🔗 核心概念
聊天模型
(ChatModel)消息
(Message)聊天历史
(Chat History)提示模板
(PromptTemplate)少样本提示
(Few-shot Prompting)示例选择器
(ExampleSelector)结构化输出
(Structured Output)输出解析器
(OutputParser)
🔄 刻意练习任务(渐进式)
- 构建:用
ChatPromptTemplate
创建一个带SystemMessage
和HumanMessage
的模板。 - 增强:加入 2 个
few-shot examples
,使用FewShotPromptTemplate
。 - 动态:使用
SemanticSimilarityExampleSelector
根据用户输入自动选择最相关的示例。 - 结构化:让模型输出 JSON,使用
JsonOutputParser
或model.with_structured_output(schema)
。 - 对比:比较“用 OutputParser 解析自由文本” vs “用 structured_output 强制格式”的稳定性。
✅ 成果:你能设计一个高鲁棒性的提示系统,支持动态示例和结构化输出。
📚 模块 3:记忆与上下文管理(The Memory)
对话状态持久化
🎯 学习目标
让 AI “记住”之前的对话,实现多轮交互。
🔗 核心概念
内存
(Memory)聊天历史
(Chat History)对话缓冲区
(ConversationBufferMemory)对话摘要
(ConversationSummaryMemory)实体记忆
(EntityMemory)
🔄 刻意练习任务(渐进式)
- 简单记忆:使用
ConversationBufferMemory
实现“记住上一条消息”。 - 持久化:将
chat_history
存入InMemoryChatMessageHistory
或Redis
。 - 压缩:使用
ConversationSummaryBufferMemory
,当上下文过长时自动摘要。 - 实体感知:使用
ConversationEntityMemory
,让模型记住用户提到的“人物”、“地点”。 - 集成:将记忆系统接入模块 2 的链中,实现“带记忆的问答”。
✅ 成果:你能构建一个支持长对话、自动摘要、实体记忆的聊天机器人。
📚 模块 4:知识增强(The Knowledge)
RAG:让 AI 知道它不知道的事
🎯 学习目标
构建一个能从外部知识库中检索信息并生成答案的系统。
🔗 核心概念
文档加载器
(Document Loaders)文本分割器
(Text Splitters)嵌入模型
(Embedding Models)向量存储
(Vector Stores)检索器
(Retrievers)检索增强生成
(RAG)多模态
(Multimodal - 可选扩展)
🔄 刻意练习任务(渐进式)
- 加载:用
WebBaseLoader
加载一个网页,或PyPDFLoader
加载 PDF。 - 分割:用
RecursiveCharacterTextSplitter
将文档切块。 - 嵌入:用
OpenAIEmbeddings
生成向量。 - 存储:存入
FAISS
或Chroma
。 - 检索:创建
VectorStoreRetriever
,测试similarity_search
。 - RAG 链:构建
retriever | prompt | model | parser
链。 - 优化:尝试
ContextualCompressionRetriever
或MultiQueryRetriever
。
✅ 成果:你能构建一个“基于公司文档的问答机器人”。
📚 模块 5:决策与行动(The Agent)
让 AI 自主思考并执行
🎯 学习目标
构建一个能根据目标自主选择工具、调用 API、完成复杂任务的代理。
🔗 核心概念
工具
(Tools)工具调用
(Tool Calling)代理
(Agent)执行器
(AgentExecutor)代理类型
(Zero-shot, ReAct, etc.)
🔄 刻意练习任务(渐进式)
- 定义工具:创建
@tool
装饰的函数,如get_weather(location: str)
。 - 测试工具:单独调用工具,验证其功能。
- 创建代理:用
create_tool_calling_agent
创建一个支持工具调用的代理。 - 执行:使用
AgentExecutor
运行代理,观察其如何“思考 → 选择工具 → 调用 → 总结”。 - 复杂任务:给代理一个复杂任务,如“查询北京天气,并推荐适合的穿搭”。
- 自定义:实现一个
CustomTool
,调用外部 API(如 GitHub)。
✅ 成果:你能构建一个能自主完成多步骤任务的 AI 助手。
📚 模块 6:工程化与质量保障(The Quality)
生产级应用的基石
🎯 学习目标
确保你的 AI 应用可靠、可测、可评估。
🔗 核心概念
测试
(Testing)评估
(Evaluation)LangSmith
(Tracing + Evaluation)回调
(用于监控)异步编程
(高性能)
🔄 刻意练习任务(渐进式)
- 单元测试:为模块 1-5 的链和组件写
unittest
。 - 追踪分析:在 LangSmith 中分析一个 RAG 链的 trace,找出延迟最高的节点。
- 评估:使用 LangSmith 的
evaluate
功能,对 RAG 的“答案相关性”打分。 - A/B 测试:比较两种
TextSplitter
对 RAG 效果的影响。 - 性能:用
async
版本(ainvoke
,abatch
)重构一个批处理任务。
✅ 成果:你能用数据证明你的 AI 应用是高质量、可维护的。
🗓 四周渐进式学习计划(每周聚焦一个模块)
周数 | 主题 | 每周目标 | 输出物 |
---|---|---|---|
第1周 | 模块 1 + 模块 2 | 掌握 LCEL 和提示工程 | 1. 一个带结构化输出的 LCEL 链 2. 一个支持少样本提示的模板 |
第2周 | 模块 3 + 模块 4 | 实现记忆和 RAG | 1. 一个带记忆的聊天机器人 2. 一个基于 PDF 的问答系统 |
第3周 | 模块 5 | 构建智能代理 | 1. 一个能调用 3 个工具的代理 2. 一个能完成复杂任务的 AgentExecutor |
第4周 | 模块 6 | 工程化与评估 | 1. 为前 3 周的项目写测试 2. 在 LangSmith 中完成一次完整评估报告 |
🧠 刻意练习原则(贯穿始终)
-
每次练习只聚焦一个新概念(如:本周只练
Retriever
,不同时搞Agent
)。 -
先复现 → 再破坏 → 再修复 → 再扩展。
-
每完成一个任务,问自己:
- 这个组件解决了什么问题?
- 如果没有它,系统会怎样?
- 它和其他组件如何协作?
-
用 LangSmith 追踪每一个链,可视化你的学习路径。
🚀 最终项目建议(综合应用)
构建一个“智能研究助手”
-
用户输入:“帮我研究 LangChain 的 RAG 最佳实践”
-
系统行为:
- 记忆:记住用户偏好(如“喜欢看代码示例”)。
- 检索:从 LangChain 官方文档中检索相关内容。
- 工具调用:调用
web_search
工具获取最新博客。 - 生成:整合信息,生成结构化报告(JSON)。
- 评估:自动评估报告的完整性,并给出改进意见。
✅ 总结
你不再需要“随机学习”这些概念。
你现在有一个:
- 系统性框架(6 个模块)
- 渐进式路径(4 周计划)
- 刻意练习方法(复现 → 破坏 → 扩展)
- 可衡量成果(每个模块的输出物)