Prompt Chaining:多步骤 Prompt 的设计与编排
难度:中级 分类:Prompt Engineering
简短回答
Prompt Chaining(提示链)是将复杂任务分解为多个顺序执行的 LLM 调用,每个调用的输出作为下一个调用的输入。它是 Agentic AI 中最基础的设计模式,也被称为 Pipeline 模式。核心优势:(1) 可控性——每步都有明确的输入输出,易于调试;(2) 可靠性——每个 Prompt 专注于一件事,比要求 LLM 一次完成所有事更准确;(3) 可观测性——可以在任意步骤插入验证、人工审核或条件分支。典型链式结构包括:线性链(A→B→C)、条件链(根据中间结果分支)、并行链(独立步骤并行执行后合并)。AWS 将 Prompt Chaining 列为 Agentic AI 的核心工作流模式之一。
详细解析
Prompt Chaining 的基本模式

链式三种拓扑:线性直通、条件分支选路、并行扇出-汇合。
线性链实现
代码块
Python
class PromptChain:
"""线性 Prompt Chain 实现"""
def __init__(self, llm):
self.llm = llm
self.steps = []
def add_step(self, name, prompt_template, output_parser=None):
self.steps.append({
"name": name,
"prompt": prompt_template,
"parser": output_parser or (lambda x: x)
})
return self
async def run(self, initial_input):
context = {"input": initial_input}
for step in self.steps:
# 用当前上下文渲染 Prompt
prompt = step["prompt"].format(**context)
# 调用 LLM
response = await self.llm.invoke(prompt)
# 解析输出并加入上下文
parsed = step["parser"](response)
条件链(Gate/Router 模式)
代码块
Python
class ConditionalChain:
"""根据中间结果选择不同的后续链"""
async def run(self, user_input):
# Step 1: 分类意图
intent = await self.llm.invoke(f"""
将以下用户消息分类为一种意图:
- QUESTION: 用户在提问
- ACTION: 用户要求执行操作
- FEEDBACK: 用户在提供反馈
消息:{user_input}
意图:
""")
并行链
代码块
Python
带验证的链(Quality Gate)
代码块
Python
class ValidatedChain:
"""每步都带输出验证的链"""
async def run(self, input_data):
# Step 1: 生成
draft = await self.llm.invoke(
f"为以下产品写一份营销文案:{input_data}"
)
# Step 2: 验证(Quality Gate)
validation = await self.llm.invoke(f"""
审查以下营销文案的质量:
设计原则
代码块
JSON
Prompt Chaining vs Agent Loop
代码块
Plain Text
Prompt Chaining(确定性工作流):
步骤固定、顺序确定、可预测
适合:标准化流程(审核、转换、报告生成)
Agent Loop(自主决策循环):
步骤动态、根据结果决定下一步
适合:开放式任务(调试、研究、探索)
常见误区 / 面试追问
误区:"链越长越好,任务拆得越细越好" — 每增加一步链就增加一次 LLM 调用的延迟和成本,也增加一次出错的机会。关键是找到合适的粒度——每步应该是 LLM 能可靠完成的最小有意义单元。
误区:"Prompt Chaining 就是把多个 Prompt 串联起来" — 好的 Chaining 还包括:中间结果的解析和验证、错误处理和重试、条件分支、并行执行、以及上下文管理。简单的串联只是 Chaining 的最基础形式。
追问:"如何处理链中某一步失败?" — 三种策略:(1) 重试当前步骤(带指数退避);(2) 跳过当前步骤使用默认值;(3) 回退到上一步用不同方式重试。选择哪种取决于该步骤的关键程度。
追问:"Prompt Chaining 和 LangChain 的 Chain 是什么关系?" — LangChain 的 LLMChain / SequentialChain 等老 Chain 类已被 LCEL(LangChain Expression Language) 替代——LCEL 是新一代的"链表达式"运行时,提供 streaming / async / parallel / fallback 等原语,本质仍是 Prompt Chaining 模式的语法升级。LangGraph 则是不同抽象层级:它是面向 Agent 的有状态图引擎(state + node + edge + checkpointer),用于建模带循环和条件路由的复杂控制流,而不是 Chain 的替代品。简言之:LCEL ≈ "新的 Chain",LangGraph ≈ "更上层的 Agent 编排"。Prompt Chaining 是通用设计模式,可以用任何语言/框架实现,不依赖 LangChain。