恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
LangChain 快速上手:从接入大模型到 LCEL 链式调用(一文搞懂)
首页
资讯中心
/
LangChain 快速上手:从接入大模型到 LCEL 链式调用(一文搞懂)
LangChain 快速上手:从接入大模型到 LCEL 链式调用(一文搞懂)
发布时间:2026/8/26 17:37:21
很多人刚接触 LangChain照着官方文档写完 import 就开始迷糊API key 要不要写死在代码里ChatOpenAI、HumanMessage、StrOutputParser到底都是什么为什么model | parser就能把两个东西串成一条链这篇文章把官方「快速上手」那一套拆开讲透6 个步骤各自在解决什么痛点、背后Runnable和LCEL两个核心抽象到底是什么、以及新手最常踩的 5 个坑。一、先说结论快速上手可以压缩成一句话配好 key → 定义模型 → 拼消息 → 调一下 → 解析输出 → 用管道符串成链。但真正值得记住的不是这 6 步的 API而是两个贯穿全框架的抽象Runnable所有组件的统一定义接口invoke / batch / stream。LCEL用|把多个 Runnable 声明式组合成一条「链」。环境为Python 3.13 langchain 0.3.x快速上手实际只用到langchain-openai和langchain-core两个包。整个 quickstart 里的model、parser、chain全都是 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声明式组合LCELLangChain Expression Language用声明式方法从已有 Runnable 构建新的 Runnablechain 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(modelgpt-5-mini) //如果你用的是deepseek的API 执行下面代码 model ChatOpenAI( modeldeepseek-chat, # deepseek模型名称 base_urlhttps://api.deepseek.com, # deepseek接口地址 # api_key 会自动读取环境变量 OPENAI_API_KEY你需要把deepseek的key放到OPENAI_API_KEY )步骤 3定义消息列表from langchain_core.messages import HumanMessage, SystemMessage messages [ SystemMessage(contentTranslate the following from English into Chinese), HumanMessage(contenthi!), ]SystemMessage系统角色通常作为序列第一条用来启动 AI 行为。HumanMessage用户角色从用户传给模型。步骤 4调用大模型result model.invoke(messages) print(result) # 类型为 AIMessagemodel是 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)) # 输出你好!StrOutputParser把AIMessage解析成纯字符串。它也是 Runnable。步骤 6链式执行完整代码from langchain_openai import ChatOpenAI from langchain_core.messages import HumanMessage, SystemMessage from langchain_core.output_parsers import StrOutputParser model ChatOpenAI(modelgpt-5-mini) messages [ SystemMessage(contentTranslate the following from English into Chinese), HumanMessage(contenthi!), ] parser StrOutputParser() chain model | parser # LCEL 组合 result chain.invoke(messages) print(result) # 输出你好!四、常见误区新手 5 坑API key 写死在源码→ 仓库一推就泄露用环境变量。把gpt-5-mini当固定写法→ 那是课程示例实际换成你可用的模型名待验证。以为invoke只有模型能用→ 解析器、链都是 Runnable统一用invoke。没理解 chain 的本质→chain是RunnableSequence本身还是 Runnable可继续组合。装包装错→ 快速上手只用langchain-openailangchain-coreimport报错多半是集成包没单独装呼应《LangChain 安装》那篇。五、面试官追问区分真题 / 推导【真题】LCEL 是什么model | parser的|做了什么答LCEL 是声明式组合语言|把左右两个 Runnable 包成RunnableSequence。它仍是 Runnable因此自动获得invoke/batch/stream一致接口。这是 2026 大模型岗高频题。【真题】invoke/batch/stream区别答invoke 单输入单输出batch 多输入批量stream 边生成边返回。三者都是 Runnable 统一接口的方法调用方无需关心背后是模型还是解析器。【推导】为什么model和parser都能.invoke()答两者都实现 Runnable 接口invoke 是契约方法与具体组件类型无关。【真题】接入大模型有哪几种方式各自优劣答①官方原生 SDK如 openai 库直连可控、无抽象层但样板代码多、难组合②LangChain 等框架本篇所用组件化、易拼接、自动获得 batch/stream代价是抽象层有学习成本、版本变动快③原生 HTTP 请求最轻、零依赖但鉴权/重试/解析全要自己写。选框架的核心收益就是 Runnable/LCEL 的统一组合能力。注流浪已写《LLM 三种接入方式》专文本篇是其中「框架方式」的落地示例。【推导】response_metadata和usage_metadata有什么区别答前者侧重「响应本身上下文」请求ID、模型版本、服务商原始元数据→ 调试/日志后者侧重「资源消耗量化」Token 数→ 成本/监控。一个回答「这次请求怎么回事」一个回答「花了多少」。六、与前面文章的联系 / 面试串联必看按约定本篇和「流浪」已发文章做知识点串联每个常考点附答案① 串联《LangChain 安装从 pip install 到看懂包依赖链路》本篇from langchain_openai import ChatOpenAI来自langchain-openaiHumanMessage / StrOutputParser来自langchain-core——正是安装篇讲的依赖关系。面试常考为什么装了langchain还import 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 深度笔记我们下篇见。