跳转到主要内容
PromptQuorum为人类设计。 为AI结构化。
主页/提示词工程
Techniques

提示链:复杂任务分步示例与LangChain代码

·阅读约9分钟 作者 · PromptQuorum创始人 · 开放权重与开源AI发现引擎

提示链(Prompt Chaining)把复杂任务拆成一系列较小的提示,每次模型调用都以上一步的输出作为输入。当任务可以拆成固定步骤,并且你希望分别检查、测试和复用每一步时,就适合使用它。

关键要点

  • 提示链把一个任务拆成一系列提示,每次LLM调用都处理上一次调用的输出。
  • 它适合能清晰拆成固定子任务的任务。Anthropic把目标描述为用延迟换取更高准确率,让每次调用变得更容易。
  • 需要检查中间输出或强制流水线结构时,再显式串联;这是Claude提示指南给出的显式串联的两个理由。
  • 提示链不是思维链(chain-of-thought):思维链是在单个提示内写出推理过程,提示链则是多次独立调用。
  • 在LangChain中,用`init_chat_model`加载模型,每一步调用一次`invoke`,把结果传给下一个提示;需要分支或循环时使用LangGraph。
  • 每增加一步都会增加延迟、成本和新的出错点。只有当这一步明显让调用更简单时才增加。
  • 2022年一项有20名参与者的用户研究发现,串联提示提高了任务结果的质量,也提升了用户对透明度和可控性的感受(Wu等人,CHI 2022)。

提示链把一个过载的提示拆成一条由专注调用组成的短流水线。本文给出定义、示例、LangChain代码示例,以及不该使用提示链的情形。

提示链:复杂任务分步示例与LangChain代码

提示链把一个任务拆成相互衔接的提示

📍 In One Sentence

提示链把大任务拆成较小的提示,并把每一步的输出交给下一步,使每次调用都有一个可检查的任务。

💬 In Plain Terms

它像装配线,而不是一次庞大的请求:每个工位只做一件事并传递成果,出问题时你能看出是哪个工位导致的。

提示链把任务分解为一系列步骤,每次LLM调用处理上一次调用的输出。 你不再一次性提出所有要求,而是依次执行分析、规划、起草、审阅等步骤,每一步只负责一件事。

每一步都有明确的输入、明确的输出格式和单一职责。步骤之间,你的代码可以校验或修改输出,因此提示链更像一条可测试的流水线,而不是只能寄希望于结果的聊天。

提示链示意图:复杂任务被拆成顺序的LLM调用,每一步的输出传给下一步。
提示链示意图:复杂任务被拆成顺序的LLM调用,每一步的输出传给下一步。

串联让每次模型调用更容易检查

当任务层次太多、单个提示难以可靠完成时,串联就有帮助。 把理解、规划、生成和检查分开,你就能在每个阶段保持控制。

  • 每次调用都是更简单的任务,Anthropic将其描述为用延迟换取更高准确率。
  • 可以检查并校验中间输出,这是Claude提示指南给出的显式串联的两个理由之一。
  • 步骤可复用:“摘要”“提取实体”“翻译”等可以在多个工作流之间共享。
  • 可以为每一步分配不同的模型,例如用小而快的模型做提取,用更强的模型做写作。

提示链的四种常见模式

大多数提示链都在重复使用几种固定形态。 选择与你的任务匹配的一种,再调整步骤。

  • 分析 → 规划 → 起草 → 润色:文章、报告、策略。
  • 提取 → 转换 → 总结:原始文档、日志、支持工单。
  • 分类 → 路由 → 生成:先分拣输入,再发送给专门的提示。
  • 草稿 → 审阅 → 改进:对文案、代码或设计进行迭代式自我修正。
常见的提示链模式:顺序、分支和map-reduce工作流。
常见的提示链模式:顺序、分支和map-reduce工作流。

三步提示链比一个冗长的提示更容易检查

当一个长提示和一条短提示链处理同一任务时,差别最容易看出来。 任务:把原始发布说明变成面向客户的更新日志。

单个提示

“阅读这些发布说明,为我们的用户写一份友好的更新日志。”

提示链

第1步,提取:“从发布说明中提取所有用户可见的变更,并按功能领域分组,以要点列出。”

第2步,分类:“把每个要点标为缺陷修复、改进或新功能,并用一行说明其重要性。”

第3步,撰写:“根据已标注的列表,写一封简短的更新日志邮件,包含开头和3至6个要点。侧重用户收益,而不是内部细节。”

现在每个提示都更简单,可以单独测试,也能在其他工作流中复用。

实例:提取变更、分类,再用三步LLM调用撰写更新日志。
实例:提取变更、分类,再用三步LLM调用撰写更新日志。

常见任务的提示链示例

这些示例展示了提示链在哪些地方可以取代一个过载的提示。 前两项来自Anthropic对该模式的说明,审阅链是Claude提示指南中的自我修正模式。

用例
链的步骤
为何串联
营销文案写文案 → 翻译翻译前先检查文案
文档写作提纲 → 检查 → 撰写起草前先把关提纲
支持工单分流分类 → 路由 → 回复每个类别有专属提示
代码或文本审阅草稿 → 审阅 → 改进写作与批评分开调用
日志分析提取 → 分组 → 总结让每次调用保持小而可查

Python中的LangChain提示链示例

要在LangChain中串联提示,用`init_chat_model`加载聊天模型,每一步调用一次`invoke`,并把每一步的文本传给下一个提示。 示例运行上文的更新日志链,前提是已配置`langchain`、你所用提供商的集成包及其API密钥。

对于更高级的需求,LangChain指向LangGraph,这是它用于组合确定性和智能体工作流的底层编排框架(例如分支或循环)。智能体通过`create_agent`创建。

python
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. 1
    把任务拆成阶段,每个阶段只做一件事。 以博客文章为例:提纲、起草各节、核查事实、排版。
  2. 2
    定义每一步的输出格式。 如果第2步需要JSON,就让第1步输出恰好这种JSON。
  3. 3
    连接前先单独测试每一步。 用十个真实输入运行第1步,修正后再构建第2步。
  4. 4
    在步骤之间加入检查。 在代价较高的步骤之后加入程序化校验或人工审阅,防止错误层层传递。
  5. 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的例子:第一次调用生成营销文案,第二次调用把它翻译成另一种语言。两次调用之间,你可以在翻译前检查文案。

来源与延伸阅读

使用本地LLM或您自己的API密钥应用这些技术 — PromptQuorum适用于任何后端。

免费试用PromptQuorum →

← 返回提示词工程

MCP