news 2026/8/26 17:37:02

LangChain 快速上手:从接入大模型到 LCEL 链式调用(一文搞懂)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LangChain 快速上手:从接入大模型到 LCEL 链式调用(一文搞懂)

很多人刚接触 LangChain,照着官方文档写完 import 就开始迷糊:API key 要不要写死在代码里?ChatOpenAIHumanMessageStrOutputParser到底都是什么?为什么model | parser就能把两个东西串成一条链?
这篇文章把官方「快速上手」那一套拆开讲透:6 个步骤各自在解决什么痛点、背后RunnableLCEL两个核心抽象到底是什么、以及新手最常踩的 5 个坑。

一、先说结论

快速上手可以压缩成一句话:配好 key → 定义模型 → 拼消息 → 调一下 → 解析输出 → 用管道符串成链。但真正值得记住的,不是这 6 步的 API,而是两个贯穿全框架的抽象:

  • Runnable:所有组件的统一定义接口(invoke / batch / stream)。
  • LCEL:用|把多个 Runnable 声明式组合成一条「链」。

环境为Python 3.13 + langchain 0.3.x;快速上手实际只用到langchain-openailangchain-core两个包。整个 quickstart 里的modelparserchain全都是 Runnable 实例,统一由.invoke()驱动——这是理解后面一切的前提。

二、核心机制

2.1 为什么需要 LangChain(原生 LLM 的 7 个痛点)

课件原话点得很直接:把 LLM 当搜索引擎用还行,一旦嵌进真实应用就暴露一堆问题——

  • 简单 Prompt 容易幻觉
  • 提示词结构能否统一规范
  • 如何灵活切换不同大模型;
  • 模型输出是非结构化的,怎么和要结构化数据的程序接口对接;
  • 怎么克服预训练知识陈旧、引入实时信息;
  • 怎么连接外部工具/系统执行具体任务。

LangChain 的解法:把自然语言处理流程拆解成标准化组件,开发者自由组合、高效定制工作流。这一步的定位必须清楚——它是「脚手架/编排框架」,不是模型本身。

2.2 Runnable 接口(地基)

Runnable 是使用所有 LangChain 组件的基础。它定义了统一接口,允许组件具备五种能力:

能力含义
invoke单个输入 → 单个输出
batch多个输入高效批量转换
stream输出边生成边流式返回
inspect查看输入/输出/配置的原理图信息
compose多个 Runnable 组合成复杂管道(LCEL)

为什么这个抽象关键?语言模型、输出解析器、检索器、甚至编译后的 LangGraph 图,全部实现 Runnable。于是它们能互相拼接、能统一被invoke/batch/stream调用——这就是「组合」之所以可能的根。

2.3 LCEL(声明式组合)

LCEL(LangChain Expression Language)用声明式方法,从已有 Runnable 构建新的 Runnable:

chain = model | parser

这条语句构建出的新对象类型是RunnableSequence(一种「链」)。重点:RunnableSequence 自身也是 Runnable 实例,所以它实现了完整接口,能继续.invoke(),也能再和别的 Runnable 拼。|不是普通管道,而是 LCEL 的组合运算符。

三、实现细节(6 步)

步骤 1:申请 API key 并配置环境变量

key 不写死在源码里,而是放进环境变量,原因是隐私——避免在代码仓库里泄露。程序通过读取对应环境变量拿 key。

import os os.environ["OPENAI_API_KEY"] = "你的key" # 或写在 shell / .env 里

或者手动添加

步骤 2:定义大模型

from langchain_openai import ChatOpenAI model = ChatOpenAI(model="gpt-5-mini") //如果你用的是deepseek的API 执行下面代码 model = ChatOpenAI( model="deepseek-chat", # deepseek模型名称 base_url="https://api.deepseek.com", # deepseek接口地址 # api_key 会自动读取环境变量 OPENAI_API_KEY,你需要把deepseek的key放到OPENAI_API_KEY )

步骤 3:定义消息列表

from langchain_core.messages import HumanMessage, SystemMessage messages = [ SystemMessage(content="Translate the following from English into Chinese"), HumanMessage(content="hi!"), ]
  • SystemMessage:系统角色,通常作为序列第一条,用来启动 AI 行为。
  • HumanMessage:用户角色,从用户传给模型。

步骤 4:调用大模型

result = model.invoke(messages) print(result) # 类型为 AIMessage

model是 Runnable,所以能用.invoke()。返回的AIMessage关键字段:

字段作用
content消息正文
additional_kwargs工具调用等附加负载
response_metadata响应本身信息(请求ID、模型版本、原始元数据)→ 调试/日志用
usage_metadataToken 消耗量化(in/out/total)→ 成本计算/监控用

步骤 5:输出解析

from langchain_core.output_parsers import StrOutputParser parser = StrOutputParser() print(parser.invoke(result)) # 输出:你好!

StrOutputParserAIMessage解析成纯字符串。它也是 Runnable

步骤 6:链式执行(完整代码)

from langchain_openai import ChatOpenAI from langchain_core.messages import HumanMessage, SystemMessage from langchain_core.output_parsers import StrOutputParser model = ChatOpenAI(model="gpt-5-mini") messages = [ SystemMessage(content="Translate the following from English into Chinese"), HumanMessage(content="hi!"), ] parser = StrOutputParser() chain = model | parser # LCEL 组合 result = chain.invoke(messages) print(result) # 输出:你好!

四、常见误区(新手 5 坑)

  1. API key 写死在源码→ 仓库一推就泄露,用环境变量。
  2. gpt-5-mini当固定写法→ 那是课程示例,实际换成你可用的模型名(待验证)。
  3. 以为invoke只有模型能用→ 解析器、链都是 Runnable,统一用invoke
  4. 没理解 chain 的本质chainRunnableSequence,本身还是 Runnable,可继续组合。
  5. 装包装错→ 快速上手只用langchain-openai+langchain-coreimport报错多半是集成包没单独装(呼应《LangChain 安装》那篇)。

五、面试官追问(区分真题 / 推导)

【真题】LCEL 是什么?model | parser|做了什么?
答:LCEL 是声明式组合语言,|把左右两个 Runnable 包成RunnableSequence。它仍是 Runnable,因此自动获得invoke/batch/stream一致接口。这是 2026 大模型岗高频题。

【真题】invoke/batch/stream区别?
答:invoke 单输入单输出;batch 多输入批量;stream 边生成边返回。三者都是 Runnable 统一接口的方法,调用方无需关心背后是模型还是解析器。

【推导】为什么modelparser都能.invoke()
答:两者都实现 Runnable 接口,invoke 是契约方法,与具体组件类型无关。

【真题】接入大模型有哪几种方式?各自优劣?
答:①官方原生 SDK(如 openai 库直连):可控、无抽象层,但样板代码多、难组合;②LangChain 等框架(本篇所用):组件化、易拼接、自动获得 batch/stream,代价是抽象层有学习成本、版本变动快;③原生 HTTP 请求:最轻、零依赖,但鉴权/重试/解析全要自己写。选框架的核心收益就是 Runnable/LCEL 的统一组合能力。(注:流浪已写《LLM 三种接入方式》专文,本篇是其中「框架方式」的落地示例。)

【推导】response_metadatausage_metadata有什么区别?
答:前者侧重「响应本身上下文」(请求ID、模型版本、服务商原始元数据)→ 调试/日志;后者侧重「资源消耗量化」(Token 数)→ 成本/监控。一个回答「这次请求怎么回事」,一个回答「花了多少」。

六、与前面文章的联系 / 面试串联(必看)

按约定,本篇和「流浪」已发文章做知识点串联,每个常考点附答案:

① 串联《LangChain 安装:从 pip install 到看懂包依赖链路》
本篇from langchain_openai import ChatOpenAI来自langchain-openaiHumanMessage / StrOutputParser来自langchain-core——正是安装篇讲的依赖关系。
面试常考:为什么装了langchainimport langchain_openai报错?答:langchain是元包,OpenAI 集成需单独装langchain-openai(默认规则在面试追问第 5 条也写过)。

② 串联《LLM 三种接入方式》【推断·未读正文】
从标题可确定流浪专文讲过接入方式;本篇是其中「框架方式」的具体落地。上面「面试官追问第 4 条」已给出三种方式的答案与优劣,可直接复用。

③ 串联《从 Vibe Coding 到 LangGraph》【推断·未读正文】
本篇chain = model | parser是 LCEL 声明式组合的最小形态;LangGraph 在此之上加了状态(State)分支/循环,把线性链升级成有状态图。理解了 Runnable/LCEL,再学 LangGraph 是顺坡下坡。

七、小结

一句话:快速上手真正要记住的是Runnable(统一接口)+ LCEL(用|组合),6 步 API 练两遍就熟,其余接口用到再查。


如果这篇帮你把「快速上手」嚼透了,欢迎在评论区聊聊你踩过的第一个坑,或者想看我拆哪块核心组件。我是流浪,持续更新 LangChain 深度笔记,我们下篇见。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 17:33:33

豪车模拟器

🚗 工具简介许多车迷和短视频创作者都渴望体验豪华品牌车辆的手机控车交互界面,但实车体验门槛较高。为此,一款名为“豪车模拟器”的纯本地UI仿真工具应运而生。它能在手机端高度还原奔驰、路虎、奥迪等主流豪华车型的车主App页面&#xff0c…

作者头像 李华
网站建设 2026/8/26 17:33:28

第06篇-工具系统

【OpenClaw 从入门到精通】第 6 篇:工具系统 — Agent 的能力边界 本系列定位:零基础入门,从安装配置到高级架构全覆盖。无论你是开发者、运维工程师、还是技术爱好者,本系列带你彻底掌握 OpenClaw。 本篇你将学到 OpenClaw 工具…

作者头像 李华
网站建设 2026/8/26 17:32:24

Jira系统-测试流程定制

文章目录一. Jira系统-测试流程定制1. 简介2. 操作步骤新建项目(管理测试用例)新建测试用例的问题类型新建测试用例工作流新建测试用例界面新建测试用例特有字段一. Jira系统-测试流程定制 1. 简介 测试工作流程是指将测试人员在进行测试工作时的一系列…

作者头像 李华
网站建设 2026/8/26 17:27:25

第251篇 LeGO-LOAM深度解析——轻量级地面优化激光SLAM

上一篇聊了LOAM,激光SLAM的开山之作。这篇来看它的改进版——LeGO-LOAM。LeGO-LOAM是2018年纽约城市大学(CCNY)的Tixiao Shan发表在IROS上的,全称是Lightweight and Ground-Optimized LOAM。这篇论文引用量也很高,是LO…

作者头像 李华
网站建设 2026/8/26 17:27:21

python数据可视化技巧的100个练习 -- 99. 使用 Plotly 创建 3D 箱线图

重要性★★★☆☆ 难度★★★☆☆ 你是一家房地产公司的数据分析师。你的任务是在 3D 图表中可视化不同地区的房价分布。这种可视化将帮助利益相关者了解房价不仅在地区之间的变化,还与物业类型和建造年份有关。为了实现这一点,使用 Plotly 创建一个 3D 箱线图。生成物业价…

作者头像 李华
网站建设 2026/8/26 17:27:12

频繁切换GPT和Claude太崩溃?高效能人士AI怎么用与玉芬AI实战拆解

面对不同任务,职场人AI怎么用才能避免账号频繁跳转?工具整合站点玉芬AI( neneai.cn) 实现多大模型一键无缝切换,彻底告别多平台重复登录与繁琐管理。 Q:如何在单一界面整合文本、代码与逻辑推演的多模型工作流? A&am…

作者头像 李华