首页/新闻资讯/正文详情

[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战

发布时间:2026/11/5 1:56:41 来源:云帆数科 栏目:资讯中心
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
核心结论TL;DRLCEL 灵魂LangChain 表达式语言LCEL通过重载管道符|将实现了Runnable协议的组件模型、解析器等像积木一样串联实现优雅的链式编程。动态切换利用init_chat_model结合configurable_fields可以在不修改底层代码的情况下在运行时动态切换大模型厂商如 OpenAI 切 DeepSeek并调整参数。组件解耦通过 LCEL 组装Prompt、Model、Parser各司其职极大地提高了代码的复用性和可维护性。 一、 原理图解与核心概念1. 什么是 Runnable 协议在 LangChain 中能使用|符号连接的前提是该组件必须实现Runnable协议。它规定了组件必须具备的核心能力invoke单次同步调用。batch批量并行调用。stream流式输出打字机效果。大语言模型ChatOpenAI、输出解析器StrOutputParser、甚至提示词模板PromptTemplate全部实现了此协议。2. LCEL 的链式魔法# 将模型输出直接传给字符串解析器 chain model | parser底层相当于调用了RunnableSequence(firstmodel, lastparser)。数据像流水线一样从上游流向下游。 二、 精选核心代码片段1. 基础链式调用以 DeepSeek 为例from langchain_openai import ChatOpenAI from langchain_core.messages import SystemMessage, HumanMessage from langchain_core.output_parsers import StrOutputParser model ChatOpenAI( modeldeepseek-chat, api_keyyour_api_key, base_urlhttps://api.deepseek.com, # 注意目前官方推荐使用根路径无需 /v1 ) messages [ SystemMessage(content请补全一段故事100个字以内), HumanMessage(content一只猫正在__) ] # 使用 LCEL 构建链 chain model | StrOutputParser() print(chain.invoke(messages))2. 进阶运行时动态切换模型DeepSeek 与 Ollama 无缝切换通过configurable_alternatives实现极高的灵活性且无需安装额外的模型集成包。from langchain_openai import ChatOpenAI from langchain_ollama import ChatOllama from langchain_core.messages import HumanMessage from langchain_core.runnables import ConfigurableField # 1. 定义默认的基础模型云端 DeepSeek base_model ChatOpenAI( modeldeepseek-chat, api_keyyour_deepseek_api_key, base_urlhttps://api.deepseek.com, temperature0.3 ) # 2. 挂载备选模型本地 Ollama model base_model.configurable_alternatives( ConfigurableField(idllm_provider), default_keydeepseek, ollamaChatOllama( modeldeepseek-r1:1.5b, # 确保你本地已拉取该模型 base_urlhttp://127.0.0.1:11434, temperature0.3 ) ) messages [HumanMessage(content请用一句话介绍你自己。)] # # 场景一使用云端 DeepSeek默认走 default_key # print( 使用云端 DeepSeek ) result_cloud model.invoke(messages) print(result_cloud.content) # # 场景二动态切换到本地 Ollama # print(\n 动态切换到本地 Ollama ) result_local model.invoke( messages, config{ configurable: { llm_provider: ollama # 这里指定走备选模型 } } ) print(result_local.content)(完整的包含多轮对话与异常处理的代码已上传至 Gitee 仓库)⚠️ 三、 踩坑排查排雷报错UnicodeEncodeError: ascii codec cant encode charactershttpx默认用 ASCII 编码 HTTP 请求头。如果 API Key 里混入了中文空格、全角字符或不可见字符就会崩溃。排查重新复制纯 ASCII 的 Key或在代码中使用key.encode(ascii, errorsignore).decode(ascii)清洗。报错Unsupported model_providerdeepseekinit_chat_model需要安装langchain-deepseek集成包才能识别。排查若因 Python 版本限制无法安装直接用ChatOpenAI并指定base_url即可完美兼容。Connection Error或Timeout如果你在国内直连 OpenAI 会报错或者本地 Ollama 服务没有启动。排查检查代理设置或确保终端执行过ollama run model_name启动本地服务。链最后输出了AIMessage对象而非字符串忘了在链的最后加StrOutputParser()。大模型原生返回的是包含元数据的AIMessage解析器负责提取纯文本。

相关推荐

多模块架构演进:横向分层 vs 纵向领域,13个真实项目的 Maven 切分对照
多模块架构演进:横向分层 vs 纵向领域,13个真实项目的 Maven 切分对照

老炮淘金:13 个真实企业项目的架构高光 S01 基于 13 个真实工程的目录结构与 pom 实测 关键词:多模块 Maven 技术分层 业务域切分 发布边界 依赖方向 👋 欢迎阅读 🏠个人主页: 知守观 📘我的专栏: 老炮淘金:13个真实企业项目的架构高光 💻当前内容: 模块切… · 2026/11/5 1:56:41

2025 供应链物流创新科技报告-142页
2025 供应链物流创新科技报告-142页

本 141 页 PPT 适配物流科技、智慧供应链、低空经济及数字化转型咨询方案编制。引用 Gartner、KPMG、DHL 权威技术趋势雷达,构建数字化‑自动化‑智能化三层发展框架。拆解多模态大模型、多智能体、具身智能三大 AI 前沿,收录京东、顺丰、货拉拉、菜鸟、… · 2026/11/5 1:55:41

HTML 零基础入门到企业实战全套教程【第二章】2.4 网页注释、特殊字符转义(空格、版权符号、尖括号等)
HTML 零基础入门到企业实战全套教程【第二章】2.4 网页注释、特殊字符转义(空格、版权符号、尖括号等)

系列专栏:HTML 零基础入门到企业实战全套教程 上一节:2.3 HTML 标签、元素、属性详解 下一节:待更新 阅读建议:动手复制代码,在本地编辑器打开测试,跟着敲一遍,理解会更深刻前言写代码的时候&am… · 2026/11/5 1:55:41

可自部署10分钟临时邮箱:SMTP收信、TTL清理与验证码提取
可自部署10分钟临时邮箱:SMTP收信、TTL清理与验证码提取

简介:面向开发者与Web学习者的10分钟临时邮箱源码包,围绕短时有效邮箱地址的生成、收信与到期失效流程,适合用于注册验证、下载试用等不愿暴露真实邮箱的场景,也可作为PHP邮件系统与Web服务设计的实践项目。压缩包共492个文件&… · 2026/11/5 2:41:02

DataGrip连接达梦数据库的完整配置指南
DataGrip连接达梦数据库的完整配置指南

1. 项目概述最近在帮客户做数据迁移时遇到了一个典型场景:需要连接达梦数据库(DM)进行数据操作,但发现DataGrip这款主流数据库IDE并没有预置DM的驱动配置。这其实是个挺常见的痛点——很多国产数据库或小众数据库在主流工具中缺乏原生支持。经过一番摸索… · 2026/11/5 2:41:02

Proxmox VE 7 apt-get update 100错误排查
Proxmox VE 7 apt-get update 100错误排查

很多人在 Proxmox VE 7 上装完系统、打开网页面板、新建第一台虚拟机,回头在 shell 里敲一句apt-get update,结果被一屏红色输出糊了一脸,最后一行写着E: Some index files failed to download...或者干脆只留一句apt-get update failed: exi… · 2026/11/5 2:41:02

DataGrip连接达梦数据库(DM8)实战指南
DataGrip连接达梦数据库(DM8)实战指南

1. 项目概述作为一名长期与数据库打交道的开发者,我深知连接非主流数据库时的痛苦。达梦数据库(DM)作为国产数据库的代表之一,在企业级应用中越来越常见,但很多开发者第一次连接时总会遇到各种问题。本文将基于DataGrip这款强大的数据库管理工… · 2026/11/5 2:41:02

MySQL 5.7安装与配置全指南:从入门到生产环境部署
MySQL 5.7安装与配置全指南:从入门到生产环境部署

1. MySQL 5.7安装前的认知准备MySQL作为全球最流行的开源关系型数据库,5.7版本因其稳定性与性能平衡成为众多企业的首选。这个版本首次引入了原生JSON支持、多源复制等企业级功能,同时优化了InnoDB存储引擎的性能。在开始安装前,需要明确几个… · 2026/11/5 2:41:02

Blender渲染参数与出图流程:引擎、采样、光程、降噪与提速
Blender渲染参数与出图流程:引擎、采样、光程、降噪与提速

1. 先把“渲染”这件事拆成三层来看很多人第一次点开 Blender 的渲染面板,会被密密麻麻的折叠菜单劝退,其实真正影响一张简单静物图成色的,就那么十来个参数。渲染在 Blender 里不是“一个按钮”,而是三层不同性质的东西叠在一起&… · 2026/11/5 2:40:02

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码