资讯动态

Datawhale 4月组队学习:easy-langent

发布时间:2026/10/13 17:05:53 来源:尧图企业网站定制
项目地址GitHub绝大部分都是项目内容摘要下来的笔记侵删笔记内容后标skip的基本上没什么笔者自己的内容建议跳过不看。感兴趣直接看项目原址就好本笔记用途-无纯摘抄感想Task1-虚拟环境搭建前期必要准备skip给出2个例子形成简单工作流eg.1eg.2接下来有详细形象解释andLC基础简单方便LG适用复杂场景-严谨系统。T1-练习1.2.3.4.LC,因为简单不要多。Task2-LangChain核心组件实操result1result2Summary:3角色PromptTemplateresult1result2rt3这里可能是模型的原因第一次跑’学习‘步骤只有1点第二次2点即展示),可能因为用的小模型上下文输出有限制(我用的是Qwen3-1.7B免费但小。核心逻辑给模型看示例它就会照着做rt4反映和总结rt5llm | parser 是 LangChain 1.0 的链式调用语法等价于 “先调用 llm 生成结果再将结果传入 parser 解析”替代了传统的 “先调用模型再手动传参给解析器” 的写法让代码更简洁。2.3.2.2 案例2 JsonOutputParser⚠️ 注意JsonOutputParser 不校验字段类型与枚举值输出格式“看起来正确”不等于“工程上安全”。2.3.2.3 案例3PydanticOutputParser2.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.33者对比3.1.2.6手动参考版3.2 外部行动层Toolskills?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.64.7练习练习1.练习2.。。。省略测试问题123练习3.Task06 LangGraph基础有状态工作流与核心概念课程第六章学习总结第六章聚焦于LangGraph框架它是LangChain生态中负责复杂工作流编排的核心组件旨在解决传统链式工作流在处理循环迭代、动态分支及状态回溯等场景时的局限性。一、图结构驱动的工作流设计LangGraph采用图结构来建模智能体工作流通过“节点”封装功能、“边”定义执行路径、“状态”共享数据实现流程的可控性和可追溯性。相比LangChain的线性链式结构LangGraph原生支持分支、循环、并行等复杂逻辑尤其适用于多Agent协作、长时任务等生产级场景。两者并非替代关系而是互补关系——LangChain适合快速搭建线性、固定流程的轻量级应用LangGraph则聚焦复杂场景的状态管理和流程编排。二、核心三要素状态、节点与边1. 状态State作为工作流的“中枢”统一存储和传递数据支持字段级状态合并策略与状态持久化能力。2. 节点Nodes作为“功能单元”执行具体业务逻辑必须是纯函数。3. 边Edges控制执行路线分为固定边线性和条件边分支/循环通过条件边可配置循环回退和终止条件避免无限循环。三、运行机制超步骤Super-step消息传递LangGraph的工作流执行机制围绕“超步骤”展开每个超步骤包含三个阶段激活节点使收到消息的节点变为活跃状态、执行节点所有活跃节点并行执行逻辑、传递消息将状态更新传递给下一个节点并回归休眠状态。这种机制使LangGraph天然支持节点并行执行提升流程效率同时通过消息传递确保状态一致性。一个完整的工作流执行涉及启动、节点激活、逻辑执行、状态传递、循环判断、终止六个阶段。四、实战案例分支文本处理工作流章节最后通过一个完整案例演示了条件分支路由的应用场景。工作流涵盖文本去重、摘要生成、敏感内容检测、质量检查等节点核心在于rewrite_router路由函数的编写——根据质量校验结果和重生成次数动态决定是输出结果、回到摘要节点重新生成还是强制输出。这一案例完整展示了LangGraph如何通过条件边实现复杂的分支和循环逻辑。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑