56-LCEL构建复杂流水线-并行-分支-容错链实战
文章目录【56.PythonAI】用LangChain的LCEL构建复杂流水线从简单链到分支路由容错链导入语1 ~ 四种进阶模式全景2 ~ 四种模式代码实现RunnableParallel多模型并行对比RunnableBranch条件分支with_fallbacks容错降级RunnableLambda自定义节点思考 总结【56.PythonAI】用LangChain的LCEL构建复杂流水线从简单链到分支路由容错链文章简介本文深入讲解LangChain LCELLangChain Expression Language的进阶用法——用管道符|构建复杂AI工作流。内容涵盖RunnableParallel并行调用多模型对比、RunnableBranch条件分支路由、带fallback的容错降级链、以及RunnableLambda自定义节点的集成。每项技术均配完整代码和实际运行效果配以Mermaid流程图展示数据在各节点间的流转路径适合已经从简单Chain升级到复杂流水线的开发者。 个人主页源码骑士❄专栏传送门《Android开发基础》《python基础课程》⭐️热衷从源码视角拆解技术底层原理将复杂架构讲得通俗易懂 源码骑士的简介同上导入语前面你用LCEL搭了一条简单的链prompt | llm。但真实场景要复杂得多——有时候需要同时调用两个模型对比结果有时候要根据输入类型走不同的处理分支有时候主模型挂了得自动切备用。LCEL的设计哲学就是像搭乐高一样搭AI流水线。这篇文章给你四种进阶模式——并行、分支、容错、自定义节点——四种模式组合起来能解决90%的复杂工作流需求。1 ~ 四种进阶模式全景代码类文本类主模型降级用户输入RunnableParallel多模型并行对比通义千问GPT-3.5合并结果RunnableBranch条件分支代码生成链文本处理链with_fallbacks容错降级GPT-4GPT-3.52 ~ 四种模式代码实现RunnableParallel多模型并行对比fromlangchain_openaiimportChatOpenAIfromlangchain_core.runnablesimportRunnableParallel gptChatOpenAI(modelgpt-3.5-turbo)qwenChatOpenAI(modelqwen-turbo,base_urlhttps://dashscope...,api_key...)# 同时调两个模型结果合并到一个字典chainRunnableParallel(gpt_answergpt,qwen_answerqwen)resultchain.invoke(解释GIL)print(result[gpt_answer].content)# GPT的回答print(result[qwen_answer].content)# 通义千问的回答RunnableBranch条件分支fromlangchain_core.runnablesimportRunnableBranch# 根据输入类型走不同处理链branchRunnableBranch(# (条件函数, 对应链)(lambdax:代码inx[question],code_chain),(lambdax:翻译inx[question],translate_chain),general_chain,# 默认分支)resultbranch.invoke({question:写一个Python排序代码})# → 自动走code_chainwith_fallbacks容错降级# 主模型挂了自动切备用robust_chaingpt4_chain.with_fallbacks([gpt35_chain,qwen_chain])# GPT-4出错→自动降级GPT-3.5→再降级通义千问resultrobust_chain.invoke(你好)RunnableLambda自定义节点fromlangchain_core.runnablesimportRunnableLambdadefcount_tokens(text:str)-dict:return{text:text,token_count:len(text)//3}counterRunnableLambda(count_tokens)chainprompt|llm|counter# LLM输出后自动计Token思考 总结|管道符让AI流水线像Unix命令一样清晰retrieve | prompt | llm | parse每步做什么一目了然。并行调用不只是加速——是能力互补不同模型擅长不同任务RunnableParallel让你同时拿到多个视角。分支路由让一条链服务多种场景不需要为每种输入类型写一套新代码RunnableBranch自动分流。容错降级是生产级必备API总会挂with_fallbacks让你在模型挂了的时候优雅降级。LCEL的精髓在于声明式——你定义的是数据流图LangChain负责执行。复杂度的全部在于图的结构而不是执行代码。