Skip to content
详解:什么是 LangChain?如何使用 LangChain Chains?

LangChain Chains 详解:释放现代 AI 工作流的威力

Updated on

LangChain 仍在快速演进,而 chain 依然是其中最核心的概念之一。本文将从 2025 的视角,系统讲清楚:LangChain 中的 Chain 到底是什么意思、它如何基于全新的 LCEL(LangChain Expression Language) 工作,以及它如何帮助开发者构建可靠的多步骤 AI 应用。

文章中的示例全部更新为当前推荐写法,用 RunnablesPromptTemplateChatModels顺序流水线 替代过时的 LLMChain 等旧类。


什么是 LangChain?(2025 总览)

LangChain 是一个强大的 Python / JavaScript 框架,用来帮助开发者构建 AI 应用,它主要围绕以下能力:

  • 大语言模型(LLMs)
  • Prompt 模板
  • Memory
  • Tools & Agents
  • Retrieval(RAG)
  • Workflow graphs(LangGraph)

在这些概念中,最具代表性的就是 Chain

一条可复用、可组合的流水线,把数据在多个步骤之间逐步传递:经过 prompts、models、tools、transformations 和 output parsers 等组件。

📘 想先了解基础概念?可以阅读我们的 LangChain 入门文章


什么是 LangChain Chains?

在 2023 年,chains 通常通过 LLMChain 或自定义 Python 类来创建。
到了 2025 年,推荐的方式是使用 LCEL,它采用简洁、函数式的流水线语法:

chain = prompt | model | output_parser

一个 Chain 本质上就是:

  • 一串按顺序执行的步骤
  • 被组合成一个可以直接调用的单元
  • 前一步的输出会作为后一步的输入

现在的 LangChain 提供了:

  • Simple Chains(单个 model + prompt)
  • Sequential Chains(多步骤顺序执行)
  • Parallel Chains(分支并行工作流)
  • Agents(可以动态选择工具的 chain)

下面通过现代写法的示例来逐步拆解。


基础 Chains(2025 版)

一个最基础的 chain,只是用一个 prompt 调用一个 model。

from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
 
prompt = PromptTemplate.from_template(
    "Describe a perfect day in {city}."
)
 
model = ChatOpenAI(model="gpt-4o-mini")
 
chain = prompt | model
 
chain.invoke({"city": "Paris"})

这里发生了什么?

  1. PromptTemplate 把模板格式化为 "Describe a perfect day in Paris."
  2. LLM 根据这个 prompt 生成描述
  3. 结果会作为 ChatMessage 或字符串返回(取决于配置)

这是现代 LangChain 中最简单的一种 chain。


进阶 Chains:多步骤流水线

多步骤 chain 会把多个操作组合起来。

示例:用 LCEL 完成
总结 → 翻译 的两步任务:

from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
 
summarize_prompt = PromptTemplate.from_template(
    "Summarize this text:\n\n{text}"
)
 
translate_prompt = PromptTemplate.from_template(
    "Translate this into Spanish:\n\n{summary}"
)
 
model = ChatOpenAI(model="gpt-4o-mini")
 
summarize_chain = summarize_prompt | model
translate_chain = translate_prompt | model
 
full_chain = summarize_chain | (lambda x: {"summary": x.content}) | translate_chain
 
full_chain.invoke({"text": "Climate change is causing rapid ocean warming..."})

为什么这很重要?

这体现了 现代 LangChain 的最佳实践

  • 使用 Runnables,而不是旧的 chain 类
  • | 做函数式组合
  • 用普通 Python 函数在中间做数据映射和整理

不带 LLM 的 Chains(纯 Transform / 清洗流水线)

并不是所有 chain 都必须包含 LLM。你可以用 chain 来做各种 预处理后处理 流水线。

示例:去空格 → 转小写 → 再交给 LLM:

def cleanup(text):
    return text.strip().lower()
 
chain = cleanup | model
chain("   WHAT is the    WEATHER   LIKE?   ")

只要是接收并返回可序列化数据的 Python 函数,都可以直接放进 chain 里。


顺序 Chains(取代 SimpleSequentialChain)

SimpleSequentialChainSequentialChain 都已经被弃用。
在 LCEL 中,它们的等价写法就是简单的:

chain = step1 | step2 | step3

示例:清洗问题 → 重写问题 → 回答问题

from langchain_openai import ChatOpenAI
 
clean = lambda x: x.strip()
rewrite_prompt = PromptTemplate.from_template(
    "Rewrite this more clearly: {text}"
)
answer_prompt = PromptTemplate.from_template(
    "Answer this question: {question}"
)
 
model = ChatOpenAI(model="gpt-4o-mini")
 
rewrite_chain = rewrite_prompt | model
answer_chain = answer_prompt | model
 
chain = clean | (lambda x: {"text": x}) | rewrite_chain | (lambda x: {"question": x.content}) | answer_chain
 
chain.invoke("   What is LangChain used for?  ")

这就是现代写法中对 SimpleSequentialChain 的直接替代。


Agent 在 LangChain 中的角色(2025 版)

Agent 允许 LLM 动态选择工具,比如:

  • 搜索引擎
  • 代码执行
  • 计算器
  • 各类 API
  • Retrievers
  • 自定义函数

示例(现代语法):

from langchain.agents import AgentExecutor, load_tools, create_react_agent
from langchain_openai import ChatOpenAI
 
llm = ChatOpenAI(model="gpt-4o-mini")
tools = load_tools(["llm-math"], llm=llm)
 
agent = create_react_agent(llm, tools)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
 
executor.invoke({"input": "If I'm half my dad's age and he'll be 60 next year, how old am I?"})

Agent 尤其适合下面这些场景:

  • 需要复杂推理
  • 需要在多种工具间做选择
  • 包含多轮决策步骤

如果任务流程是固定的,简单的 chain 反而更清晰。


实战示例:电影推荐工作流(现代化版本)

下面用 LCEL 把经典的 “两个 LLM 的 chain” 示例现代化。

步骤 1 — 询问用户喜欢的电影类型

from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
 
ask_prompt = PromptTemplate.from_template(
    "Ask the user about their favorite movie genres."
)
 
ask_chain = ask_prompt | ChatOpenAI(model="gpt-4o-mini")

步骤 2 — 给出电影推荐

recommend_prompt = PromptTemplate.from_template(
    "Based on these genres: {genres}, recommend 5 movies."
)
 
recommend_chain = recommend_prompt | ChatOpenAI(model="gpt-4o-mini")

组合两个步骤

chain = ask_chain | (lambda x: {"genres": x.content}) | recommend_chain
chain.invoke({})

加入 Memory(现代写法)

from langchain.memory import ConversationBufferMemory
 
memory = ConversationBufferMemory(return_messages=True)
 
# pipelines can load memory before passing to next step

你可以在 pipeline 中把 memory 注入到 prompt 输入中,或者按照自己的设计在各步骤之间传递。


总结

在 2024–2025 的版本中,LangChain 通过 LCEL pipelines、Runnables 和 Agents,让构建可扩展的 AI 工作流变得更加简单、清晰:

无论你是在:

  • 做文本预处理
  • 构建多步骤工作流
  • 集成各种工具
  • 搭建具备决策能力的 Agent

LangChain 都为你提供了可以自由拼装的基础积木,帮助你把一切有条理地连接起来。

大胆实验吧——很多强大的 AI 应用,都是从一个简单的 chain 逐步演化而来的。


FAQ(更新版)

  1. 什么是 LangChain?
    LangChain 是一个用于构建 AI 应用的框架,围绕 prompts、models、tools、memory 和 workflow graphs 等组件来搭建系统。

  2. SimpleSequentialChain 被什么取代了?
    使用基于 LCEL 的流水线,用 | 运算符把各个 Runnable 依次连接起来。

  3. 我该如何在 chain 中加入 memory?
    使用 ConversationBufferMemorySummaryMemory 或自定义 memory,然后在 chain 的输入中注入它们。

  4. Agent 现在还重要吗?
    依然重要。当需要动态选择工具时,Agent 是合适方案;如果流程完全固定,使用 chain 会更简洁。

  5. 我可以去哪里深入学习?
    可以查看 LangChain 官方文档,或者探索 LangGraph,了解基于工作流图的 Agent 编排方式。

📚