Prompt Chain
Prompt Chain(提示链/提示串联;prompt chaining)指把一个任务拆成两个或以上的提示模板按顺序执行:前一步的输出作为后一步提示的输入参数,如此迭代直到完成全部步骤(Wu et al., 2022)。
它的价值在于:把“一个大而杂的任务”拆成多个更简单、目标更明确的子任务,从而提升稳定性、可控性与可调试性。
1) 基本形式(抽象定义)
一个 prompt chain 通常长这样:
- Prompt 1(抽取/理解/计划)→ 输出
x - Prompt 2(基于 x 生成/推理/校验)→ 输出
y - Prompt 3(润色/格式化/安全过滤/最终交付)→ 输出
final
其中每一步都有自己的 prompt template,且下一步会把上一步结果填进模板变量里(parameterize)。
2) 为什么 prompt chaining 有用
相较于单一大 prompt,一条链的优势常见有:
- 降低认知负担:每一步只要求模型做一件事(抽取、推理、写作、校对)
- 可控性更强:你能对关键中间产物加格式约束(JSON、表格、列表)
- 可调试:哪一步错了很清楚,方便定位和替换某一步模板
- 可插入工具:任一步可加入检索、计算器、代码执行、规则引擎
- 减少幻觉:先“抽证据/列事实”,再“只基于事实回答”
3) 常见链式模式(你可以直接套用)
模式 A:Plan → Solve → Verify(规划-求解-校验)
- 生成解题计划/列约束
- 按计划求解
- 自检:对照约束、边界条件、单位、是否回答了问题
模式 B:Retrieve → Read → Answer(检索-阅读-作答,RAG 常用)
- 生成检索 query / 调用搜索
- 对证据做结构化摘录(带 chunk_id)
- 仅基于摘录回答,并输出引用
模式 C:Extract → Transform → Load(抽取-转换-落库,信息抽取常用)
- 从文本抽取字段(JSON)
- 标准化(时间、单位、枚举映射)
- 校验并输出可入库格式
模式 D:Draft → Critique → Revise(写作:初稿-批改-修改)
- 生成初稿
- 按 rubric 批评(列问题与改进点)
- 按批评重写(保留优点,修正问题)
4) 一个具体示例(两步链)
任务:根据用户需求生成会议纪要邮件,但先确保抓全约束。
Prompt 1(抽取需求与约束)
从用户输入中抽取:会议主题、时间、参与者、待办事项、截止日期、风险点。
输出 JSON,字段缺失用 null。
用户输入:{text}
输出(示例):
{
"topic": "...",
"time": "...",
"attendees": ["..."],
"todos": [{"task":"...","owner":"...","due":"..."}],
"risks": ["..."]
}
Prompt 2(生成邮件)
你将基于以下结构化信息撰写一封会议纪要邮件。
要求:简洁、专业、列出 todos(含负责人和截止日期),不发明 JSON 里没有的信息。
JSON:{json_from_step1}
5) 工程实现要点(落地时最关键的坑)
- 中间结果要结构化:尽量用 JSON/表格,避免自由文本导致“参数难填”
- 每一步都要有验收标准:例如 JSON schema、必须字段、最大长度
- 做失败分支:若 step1 缺关键字段,让 step2 先发澄清问题或走回退模板
- 控制上下文膨胀:链长了 token 会爆;中间产物要“压缩但不丢约束”
- 安全/合规最好单独一步:在最终输出前加“policy filter/redaction”步骤
6) 与“单轮多步骤提示”的区别
- 单轮提示:在一个 prompt 里写“第一步…第二步…”,模型仍可能混在一起、难以约束中间产物。
- Prompt chain:真的分多次调用,你能拿到每一步输出,做校验、修正、再喂给下一步,因此更可控、也更容易和工具/规则集成。
如果你告诉我你要串联的任务类型(RAG 问答/写作/抽取/代码/客服流程),我可以帮你设计一条 2–5 步的 prompt chain:每步模板、输入输出字段、以及失败回退策略。