提示链与复杂任务分解

当你发现一条提示词越写越长、模型却越容易”漏步骤、跑偏、格式乱”时,往往说明任务该拆了。提示链(Prompt Chain)就是把一个复杂任务拆成多条提示、按顺序接力完成,每一步的输出成为下一步的输入。本文讲清它的适用场景、与一次性提示的取舍,以及与 Agent 的关系,并给出两个可直接落地的示例。

单条复杂提示的局限

把”写研报""清洗数据”塞进一条提示,常见三类问题:

  • 注意力稀释:指令太多,模型对靠后的要求遵从度下降(类似”中间遗忘”)。
  • 错误难定位:一步算错,后续全错,且你分不清是哪一步出的问题。
  • 不可复用:逻辑全揉在一起,换个数据就得重写整条提示。

类比:你不会让一个实习生”从找资料到排版一次性交稿”,而是拆成”搜集—摘要—成稿—校对”几道工。提示链就是给模型安排流水线。

维度单条复杂提示提示链
调试难度高,错因难定位低,逐步可查
可控性强,每步可干预
成本/延迟一次调用多次调用,略高
适合场景简单或一次性任务多步、需质量的任务

什么是提示链(Prompt Chain)

提示链由若干”节点”组成,每个节点是一段提示 + 一次模型调用,明确三件事:

  • 输入:本步接收什么(用户原始需求 / 上一步的输出)。
  • 处理:这一步具体做什么。
  • 输出:产出什么形态,供下一步消费。

形式上它和 LangChain 这类框架倡导的”把多个 runnable/提示串起来”一致——LangChain 的官方文档将模型、提示、工具组合成可编排的链路作为核心用法。下面以伪代码描述一个链:

steps = [
    summarize_sources,   # 步骤1:压缩资料
    draft_outline,       # 步骤2:列大纲
    write_section,       # 步骤3:逐节撰写
    polish_and_check,    # 步骤4:校对与格式
]

data = user_input
for step in steps:
    data = llm(prompt=step.template, input=data)
final = data

何时用链,何时一次性提示

经验判断:

  • 用一次性提示:任务单步可完成、对中间过程无审计需求、追求最低延迟。例如翻译、改写、单轮问答。
  • 用提示链:任务有多条清晰子目标、任一步出错代价高、需要人工在中间把关、或输出要结构化拼接。例如报告生成、数据清洗、代码生成+测试。

一个实用信号:当你不得不在一句话里写”首先…然后…最后…并且格式要…”超过三件事,就该考虑拆链。

提示链与 Agent 的关系

提示链和 Agent 都处理”多步任务”,区别在于决策权在谁手里

  • 提示链:流程是固定的、由你预先编排。每一步怎么走、走几步,写死在代码里。可控、可预测、易测试。
  • Agent:模型自己决定下一步调哪个工具、是否继续。适合路径不确定、需要探索的任务,但更难保证稳定与成本。

二者并非二选一:很多生产系统用提示链做主流程骨架,在个别节点嵌入一个小型 Agent 处理不确定子任务。Anthropic 对”工作流(workflow)与 Agent”的区分也强调:能确定性编排就尽量编排,只在必要时引入自主循环。

实战示例一:研报生成流水线

把”生成一份行业研报”拆成四步链:

步骤1 摘要:下面是从多篇新闻/公告中抽取的素材。
请压缩为 5 条要点,每条附来源标题,不要评价。
素材:{raw_materials}

步骤2 大纲:基于上面的要点,产出研报三级大纲
(背景/现状/风险/机会),只列标题。

步骤3 撰写:按大纲逐节写正文,每节 150~250 字,
引用步骤1的要点编号,不编造数据。

步骤4 校对:检查上文是否出现无来源的断言,
把有问题句子改为"据公开信息显示"或删除,并统一术语。

每一步输入上一步输出,最终人工只需在步骤2(大纲)把关方向,大幅降低返工。

实战示例二:数据清洗流水线

把”清洗脏数据”拆成三步链,每一步职责单一、易验证:

步骤1 去噪:下面是一批用户留言,含表情、广告、乱码。
只保留与产品体验相关的有效文本,输出 JSON 数组。
输入:{raw_comments}

步骤2 分类:对上一步每条评论打标签
(功能建议/吐槽/咨询/其他),输出 JSON:
[{"text":"...","label":"..."}]

步骤3 汇总:统计各标签数量,输出 JSON:
{"功能建议":n,"吐槽":n,"咨询":n,"其他":n}

若步骤2分类不准,你只需改步骤2提示重跑,不必动整体。这正是拆链带来的可维护性。

小结

  • 单条复杂提示易”注意力稀释、错因难查、不可复用”,长任务应拆链。
  • 提示链 = 多个节点接力,每节点明确输入/处理/输出,框架如 LangChain 即此思路。
  • 简单单步任务用一次性提示;多步、需质量与可审计的任务用链。
  • 提示链流程固定、可控可测;Agent 自行决策、适合不确定路径;二者常结合使用。
  • 实战中在”关键节点”(如研报大纲、清洗规则)留人工把关,能显著降低返工。
  • 拆链后每一步可单独迭代与回归测试,是提示工程走向工程化的关键一步。

参考来源

  1. LangChain. LangChain overview(模型/提示/工具编排为链路的核心用法). https://docs.langchain.com/oss/python/langchain/overview
  2. Anthropic. Prompt engineering overview(含 thinking、prompt chaining 等技术索引). https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview
  3. OpenAI. Prompt engineering(拆分复杂任务、用参考文本等战术). https://platform.openai.com/docs/guides/prompt-engineering
本文累计阅读