乐于分享
好东西不私藏

(02) 为什么你的 AI 总是丢三落四?试试链式提示词

(02) 为什么你的 AI 总是丢三落四?试试链式提示词

你有没有遇到过这种情况——给 AI 一条超长的提示词,要求它同时完成总结、提取数据、写邮件三件事,结果只做对了第一件,后面全跑偏了?

这不是 AI 不够聪明,是你给它塞的东西太多了。提示词链就是解决这个问题的第一种设计模式。

提示词链(Prompt Chaining),也叫管道模式(Pipeline),核心思路就一句话:把复杂任务拆成一系列小步骤,前一步的输出是后一步的输入

想象一个工厂流水线:原材料进来→切割→打磨→喷漆→质检→包装出库。每一步只做一件事,但串联起来就能完成复杂的产品制造。提示词链也是这个道理——每一步用一个专门设计的提示词,让 LLM 聚焦于一个子任务。

原书给出了一个经典的例子。假设你要处理一份市场研究报告,要求包含:总结发现、识别趋势、起草邮件。如果用一条提示词全部搞定,LLM 很可能指令忽略(跳过部分要求)、上下文偏离(忘了开头说了什么)、甚至幻觉(压力太大编造信息)。

用提示词链就清晰了:

  1. 1. 提示词 1:总结这份市场报告的主要发现
  2. 2. 提示词 2:基于上面的总结,识别前三大趋势并提取数据
  3. 3. 提示词 3:根据识别的趋势,给营销团队起草一封邮件

每一步的 LLM 认知负荷大幅降低,输出更准确、更可控。

为什么需要它:单一提示词的五个坑

原书明确列出了单一复杂提示词的五个典型问题:

问题
表现
指令忽略
提示词里有 5 条要求,只执行了 3 条
上下文偏离
处理到后面忘了前面的约束
错误传播
前面的判断错了,后面的结论跟着错
上下文窗口不足
输入太多,模型拿不到足够信息
幻觉
认知负荷过大,开始编造不存在的内容

提示词链通过分而治之解决这些问题:每个步骤只聚焦一个子任务,模型压力小、出错少。而且中间可以加程序化检查点(guardrails),某一步不合格就拦下来重做,不让错误往后传。

怎么用:关键设计要点

步骤之间传结构化数据

链条的可靠性取决于步骤之间传递的数据质量。如果上一步输出一段含糊的自然语言,下一步很可能误解。

原书建议:用 JSON 或 XML 等结构化格式作为步骤间的传递格式。例如,趋势识别这一步的输出可以格式化为:

{  "trends": [    {      "trend_name": "AI 个性化",      "supporting_data": "73% 的消费者更愿意与使用个人信息的品牌交易"    }  ]}

机器可读、无歧义、可直接注入下一步。 这是构建健壮链式系统的基础。

每一步可以分配不同角色

为了让每步输出更专业,可以给 LLM 分配不同身份:第一步当“市场分析师”,第二步当“趋势研究员”,第三步当“商务写作专家”。角色切换让模型在每个子任务上更聚焦。

用框架管理链条

原书推荐 LangChain 和 LangGraph 来实现提示词链。一个最简示例:

from langchain_openai import ChatOpenAIfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import StrOutputParserllm = ChatOpenAI(temperature=0)# 步骤 1:提取技术规格prompt_extract = ChatPromptTemplate.from_template(    "从以下文本中提取技术规格:\n\n{text_input}")# 步骤 2:转换为 JSONprompt_transform = ChatPromptTemplate.from_template(    "将以下规格转为 JSON,使用'cpu'、'memory'、'storage'作为键:\n\n{specifications}")# 用 LCEL 串联extraction_chain = prompt_extract | llm | StrOutputParser()full_chain = (    {"specifications": extraction_chain}    | prompt_transform    | llm    | StrOutputParser())result = full_chain.invoke({"text_input": "新款笔记本配备 3.5GHz 八核处理器、16GB 内存和 1TB 固态硬盘。"})print(result)

两个提示词通过 LangChain 表达式语言(LCEL)优雅串联,第一步的输出自动成为第二步的输入。

什么时候用,什么时候别用

适合用
不适合
任务天然有先后依赖(先总结再分析再写报告)
任务本身就很简单,一条提示词能搞定
单条提示词太复杂,LLM 经常遗漏或跑偏
子任务之间没有依赖关系(应该用并行化模式)
需要在中间加检查点、人工审核或调用外部工具
需要根据输入动态选择不同路径(应该用路由模式)
多步推理任务(回答复杂问题需要先拆子问题)

提示词链是 Agent 工作流的地基——当你需要把一个大任务拆成有序的步骤链时,它是第一个该想到的模式。

行动建议

  • • 如果你刚开始学 Agent:动手跑一遍上面的 LangChain 示例代码,体会“前一步输出→后一步输入”的数据流转
  • • 如果你已有 Agent 开发经验:检查你的工作流中是否有“一条提示词做太多事”的情况,试着拆成链式结构,对比效果
  • • 如果你在设计系统架构:把提示词链作为基础编排模式,在它之上叠加路由和并行化来构建更复杂的 Agent 系统

本系列文章基于 O'Reilly《Agentic Design Patterns》原书内容整理原书作者:Vishal Rajput中文翻译参考:xindoo/agentic-design-patterns[1]

引用链接

[1] xindoo/agentic-design-patterns: https://github.com/xindoo/agentic-design-patterns