首页 › AI Agent › Agent100道面试题 › 提示工程-prompt-engineering › Prompt Chaining:多步骤 Prompt 的设计与编排

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。​