项目地址GitHub,绝大部分都是项目内容摘要下来的笔记,侵删
笔记内容后标skip的基本上没什么笔者自己的内容建议跳过不看。感兴趣直接看项目原址就好,本笔记用途-无,纯摘抄感想
Task1-虚拟环境搭建(前期必要准备::skip
给出2个例子形成简单工作流
eg.1
eg.2
接下来有详细形象解释
and
LC基础简单方便,LG适用复杂场景-严谨系统。
T1-练习
1.2.
3.
4.LC,因为简单不要多。
Task2-LangChain核心组件实操
result1
result2
Summary:3角色
PromptTemplate
result1
result2
rt3
这里可能是模型的原因,第一次跑’学习‘步骤只有1点,第二次2点(即展示),可能因为用的小模型上下文输出有限制(我用的是Qwen3-1.7B,免费但小。
核心逻辑:给模型看示例,它就会照着做
rt4
反映和总结
rt5
llm | parser 是 LangChain 1.0 + 的链式调用语法,等价于 “先调用 llm 生成结果,再将结果传入 parser 解析”,替代了传统的 “先调用模型,再手动传参给解析器” 的写法,让代码更简洁。
2.3.2.2 案例2: JsonOutputParser
⚠️ 注意:JsonOutputParser 不校验字段类型与枚举值,输出格式“看起来正确”不等于“工程上安全”。
2.3.2.3 案例3:PydanticOutputParser
2.3.3 BaseOutputParser 核心抽象接口(进阶选学)
结果如下
3.需要PromptTemplate、OutputParser,前者固定后者转化输出
Task3- LangChain进阶组件实操
Memory=笔记,a.save,b. load.
LangChain提供了多种Memory实现,适用于不同场景。我们重点学最常用的三种——全量记忆、窗口记忆、摘要记忆:
使用InMemoryChatMessageHistory存储完整对话历史,每次调用时自动注入所有历史消息到提示词中,适用于对话轮数少、需要完整上下文的场景。
e.g.1
全量记忆会完整保存所有对话历史,AI 能准确回答所有基于历史的问题,适合短对话场景。
e.g.2
注意:窗口记忆仅保留最近 2 轮对话。第 5 轮询问时,第 3 轮"来自上海"仍在窗口内,所以 AI 能正确回答;而第 6 轮询问"我叫什么名字"时,第 1 轮"我叫小红"已被截断,AI 将无法回答,这就是窗口记忆的截断效果。
3.1.2.3 摘要记忆-for超长时间的对话(比如几小时的咨询)
e.g.3
3者对比
3.1.2.6手动参考版
3.2 外部行动层(Tool)=skills?
Tips: LangChain 的 Agent = LangGraph 的轻量外部封装,Tool 调用底层都是由 LangGraph 的图节点管理和调度的。等后续学习了 LangGraph 后你大概就能理解了~~
工具调用就是让AI学会“思考→行动→反馈”的循环
e.g.1 WeatherQuery
这里我的免费API调用的‘create-agent'函数没有相关的tool calling,产生’invalid params。所以直接调用了预制天气数据文本来回答。
AI 的完整思考过程:判断需要调用 WeatherQuery 工具 → 传入参数 “北京” → 工具返回结果 → AI 整理成自然语言回答。
3.2.2 高级技巧:自定义工具(@tool装饰器)
3.2.2.2 学习案例:温度单位转换
(怎么和案例结果一模一样),这里也是遇到了跟上面一样的问题,解决方法也类似,都是把'create-agent'用一些approach平替。
3.2.3 其他常用内置工具
3.3 综合实践:把Memory和Tool组合起来
3.3.1 实践1:带记忆的对话机器人
这次把模型从qwen3-1.7B换成glm-4.7-flash后就不用改代码了。
3.3.2 实践2:带记忆的文件夹操作助手
记忆层用redis的话相当于实现长期对话和历史保存功能
tool层相当于Trae的solo模式/vibecoding。具有自动捕获功能的coding agent
层3是什么意思,愚以为是方便模型n次调用,相当于cache,
层4就是更好的prompt。
Task4 LangChain应用级系统设计与RAG实践
因为打了半天上了半天图结果没保存草稿之间丢失了很难受所以直接用ai补齐了格式,实验结果重新跑了一遍。
很崩溃,,
一、链式工作流设计实践
1. 线性链(RunnableSequence)实践案例
任务描述:实现“新闻稿提取信息 → 生成摘要 → 翻译成英文”的流水线式任务。核心是利用 RunnableSequence 和管道运算符将多个组件(提示词模板、模型调用、输出解析器)按顺序串联,前一个组件的输出自动成为后一个组件的输入。
前置准备:所有案例需先完成环境配置,包括安装 langchain、langchain-core、langchain-openai 等依赖包,并配置 .env 文件中的 API_KEY。
实验结果:
2. 路由链(RunnableBranch)实践案例
任务描述:构建一个简单的智能客服路由链。预设三个场景(查订单、退货款、保修政策),用户输入问题后,系统能自动判断意图并分发到对应的处理链,无法匹配时则使用默认链回复。该案例基于新版LangChain的Runnable范式,使用 ChatOpenAI 模型。
实验结果:
3. 并行链(RunnableParallel)实践案例
任务描述:实现多维度分析任务,例如从“情感、逻辑、文采”等多个角度并行评价同一段文本,最终返回一个结构化的结果字典。此模式利用 RunnableParallel 或 RunnableMap 对同一输入并行执行多个子组件,能显著提高多维度分析的效率。
实验结果:
3个错误纠正:
二、RAG 系统构建全流程实操
1. 文档加载(Document Loading)
任务描述:实践多种格式文档的加载,所有测试文档存放在 src\code\knowledge_base 文件夹中。包括以下子任务:
· TXT文档加载:使用 TextLoader,这是官方推荐的TXT专属加载器,支持自定义编码。
· PDF文档加载:提供基础款(PyPDFLoader)和复杂款(PDFPlumberLoader)两种方案。
· Word文档加载:使用 Docx2txtLoader 加载 .docx 格式文档。
· Markdown文档加载:推荐使用轻量款的 UnstructuredMarkdownLoader 以保留标题层级等结构。
· 批量加载多格式文档:编写一个函数,自动识别并加载文件夹内的多种格式文档。
实验结果:
2. 文本分割(Text Splitting)
任务描述:实践LangChain官方推荐的文本分割策略,确保知识库片段语义完整、大小适中。
· 默认推荐:RecursiveCharacterTextSplitter,作为首选方案,它通过“分层分隔符优先级”实现智能语义感知分割,适配绝大多数文本类型。
· 基础备选:CharacterTextSplitter,仅适用于结构极简单的文本,不推荐作为默认方案。
· 针对性分割:MarkdownTextSplitter,专为Markdown文档设计,能识别并保留标题层级,确保“标题+对应内容”不被拆分。
实验结果:
3. 向量存储与嵌入(Vector Storage & Embedding)
任务描述:实践文本嵌入与向量存储的完整流程:加载文档 → 分割文本 → 初始化嵌入模型 → 初始化向量数据库 → 将分割后的文本嵌入并存储。
· 嵌入模型:使用轻量高效的 qwen3-embedding-0.6b 模型,支持中文语义精准捕捉。
· 向量数据库:选择FAISS,这是一款轻量级向量数据库,无需单独部署服务,适合初学者和小型项目。
实验结果:
4. 检索与生成(Retrieval & Generation)
任务描述:完成最终的RAG问答链路。将用户问题转化为向量,在向量数据库中检索最相关的文本片段,然后将检索到的内容作为上下文,与用户问题一起提交给大模型(如DeepSeek),生成最终答案。
实验结果:
4.6
4.7练习
练习1.
练习2.
。。。省略测试问题1,2,3
练习3.
Task06 LangGraph基础:有状态工作流与核心概念
课程第六章学习总结
第六章聚焦于LangGraph框架,它是LangChain生态中负责复杂工作流编排的核心组件,旨在解决传统链式工作流在处理循环迭代、动态分支及状态回溯等场景时的局限性。
一、图结构驱动的工作流设计
LangGraph采用图结构来建模智能体工作流,通过“节点”封装功能、“边”定义执行路径、“状态”共享数据,实现流程的可控性和可追溯性。相比LangChain的线性链式结构,LangGraph原生支持分支、循环、并行等复杂逻辑,尤其适用于多Agent协作、长时任务等生产级场景。两者并非替代关系,而是互补关系——LangChain适合快速搭建线性、固定流程的轻量级应用,LangGraph则聚焦复杂场景的状态管理和流程编排。
二、核心三要素:状态、节点与边
1. 状态(State):作为工作流的“中枢”,统一存储和传递数据,支持字段级状态合并策略与状态持久化能力。
2. 节点(Nodes):作为“功能单元”,执行具体业务逻辑,必须是纯函数。
3. 边(Edges):控制执行路线,分为固定边(线性)和条件边(分支/循环),通过条件边可配置循环回退和终止条件,避免无限循环。
三、运行机制:超步骤(Super-step)消息传递
LangGraph的工作流执行机制围绕“超步骤”展开,每个超步骤包含三个阶段:激活节点(使收到消息的节点变为活跃状态)、执行节点(所有活跃节点并行执行逻辑)、传递消息(将状态更新传递给下一个节点并回归休眠状态)。这种机制使LangGraph天然支持节点并行执行,提升流程效率,同时通过消息传递确保状态一致性。一个完整的工作流执行涉及启动、节点激活、逻辑执行、状态传递、循环判断、终止六个阶段。
四、实战案例:分支文本处理工作流
章节最后通过一个完整案例演示了条件分支路由的应用场景。工作流涵盖文本去重、摘要生成、敏感内容检测、质量检查等节点,核心在于rewrite_router路由函数的编写——根据质量校验结果和重生成次数,动态决定是输出结果、回到摘要节点重新生成,还是强制输出。这一案例完整展示了LangGraph如何通过条件边实现复杂的分支和循环逻辑。