这篇文章介绍了提示链(Prompt Chaining)设计模式,解释了如何将复杂AI任务拆分为多步流水线,每步由专门提示负责。文章指出单一超长提示词会导致输出混乱、关键信息丢失和调试困难,而提示链模式通过结构化输出和分步处理解决了这些问题。作者提供了使用LangChain的代码示例,并分享了先画流程再写提示、中间结果结构化等实用心法,帮助开发者构建更可控、可维护的AI Agent系统。
前排提示,文末有大模型AGI-优快云独家资料包哦!
So… what’s this series actually about?
欢迎来到《智能体设计模式实战指南》的第一篇。
先说好,这不是那种“看完感觉懂了、写代码发现不会”的 AI 科普,而是给AI应用开发者准备的一套 能直接搬进项目里的 Agent 设计套路。
整个系列围绕一本超硬核的书展开——《Agentic Design Patterns: A Hands-On Guide to Building Intelligent Systems》。
作者 Antonio Gulli 把一个现代 Agent 系统拆成了 21 个设计模式:从最基础的提示链、路由、并行、反思、工具使用,到记忆管理、学习与适应、人机协作,再到 A2A 通信、评估监控、探索与发现,基本把“一个 Agent 系统从能跑到跑得稳”的关键结构问题都过了一遍。
在代码层面,这个系列会 优先使用 LangChain(示例代码默认基于 LangChain v1.0 接口规范,如果你使用的是其他主版本的LangChain,某些模块路径和调用方式可能会略有差异,请以官方文档为准稍作调整。 ) 作为示例框架——不是别的框架不行,只是出于生态成熟度、文档丰富度和工程落地案例方面考虑,才作此选择:
你在这里看到的大部分代码思路,可以很容易地迁移到你自己的 Tech Stack 里(无论是自研编排、其他 Agent 框架,还是直接基于 LLM SDK 搭建)。
这个博客系列要做的事情,可以简单粗暴地理解为:给这本书加一套“面向一线工程师的实战注解”(没错,就是给各位大佬搬搬砖[手动狗头])。
本系列目标和受众群体:
这个博客系列
在做什么?
适合谁看?
你能得到什么?
每篇只讲一个设计模式聚焦“解决什么问题 & 何时使用”
用贴近真实业务的案例而不是只翻译玩具示例
配上可运行代码 + 流程图把书里的抽象结构落到工程节点
从“写 Prompt 调模型”升级到“设计 Agent 架构”的开发者/架构师
已经在用大模型但觉得 Agent 部分不好观测/不好调优的团队
想系统性补智能体设计模式但不打算啃 400+ 页英文书的同学
遇到需求时第一反应是先画工作流而不是堆长 Prompt
搞清楚:哪些需求用“提示链 + 路由 + 并行”足够哪些场景必须上记忆 / RAG / 多智能体
在自己的项目里落下一套可观测、可调优、可扩展的 Agent 设计
- • 每篇只聚焦一个设计模式,讲清楚它解决什么问题、什么时候该用、什么时候别用
- • 不搞纸上谈兵,用尽量贴近真实业务的例子(而不是只翻译一个“帮我写新闻摘要”)
- • 配上可以跑的代码和流程图,把书里的抽象结构,落到你项目里的具体节点
如果你大概属于下面这几类人,这个系列会比较对胃口:
- • 正在从“写 Prompt 调模型”升级到“设计 Agent 系统架构”的开发者 / 架构师
- • 已经在项目里用大模型,但觉得 Agent 这块“有点散、不好观测、不好调优”的团队
- • 想系统性补一遍智能体设计模式,但不打算先啃完 400+ 页英文技术书的同学
跟着这个系列往下走,你可以期待的是:
- • 遇到需求时,第一反应不再是“我再写个更长一点的提示词”,而是先画出一条工作流
- • 知道哪些问题用“提示链 + 路由 + 并行”就足够,哪些场景必须上记忆、RAG 或多智能体
- • 能够在自己的项目里落下一套 可观测、可调优、可扩展 的 Agent 设计,而不是一堆一次性脚本
有一说一,最近大家做 Agent,是否多少都有点这种体验:
- • 文档、论文看了一堆,上手还是只会“写一个长长的 Prompt 调个模型”
- • 框架示例抄了不少,串起来却总感觉像 if-else 拼接脚本
所以这个系列想做的事情很简单:
把书《Agentic Design Patterns: A Hands-On Guide to Building Intelligent Systems》里的那些模式,拆成一篇篇“能看懂、能跑起来、能复用”的工程笔记。
这一期,我们就从后面很多模式都会依赖的底座开始——提示链(Prompt Chaining)。
一、为什么“一个超长提示词”撑不起一个靠谱的 Agent?
想象一个常见需求:你有一篇 10 页的产品设计文档,希望 Agent 做这么几件事:
-
- 先帮你提取关键需求和约束
-
- 再总结成一份 1 页的产品梗概
-
- 顺便列出一些潜在风险点和技术挑战
很多人的第一反应是写一个“超级提示词”:
“请你阅读下面的文档,帮我做 1、2、3、4、5、6……(下略两百字)”
如果把这个“脑子一热写了个超长 Prompt”画成一张图,大概是这样:
10 页产品文档
一个超长 Prompt一次性做完提取 + 总结 + 风险分析 + 建议
一坨混在一起的长输出
从结果上看,通常会遇到这几件糟心事:
- • 输出里有你要的东西,但结构混乱,很难直接用在后续流程里
- • 有些关键点会莫名其妙消失(指令一多,模型就开始“选择性失忆”——上下文腐烂)
- • 一旦你想稍微调整一下需求,就得重写整段巨长提示
换句话说,你把所有的复杂度都塞给了同一个 Prompt 和同一次模型调用。
书里的总结其实很朴素:复杂任务 + 单一提示 = 高认知负荷 + 难以控制。
你给模型塞得越多,它越难“既记得住所有事情,又能按你的格式输出”,而你这边的调试成本也会指数级上升。
而提示链模式要做的事,就是把上面那团“糊成一锅”的东西拆开,变成下面这种形态:
10 页产品文档
步骤1:只做信息抽取
步骤2:只管整理成结构化表示
步骤3:只负责生成总结
步骤4:只管做风险分析
这也是提示链模式要解决的第一个现实痛点:
把“不好控制的一大坨任务”,拆成“若干可控的小步骤”,每一步只做一件事。
二、提示链模式到底在干什么?
用一句话概括:提示链(Prompt Chaining)就是把复杂任务拆成一条多步流水线,每一步由一个专门的提示负责,前一步的输出是后一步的输入。
从工程视角看,它至少解决了三类问题:
- • 指令管理问题:每个步骤的提示词更短、更聚焦,更容易迭代和调优
- • 输出结构问题:通过结构化输出(比如 JSON),让后续步骤不再“读自然语言猜意思”
- • 可维护性问题:你可以针对某一小步单独测试、单独替换,而不用动整条链
用一个极简的流程来画,大概是这样:
原始文档
步骤1:抽取核心信息
步骤2:结构化整理成 JSON
步骤3:生成自然语言总结
步骤4:产出行动建议/报告
如果再“工程化”一点,一个稍微保险的版本通常还会长这样:
抽取成功
抽取失败
原始文档
步骤1:信息抽取
步骤2:结构化存储(DB / KV / 向量库)
回退策略:重试 / 降级 / 人工审核
步骤3a:总结报告
步骤3b:风险分析
步骤3c:生成后续任务列表
上面这条图里,有两个小细节很关键:
- • 抽取失败不是“悄悄算了”,而是要有明确的回退节点(方便你挂告警、拉人值班)
- • 抽取结果一旦结构化存了起来,后面无论要接多少下游 Agent,都可以直接读这份“规格书”,而不是让每个 Agent 各自再读一遍原文档
在原书的 21 个模式里,提示链更像是一个“底层骨架”:
路由、反思、工具使用、规划、多智能体协作……很多模式最后都会“落”在一个更复杂的链条上,只是中间节点不再只是“提示 + 模型调用”,而是可以夹杂工具、记忆、外部系统调用等更多东西。
三、一个从“文档”到“报告”的提示链长什么样?
我们先不用一上来就堆框架 API,先把工程思路讲清楚,再看一段尽量贴近实战的代码片段。
假设现在有一个需求:
输入:一段比较长的产品需求文档
输出:一份结构化的需求表 + 一段高层总结 + 三条风险提示
一个典型的提示链可以这么拆:
-
- 步骤一:从文档里抽取关键信息
- • 目标:识别“功能需求、非功能需求、约束条件、依赖项”等
- • 输出:一个结构化的 JSON 对象
-
- 步骤二:基于结构化信息生成高层总结
- • 目标:用人话概括“这是个什么东西”
- • 输入:上一步的 JSON
-
- 步骤三:基于同样的结构化信息分析风险
- • 目标:列出可能踩坑的地方
- • 输入:仍然是那份 JSON
也就是说,第 1 步负责“从自由文本到结构化数据”,后面的步骤则是在“结构化数据”上做派生任务。
只要第 1 步的输出稳定可靠,后面要加多少分析步骤、换多少种总结风格,基本都不会影响链条前半段。
先给你看一下“反面教材”——很多人一开始会这么写:
long_prompt = f"""你是一个超级智能的文档助手,请阅读下面这份长文档,然后一次性完成以下所有任务:1. 提取所有功能需求2. 总结成一段给老板看的概述3. 列出所有潜在的技术风险4. 顺便给出一些实现建议5. 如果你觉得有必要,还可以补充你认为重要的点文档内容:{doc}"""resp = llm.invoke(long_prompt)print(resp)
看上去很省事,但问题也很明显:
- • 结果结构不稳定,每次生成出来都长得不太一样
- • 某一块内容缺失时,你很难定位到底是“抽取阶段就漏了”,还是“后面表述时忘了写”
- • 想把其中第 3 条“风险分析”单独拿去做 A/B 测试,基本做不到
所以我们换个思路,从一开始就用“提示链”的方式来搭:
from typing import Dict, Anyfrom langchain_openai import ChatOpenAIfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import JsonOutputParserllm = ChatOpenAI(model="gpt-4o-mini") # 你可以替换成自己的模型名称# 步骤1:信息抽取(自由文本 -> JSON)extract_prompt = ChatPromptTemplate.from_template( """你是一个需求分析助手,请从下面的产品文档中抽取关键信息,并严格按照 JSON 输出:文档内容:{doc}请输出:{{ "functional_requirements": [...], "non_functional_requirements": [...], "constraints": [...], "dependencies": [...]}}""")extraction_chain = extract_prompt | llm | JsonOutputParser()# 步骤2:高层总结summary_prompt = ChatPromptTemplate.from_template( """你是产品负责人,请基于下面这份结构化需求信息,用面向干系人的口吻生成一段总结:{spec}""")summary_chain = summary_prompt | llm# 步骤3:风险分析risk_prompt = ChatPromptTemplate.from_template( """你是技术负责人,请基于下面的需求信息,列出 3~5 条最关键的技术/项目风险,并给出简要说明:{spec}""")risk_chain = risk_prompt | llmdef run_with_langchain(doc: str) -> Dict[str, Any]: """使用 LangChain v1 风格的提示链,把文档变成总结 + 风险分析。""" # 第一步:抽取结构化需求 spec = extraction_chain.invoke({"doc": doc}) # 第二步 & 第三步:在同一份结构化 spec 上派生不同视角 summary = summary_chain.invoke({"spec": spec}) risks = risk_chain.invoke({"spec": spec}) return { "spec": spec, "summary": summary, "risks": risks, }
如果你习惯先从“最小可用玩具”开始,可以先写一个完全不用框架、只靠字符串拼接的版本:
from typing import Dict, Anydef call_llm(prompt: str) -> str: """伪代码:这里换成你自己的 LLM SDK 调用即可""" ...def step_extract(doc: str) -> Dict[str, Any]: prompt = f"""你是需求分析助手,请从下面的产品文档中抽取关键信息,并用 JSON 返回:文档内容:{doc}""" raw = call_llm(prompt) return json.loads(raw)def step_summary(spec: Dict[str, Any]) -> str: prompt = f"""你是产品负责人,请基于下面这份结构化需求信息,用面向干系人的口吻生成一段总结:{spec}""" return call_llm(prompt)def step_risks(spec: Dict[str, Any]) -> str: prompt = f"""你是技术负责人,请基于下面的需求信息,列出 3~5 条最关键的技术/项目风险,并给出简要说明:{spec}""" return call_llm(prompt)def run_pipeline(doc: str) -> Dict[str, Any]: spec = step_extract(doc) return { "summary": step_summary(spec), "risks": step_risks(spec), }
有了这个“玩具版”之后,你就可以很自然地往里加日志、错误处理、监控等工程特性了,例如:
import logginglogger = logging.getLogger(__name__)def safe_run_pipeline(doc: str) -> Dict[str, Any]: logger.info("[pipeline] start") try: spec = step_extract(doc) logger.debug("[pipeline] extracted spec: %s", spec) except Exception as e: logger.exception("[pipeline] extraction failed") raise summary = step_summary(spec) risks = step_risks(spec) logger.info("[pipeline] done") return {"summary": summary, "risks": risks, "spec": spec}
到这里,你已经有了一条 清晰可观测的“提示链骨架”,后面把它换成AutoGen 、CrewAI 或者你自研的编排框架,其实只是“底层执行引擎”变了而已。
这里有几个值得注意的“提示链思维”:
- • 抽取 → 结构化 → 多下游任务
只要把第一个“抽取步骤”打磨好,后面可以随时增加“成本估算”“排期建议”等新步骤,而不用重新让模型去“通读全文再想一遍”。 - • 每一步都只负责一件清晰的事
抽取步骤不负责“写总结”,写总结的步骤也不负责“再去补充信息”,职责边界清晰。 - • 中间结果是“工程友好的格式”
用 JSON 而不是“自然语言段落”,可以让你把这些结果进一步写入数据库、发到前端、在其他 Agent 里复用。
四、从“写提示”到“搭工作流”:提示链的实用心法
结合书里的内容和工程实践,做提示链时可以提前记住几条经验法则:
-
- 先画流程,再写提示
- • 先把要做的事情画成 3~7 个步骤
- • 每个步骤回答一个问题:“这一小步的输入是什么?输出要被谁用?”
-
- 中间结果尽量结构化
- • 能用 JSON 就不要只用自然语言
- • 给每个字段写上清晰的含义和约束(比如“必填/可选”“枚举值”)
-
- 步数不要盲目堆
- • 不是步数越多越好:一般 3~7 步是比较友好的区间
- • 一步里如果同时承担“抽取 + 判断 + 生成多种格式”,就可以考虑拆
-
- 给每一步留出“观察窗口”
- • 在开发阶段,把每一步的输入/输出都打印/记录下来
- • 一旦结果不对,可以快速定位是“抽取错了”还是“总结错了”
-
- 提前考虑和其他模式怎么组合
- • 哪些步骤可以改成并行?(和并行化模式结合)
- • 哪些步骤需要根据输入走不同分支?(和路由模式结合)
- • 哪些输出必须经过“再审查”才能进入下一步?(和反思模式结合)
五、看完这一期,你可以做点什么?
如果你现在已经有一个“超长提示词”的小项目,可以试着做这样一个小练习:
-
- 把当前提示里让模型做的事情列成清单(通常会发现有 5~10 条)
-
- 用提示链的方式把它拆成 3~5 个步骤,每步只做一件事
-
- 把关键中间结果改成 JSON 输出,后续步骤只消费 JSON
-
- 给每一步加上独立日志,看看哪一步最容易出问题
等你把这个练完,你会很自然地进入一个新世界:
以后再设计 Agent,你脑子里首先浮现的不会是“我要写一个多长的提示词”,而是:
“这件事应该是由哪几步组成的工作流?
每一步的提示应该长什么样?
这些步骤以后还能不能拿出来复用?”
这就是提示链模式真正带来的价值:
不只是让模型“看起来更聪明”,而是让你的 Agent 更可控、更可维护、更方便和其他设计模式拼起来。
读者福利:倘若大家对大模型感兴趣,那么这套大模型学习资料一定对你有用。
针对0基础小白:
如果你是零基础小白,快速入门大模型是可行的。
大模型学习流程较短,学习内容全面,需要理论与实践结合
学习计划和方向能根据资料进行归纳总结
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓


👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉大模型视频和PDF合集👈
这里我们能提供零基础学习书籍和视频。作为最快捷也是最有效的方式之一,跟着老师的思路,由浅入深,从理论到实操,其实大模型并不难。

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓


被折叠的 条评论
为什么被折叠?



