模块 03 · 框架上手
LangChain 指南
把原理落成代码:提示词模板、LCEL、流式并发、RAG 三部曲、对话记忆、工具调用与调试。
这是一套 LangChain 的 Python 用法课程。不带你搭大工程,而是把 LangChain 的每个核心部件拆开讲清楚:它是什么、怎么装、最小示例怎么写、生产上常栽哪些坑。学完你能把模型、提示词、链、RAG、Agent 这些积木随心组合到自己的项目里。
课程结构
| 章 | 主题 | 一句话 |
|---|---|---|
| 01 | 认识 LangChain | 是什么、生态对比、ChatOllama/init_chat_model、缓存 |
| 02 | 提示词模板与消息 | ChatPromptTemplate、多角色消息、MessagesPlaceholder |
| 03 | LCEL 与 Runnable | 管道 \|、RunnableLambda/Passthrough/Parallel、条件路由 |
| 04 | 流式与并发 | stream/batch、asyncio 超时、with_fallbacks/with_retry |
| 05 | 输出解析器 | StrOutputParser、with_structured_output、JSON/列表/正则解析 |
| 06 | 文档加载与切割 | TextLoader/PyPDFLoader、RecursiveCharacterTextSplitter |
| 07 | 嵌入与向量库 | OllamaEmbeddings、InMemoryVectorStore、并发控制 |
| 08 | 检索与 RAG | 检索参数、MMR、RAG 链组装、来源溯源 |
| 09 | 对话记忆 | messages 手动管理、trim_messages、摘要压缩、JSON 持久化 |
| 10 | 工具调用 | @tool、bind_tools、tool_calls 解析、手动执行循环 |
| 11 | Agent | create_agent、决策路径观察、工具设计三细节 |
| 12 | 回调与调试 | BaseCallbackHandler、astream_events、调试三件套(收官) |
主线是「先会用一个模型,再串成链,再喂知识库,再长出手脚」:01-05 讲清模型调用和链式组合;06-08 是 RAG 三部曲(加载切割→嵌入入库→检索问答);09-11 给应用加上记忆和行动力;12 收官教你观察和调试这一切。
环境准备
# 需要 Python 3.10+、uv、以及本地跑着的 Ollama
ollama pull qwen3:4b # 对话模型(各章 demo 的默认模型)
ollama pull nomic-embed-text # 嵌入模型(07/08 章需要)
# 每章 demo 依赖(在课程根目录或各章目录初始化均可)
uv init
uv add langchain langchain-ollama langchain-community pypdf
# 05 章部分解析器在 langchain-classic:
uv add langchain-classic
demo 文件头部注释写明了各自的运行方式。离线也能跑:大部分 demo 检测不到 Ollama 时会自动降级(走固定假响应演示链路逻辑),装好模型后无需改代码即可切回真实调用。
三条学习路线
快速上手(会 Python,想半天入门):01 → 02 → 03,然后按需跳读。
做知识库(目标是 RAG 问答):01 → 03 顺读,然后 06 → 07 → 08 三部曲,05 章的 with_structured_output 值得单独看一眼。
做助手类应用(要对话和行动力):01 → 10 → 11 主线,09 章给多轮对话上记忆,04/12 章上线前补可靠性和调试手段。
demo 的约定
- 每章
demo/下独立.py文件,单文件自足,不依赖其他章 - 离线降级是刻意设计:演示链路逻辑不依赖网络,有 Ollama 时自动切真实模型
- 示例场景统一是「拾光书屋」阅读社区(藏书/书评/会员),边学边攒一个小应用的直觉
准备好了就从 01 · 认识 LangChain 开始。
章节清单
01认识 LangChain《LangChain指南》是一本轻量 Python 用法手册:不讲玄学,只讲「这个东西怎么用」。
全书示例围绕一个虚构场景——拾光书屋:一个线上阅读社区,有书籍、书评、阅读笔记和会员。你要给它装一个「AI 店员」27 分钟 · 12 个代码示例02提示词模板与消息跟大模型打交道,第一件事是把话说清楚。这一章讲 LangChain 的「话术工厂」:模板负责把要说的变成填空题,消息(Message) 负责把填好的话按角色打包发给模型。学完你能独立搭出带历史记录的多轮对话提示词,还能看…34 分钟 · 23 个代码示例03LCEL 与 Runnable本章配套可运行示例:demo/demolcel.py。demo 全程用纯数据变换,不启动 Ollama 也能跑;文末留了一段带模型的完整链,想体验的话设 USEMODEL=1 再运行30 分钟 · 25 个代码示例04流式与并发本章你将学会
- asyncio 前置速览:写过 JS 的话,一张表完成 Promise → 协程的迁移;gather、waitfor、任务取消各配一个最小示例
- .stream() / astream():让拾…36 分钟 · 25 个代码示例05输出解析器本章你将学会
- 为什么需要解析器:模型吐出来的是「带一大堆元数据的 AIMessage」,而你的业务代码想要的是 str / dict / list / 对象——解析器就是站在流水线末端的「海关拆箱员」
- St…53 分钟 · 31 个代码示例06文档加载与切割本章你将学会
- Document 对象:LangChain 的「统一集装箱」——不管数据来自 txt、PDF、CSV 还是网页,装进箱子后长一个样
- 本地 Loader:TextLoader、PyPDFLoad…53 分钟 · 28 个代码示例07嵌入与向量库本章你将学会
- 嵌入(embeddings)是什么:把「意思」翻译成一串数字,让两段话能像坐标上的两个点一样算远近;余弦相似度怎么读
- OllamaEmbeddings:本地跑 nomic-embed-text…29 分钟 · 14 个代码示例08检索与RAG本章配套可运行示例:demo/demorag.py。demo 把书屋读书笔记硬编码在文件里,从切割、入库、检索一路跑到组装问答链;本机没启动 Ollama 时会自动降级,只演示检索部分并打印提示。
本章你将学会
…36 分钟 · 23 个代码示例09对话记忆本章配套可运行示例:demo/demomemory.py。demo 从「手动维护 messages 列表」起步,一路跑到多会话隔离、trimmessages 开窗、摘要压缩、JSON 原子化持久化;本机没启动 Ollam…38 分钟 · 14 个代码示例10工具调用本章你将学会
- 为什么需要工具:模型的知识停在下训那天,而「拾光书屋今天几点关门」是今天的事——工具就是模型伸向外部世界的手和脚
- @tool 装饰器:一个普通 Python 函数如何三分钟变身「模型能看懂的工…45 分钟 · 19 个代码示例11Agent本章配套可运行示例:demo/demoagent.py。demo 用四个本地纯函数工具(查书、门店信息、滞纳金计算、活动查询)搭了一个「拾光书屋小助手」,一个 invoke 跑完一个多工具协作任务,并打印完整决策路径;本…28 分钟 · 10 个代码示例12回调与调试(全课程收官章)本章配套可运行示例:demo/democallback.py。demo 里写了两个自定义回调——控制台计时器 + 文件日志器——一次挂到同一条荐书链上;Ollama 在线用真模型,离线自动换成内置假模型,钩子触发完全相同…45 分钟 · 14 个代码示例