当前位置: 首页 > news >正文

《60天AI学习计划启动 | Day 21: LangChain 高级特性(LCEL + Structured Output》

Day 21:LangChain 高级特性(LCEL + Structured Output)

学习目标

  • 掌握 LangChain Expression Language(LCEL)基础用法
  • 会用 RunnableSequence / RunnableParallel 组合链路
  • 了解 结构化输出(Structured Output)+ zod 校验
  • 实战:把之前的 RAG / Chat 流程用 LCEL 重写一版

核心知识点

  • LCEL 核心思想

    • 一切都是 RunnablePromptTemplate、LLM、Parser、Retrievers 等
    • .pipe() / RunnableSequence.from() 串联;RunnableParallel 并行
    • 好处:声明式、可组合、易复用、易调试
  • 顺序链(RunnableSequence)

    • 典型链路:input → Prompt → LLM → Parser
    • 用法(伪代码):
      const chain = RunnableSequence.from([prompt,llm,outputParser
      ])
      const res = await chain.invoke({ question })
      
  • 并行链(RunnableParallel)

    • 同时跑多个子任务,比如:
      • 一个链做「总结」,一个链做「提取关键字」
    • 用法(伪代码):
      const parallel = RunnableParallel.from({summary: summaryChain,keywords: keywordChain
      })
      const res = await parallel.invoke({ text })
      
  • 结构化输出(Structured Output)

    • 使用 zod 定义 schema,确保 LLM 输出 JSON 符合类型
    • 适合:配置、提取字段、结构化分析结果
    • 用法(伪代码):
      const schema = z.object({title: z.string(),score: z.number().min(0).max(10)
      })
      const parser = StructuredOutputParser.fromZodSchema(schema)
      const chain = prompt.pipe(llm).pipe(parser)
      const res = await chain.invoke({ code })
      
  • LCEL + RAG 简写

    • 链路:question → retriever → context → prompt → llm → parser
    • 用一个 RunnableSequence 串起来,替代手写 try/await 流程

实战作业

  • 作业 1:用 LCEL 重写基础 Chat 链

    • 把原来 prompt + llm + 自己 parse 的逻辑改成:prompt.pipe(llm).pipe(parser)
    • 要求:保留原有功能,代码更短、更易读
  • 作业 2:实现一个「代码审查 + 打分」结构化输出链

    • zod 定义:
      const ReviewSchema = z.object({issues: z.array(z.string()),score: z.number().min(0).max(10),suggestion: z.string()
      })
      
    • 用 LCEL:prompt → llm → StructuredOutputParser,返回严格结构化对象
  • 作业 3:给 RAG 做一个 LCEL 版本

    • retriever.pipe(ragPrompt).pipe(llm).pipe(parser)
    • 对比:老版手写 await vs LCEL 写法,体会可组合性差异

思考/笔记要点(可写进博客)

  • 记录:传统 imperative 写法 vs LCEL 声明式写法代码对比
  • 总结:什么时候用 LCEL(复杂链路、多处复用)更合适
  • 反思:自己项目里哪些地方可以逐步替换成 LCEL
http://www.zskr.cn/news/114592.html

相关文章:

  • 装修用瓷砖选什么牌子,瓷砖一线品牌2025权威排名推荐 - 资讯焦点
  • Docker环境下LangGraph Agent配置实战(专家级配置方案首次公开)
  • TabPFN完整指南:如何用AI模型彻底改变表格数据预测
  • 格雷厄姆特价股票理论对公司并购策略的影响
  • Agent服务总在启动时失败?,详解Docker Compose依赖配置的8个隐藏坑点
  • 边缘计算实战技巧(Docker启动脚本优化全记录)
  • 13、文本处理技巧与实践
  • 揭秘边缘 Agent 自动化启动难题:5个关键步骤打造稳定 Docker 脚本
  • FortiGate SSO遭无差别攻击,管理员权限秒破,全网紧急防护
  • 暗黑破坏神2存档编辑器终极指南:从入门到精通的角色定制全解析
  • OpenProject企业版价值解析:从免费开源到商业级项目管理
  • Vercel AI SDK部署失败?你可能忽略了这4个Docker版本陷阱
  • 用 XinServer 后端平台开发,项目上线只需几天
  • Live Room Watcher:打造专业级直播间数据监控解决方案
  • 语音多样性控制:EmotiVoice支持随机变声吗?
  • 10、Linux 文件操作与管理技巧
  • 11、Linux 文本与文件操作实用指南
  • 科技特长生辅导机构怎么选?5大品牌+6大避坑指南 - 品牌测评鉴赏家
  • 基于SSM框架的线上管理系统设计开发实现
  • 日志为刃,溯源追凶:Linux服务器入侵源锁定全攻略(含前瞻防御体系)
  • 肉包 1.4.0 | 豆包AI手机平替,开源免费,AI自动化
  • 只需3秒音频样本!EmotiVoice实现精准音色克隆
  • MySQL四种备份表的方式 - 教程
  • 海外物流货物APP海外集运转运物流跟踪仓储管理路线规划系统
  • 计算机毕业设计2026课题答疑
  • 18、技术工具与配置全解析
  • Koodo Reader电子书封面美化终极指南:如何快速打造个性化数字图书馆
  • Archipack建筑建模插件深度解析:从入门到精通的完整指南
  • EmotiVoice是否支持动态切换情感模式?实测告诉你
  • 38、Linux 系统中的事件跟踪工具详解