提示链把一个任务拆成相互衔接的提示
📍 In One Sentence
提示链把大任务拆成较小的提示,并把每一步的输出交给下一步,使每次调用都有一个可检查的任务。
💬 In Plain Terms
它像装配线,而不是一次庞大的请求:每个工位只做一件事并传递成果,出问题时你能看出是哪个工位导致的。
提示链把任务分解为一系列步骤,每次LLM调用处理上一次调用的输出。 你不再一次性提出所有要求,而是依次执行分析、规划、起草、审阅等步骤,每一步只负责一件事。
每一步都有明确的输入、明确的输出格式和单一职责。步骤之间,你的代码可以校验或修改输出,因此提示链更像一条可测试的流水线,而不是只能寄希望于结果的聊天。
串联让每次模型调用更容易检查
当任务层次太多、单个提示难以可靠完成时,串联就有帮助。 把理解、规划、生成和检查分开,你就能在每个阶段保持控制。
- 每次调用都是更简单的任务,Anthropic将其描述为用延迟换取更高准确率。
- 可以检查并校验中间输出,这是Claude提示指南给出的显式串联的两个理由之一。
- 步骤可复用:“摘要”“提取实体”“翻译”等可以在多个工作流之间共享。
- 可以为每一步分配不同的模型,例如用小而快的模型做提取,用更强的模型做写作。
提示链的四种常见模式
大多数提示链都在重复使用几种固定形态。 选择与你的任务匹配的一种,再调整步骤。
- 分析 → 规划 → 起草 → 润色:文章、报告、策略。
- 提取 → 转换 → 总结:原始文档、日志、支持工单。
- 分类 → 路由 → 生成:先分拣输入,再发送给专门的提示。
- 草稿 → 审阅 → 改进:对文案、代码或设计进行迭代式自我修正。
三步提示链比一个冗长的提示更容易检查
当一个长提示和一条短提示链处理同一任务时,差别最容易看出来。 任务:把原始发布说明变成面向客户的更新日志。
单个提示
“阅读这些发布说明,为我们的用户写一份友好的更新日志。”
提示链
第1步,提取:“从发布说明中提取所有用户可见的变更,并按功能领域分组,以要点列出。”
第2步,分类:“把每个要点标为缺陷修复、改进或新功能,并用一行说明其重要性。”
第3步,撰写:“根据已标注的列表,写一封简短的更新日志邮件,包含开头和3至6个要点。侧重用户收益,而不是内部细节。”
现在每个提示都更简单,可以单独测试,也能在其他工作流中复用。
常见任务的提示链示例
这些示例展示了提示链在哪些地方可以取代一个过载的提示。 前两项来自Anthropic对该模式的说明,审阅链是Claude提示指南中的自我修正模式。
用例 | 链的步骤 | 为何串联 |
|---|---|---|
| 营销文案 | 写文案 → 翻译 | 翻译前先检查文案 |
| 文档写作 | 提纲 → 检查 → 撰写 | 起草前先把关提纲 |
| 支持工单分流 | 分类 → 路由 → 回复 | 每个类别有专属提示 |
| 代码或文本审阅 | 草稿 → 审阅 → 改进 | 写作与批评分开调用 |
| 日志分析 | 提取 → 分组 → 总结 | 让每次调用保持小而可查 |
Python中的LangChain提示链示例
要在LangChain中串联提示,用`init_chat_model`加载聊天模型,每一步调用一次`invoke`,并把每一步的文本传给下一个提示。 示例运行上文的更新日志链,前提是已配置`langchain`、你所用提供商的集成包及其API密钥。
对于更高级的需求,LangChain指向LangGraph,这是它用于组合确定性和智能体工作流的底层编排框架(例如分支或循环)。智能体通过`create_agent`创建。
from langchain.chat_models import init_chat_model
model = init_chat_model("claude-sonnet-4-6") # any supported chat model
def run(prompt: str) -> str:
return model.invoke(prompt).text
notes = "..." # raw release notes
changes = run(f"List every user-visible change as bullets:\n{notes}")
labeled = run(f"Label each bullet as bug fix, improvement or new feature:\n{changes}")
email = run(f"Write a short user-facing changelog email from this list:\n{labeled}")
print(email)固定阶段用提示链,小任务用单个提示
当任务可拆成可能各自失败或变化的固定阶段时,使用提示链。 一个塞满“如果……”条件的超长提示,通常说明它需要拆成链。
- 适合用链:内容流水线(调研 → 提纲 → 草稿 → 编辑)、数据流水线(接入 → 清洗 → 提取 → 总结)、决策支持(事实 → 方案 → 权衡 → 建议)。
- 适合单个提示:无需检查中间结果的小型一次性任务。
- 考虑智能体:无法预先固定步骤的开放性问题(Anthropic区分固定工作流和智能体)。
提示链、单个提示与思维链的对比
三种方式的区别在于工作发生在哪里。 提示链把工作分散到多次调用;思维链把它保留在一个回答之内。
维度 | 单个提示 | 提示链 | 思维链 |
|---|---|---|---|
| 模型调用 | 1次 | 每步1次 | 1次 |
| 推理发生处 | 一个回答内 | 步骤之间,在你的代码里 | 写在一个回答内 |
| 中途检查 | 不能 | 可以,每步之后 | 只能阅读文本 |
| 成本与延迟 | 最低 | 较高:每步一次调用 | 略高:输出更长 |
| 最适合 | 简单任务 | 有固定阶段的任务 | 逻辑密集的单个问题 |
框架可自动化提示链,但思路不变
你可以用普通API调用手动串联,也可以用框架来编排。 概念完全相同,框架只是增加了追踪、重试和结构。
- LangChain:用`init_chat_model`加载模型,用`create_agent`创建智能体,用LangGraph做底层编排。
- DSPy(Khattab等人):把声明式语言模型调用编译成可自我改进的流水线。
- Anthropic,Building effective agents:提示链及其他工作流模式,并说明各自的适用场景。
- Claude提示指南“Chain complex prompts”:显式串联“is still useful when you need to inspect intermediate outputs or enforce a specific pipeline structure”。
分五步构建提示链
- 1把任务拆成阶段,每个阶段只做一件事。 以博客文章为例:提纲、起草各节、核查事实、排版。
- 2定义每一步的输出格式。 如果第2步需要JSON,就让第1步输出恰好这种JSON。
- 3连接前先单独测试每一步。 用十个真实输入运行第1步,修正后再构建第2步。
- 4在步骤之间加入检查。 在代价较高的步骤之后加入程序化校验或人工审阅,防止错误层层传递。
- 5记录中间输出并迭代。 结果出错时,日志会告诉你该修哪一步。
需要避免的四个提示链错误
❌ 步骤过多
Why it hurts: 每增加一步都会增加延迟,也多一次出错的机会。
Fix: 从能让每次调用变简单的最少步骤开始,合并不改变结果的步骤。
❌ 交接格式含糊
Why it hurts: 第2步无法依赖第1步给出的“一份想法清单”。
Fix: 明确指定确切格式,如JSON键,并给出示例输出。
❌ 步骤之间没有检查
Why it hurts: 糟糕的提纲会变成糟糕的草稿,最终文本更差。
Fix: 对出错代价高的步骤,校验或审阅其输出。
❌ 只测试整条链
Why it hurts: 最终输出出错时,你不知道是哪一步失败。
Fix: 先单独测试每一步,再端到端测试整条链。
错误会在步骤之间累积
每一步都是模型可能出错的又一个点。 这是说明性的算术,不是实测结果:如果五步各自有95%的概率正确且错误相互独立,整条链正确的概率约为77%(0.95的5次方)。
因此,比起增加阶段,更重要的是短链、逐步测试和步骤之间的检查。
在PromptQuorum中比较各模型处理链中某一步的效果
PromptQuorum把一个提示发送给多个模型,并并排展示回答。 对于提示链,可以让多个模型各运行其中一步,看哪个处理得最好,再把这一步分配给相应模型。
常见问题
什么是提示链?
提示链是一种把任务分解为一系列步骤的技术,每次LLM调用都处理上一次调用的输出。每一步职责明确,你可以在步骤之间检查或修改结果。
提示链由什么构成?
它由把大任务拆成较小且相互衔接的提示构成。第一个提示按约定格式产生输出,该输出成为第二个提示的一部分,依此类推,直到最后一步给出你需要的结果。
提示链和思维链提示有什么区别?
思维链让模型在一个提示、一个回答中写出推理过程。提示链使用多次独立调用,由你的代码在调用之间传递结果。两者可以结合:在提示链的某一步中使用思维链。
如何在LangChain中实现提示链?
用`init_chat_model`加载模型,对第一个提示调用`invoke`,读取响应文本,把它填入第二个提示,然后重复。对于更高级的需求,LangChain指向LangGraph,这是它用于组合确定性和智能体工作流的底层编排框架(例如分支或循环)。
什么时候不该使用提示链?
对一个提示就能解决的小型一次性任务,以及无需检查中间结果的情形,可以不用。对于无法预先固定步骤的开放性问题,Anthropic建议使用智能体而不是固定工作流。
提示链应该有多少步?
没有固定数字。使用能让每次调用变简单的最少步骤,因为每一步都会增加延迟、成本和新的出错来源。去掉后不改变输出的步骤应当合并。
提示链和微调是一回事吗?
不是。提示链改变调用模型的方式,即按顺序使用多个提示;微调则通过示例训练来改变模型本身。两者可以结合,提示工程与微调的对比说明了各自的适用情形。
提示链的简单例子是什么?
Anthropic的例子:第一次调用生成营销文案,第二次调用把它翻译成另一种语言。两次调用之间,你可以在翻译前检查文案。
来源与延伸阅读
- Anthropic,“Building effective agents” — 提示链的定义、适用场景与示例。
- Claude提示指南,“Chain complex prompts” — 显式串联仍然有用的情形,以及草稿、审阅、改进模式。
- Wu、Terry和Cai(2022)。“AI Chains: Transparent and Controllable Human-AI Interaction by Chaining Large Language Model Prompts.” CHI 2022,arXiv:2110.01691 — 关于串联提示的20人用户研究。
- LangChain文档 — `init_chat_model`、`create_agent`和LangGraph。
- Khattab等人(2023)。“DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelines.” arXiv:2310.03714 — 程序化的提示流水线。
