【第四部分:Agentic 智能体设计模式】16. 一个 Prompt 搞不定复杂任务?试试 Prompt Chaining

简介: 本文介绍 Prompt Chaining(提示链模式)的基本原理与工程实践,重点说明如何将复杂任务拆分为多个职责明确、结果可验证的处理阶段。结合技术故障报告分析案例,介绍任务拆分、结构化输出、Schema 与业务校验、上下文隔离、局部重试及中间结果管理,并结合 OpenAI、DeepSeek 和 LangGraph 的最新能力,分析提示链与 Agent Loop 的区别、适用场景及性能成本,帮助开发者构建更加稳定、可维护的多阶段 AI 工作流。

上一篇介绍了 Agent 常见的任务编排模式,包括提示链、路由、并行、反思、规划和多智能体协作。本篇从最容易落地的 Prompt Chaining(提示链) 开始,讨论如何将复杂任务拆分为多个独立、可验证的处理步骤。

在实际开发中,我们经常希望大模型一次完成多项工作。例如,读取一份技术故障报告,提取关键事实、分析事故影响、识别潜在风险,最后生成整改建议。最直接的实现方式,是向模型发送一个包含所有要求的 Prompt。但当原始文档较长、分析维度较多、输出结构复杂时,一次调用往往容易出现事实遗漏、分析与原文不一致、输出字段缺失等问题,而且很难定位错误究竟发生在哪个环节。

提示链提供了另一种实现方式:将复杂任务拆成多个具有明确输入输出的步骤,前一步的结果经过必要校验后,再交给下一步处理。它并没有改变大模型的能力,而是通过调整任务执行结构,提高结果的可控性和可维护性。

一、Prompt Chaining 的基本原理

Prompt Chaining 是一种顺序编排模式,也被称为流水线模式(pipline pattern)。每个步骤只处理任务中的一部分,并将结果作为后续步骤的输入,这种信息传递建立了一种依赖链,这也正是提示链模式名称的由来。例如,一份技术故障报告可以按照以下方式处理:

阶段 主要任务 输出结果
文档解析 获取正文、章节和来源信息 Document
事实提取 提取故障时间、影响范围、处置过程 FactSet
原因分析 根据事实识别问题和风险 AnalysisResult
建议生成 根据分析结果生成整改措施 ActionPlan
结果校验 检查结构、来源和业务规则 ValidationResult

文档解析、字段校验等环节可以使用确定性代码,而事实提取、原因分析和建议生成则更适合调用模型。因此,一条提示链不要求所有节点都是 LLM。它可以由 LLM 调用、普通函数、数据校验和业务规则共同构成。这种模式与自由 Agent Loop 的区别在于:

Prompt Chaining Agent Loop
处理步骤通常预先确定 执行路径可以动态调整
每个步骤有明确的输入输出 模型可以动态选择工具和行动
适合流程清晰、结果可验证的任务 适合开放式探索和不确定任务
容易定位具体步骤的错误 更依赖执行轨迹分析

LangGraph 当前也将 Prompt Chaining 定义为一系列顺序 LLM 调用,适用于能够拆成较小、可验证步骤的任务,并支持在步骤之间加入 Gate 检查。

二、任务拆分的依据

并不是把一个 Prompt 随意拆成三段,就能提高结果质量。合理的拆分应该依据任务职责、数据依赖和校验方式。以前面的故障报告为例,如果直接要求模型同时完成“提取事实、判断原因、评估风险和生成建议”,模型可能在生成建议时引入原文并未明确支持的结论。更合理的设计是区分三个阶段。

第一阶段:提取事实。 只要求模型从文档中提取客观信息,例如故障开始时间、影响系统、异常现象和已执行的处置操作,并保留对应的原文引用。此时不允许模型自行推测故障原因。

第二阶段:分析事实。 根据第一阶段已经确认的信息识别风险和可能原因,对缺少证据的结论明确标记为待确认,而不是补充假设性事实。

第三阶段:生成结果。 基于确认后的事实和分析结论生成整改建议、处理优先级和待确认事项。

这三个阶段分别回答:发生了什么、意味着什么、下一步应该怎样处理。

拆分以后,每个步骤的职责更加明确,也更容易针对不同问题优化 Prompt 或更换模型。不过,任务并不是拆得越细越好。每增加一个 LLM 节点,都会增加请求延迟、Token 消耗以及数据传递和异常处理成本。因此,拆分应以是否存在独立职责、明确的数据契约和可验证的中间结果为主要依据,而不是以步骤数量衡量。


三、在步骤之间增加校验关口

提示链真正有工程价值的地方,不只是分阶段调用模型,而是可以在中间结果不满足要求时阻止后续执行。例如:

实际实现时,修复或重试应返回具体失败节点,而不是一律重新提取全部事实。这些 Gate 可以分为三个层次:

校验层次 主要检查内容 实现方式
Schema Validation 字段、类型、枚举是否符合约定 JSON Schema / DTO
Business Validation 日期、状态、业务约束是否正确 确定性程序
Semantic Validation 结论是否具有充分证据 规则检查 + 必要的模型审查

其中,Schema 校验只能保证数据结构符合契约,并不能证明模型提取的事实正确。例如,模型返回的故障时间符合日期格式,但该时间根本没有出现在原始报告中,仍然属于事实错误。

因此,对于事实提取任务,建议保留原文片段及其来源标识,并由程序验证引用是否能够对应到真实文档。结构校验保证结果可以被程序处理,证据和业务校验进一步判断结果是否值得信任。

四、代码示例:生成故障整改报告

这里不引入完整 Agent Framework,而是使用 Java 21 展示提示链的核心逻辑。为简化代码,假设已经封装好统一的模型适配接口,能够根据 Java 类型生成结构化结果。首先定义三个阶段的数据结构:

record Fact(
    String id,
    String quote
) {
   }

record FactSet(
    List<Fact> facts
) {
   }

record Finding(
    String description,
    String factId
) {
   }

record AnalysisResult(
    List<Finding> findings
) {
   }

record Report(
    String summary,
    List<String> actions
) {
   }

其中,Fact 保存从文档中提取的事实,Finding 保存基于事实得到的分析结论。factId 用于将分析结果关联到对应证据。为了避免绑定具体模型 SDK,定义一个简单接口:

interface ModelGateway {
   
    <T> T generate(
        String instruction,
        Object input,
        Class<T> resultType
    );
}

接下来完成三个模型处理步骤:

Report buildReport(
        String source,
        ModelGateway model) {
   

    // Step 1:事实提取
    FactSet facts = model.generate(
        "只提取原文明确存在的事实,保留原文片段",
        source,
        FactSet.class
    );

    // Gate 1:检查事实来源
    if (facts.facts().isEmpty() ||
        facts.facts().stream().anyMatch(
            f -> !source.contains(f.quote())
        )) {
   
        throw new IllegalStateException(
            "事实证据校验失败"
        );
    }

    // Step 2:原因与风险分析
    AnalysisResult analysis = model.generate(
        "仅依据已有事实进行分析,不得新增事实",
        facts,
        AnalysisResult.class
    );

    // Gate 2:检查分析结果的证据引用
    Set<String> ids = facts.facts().stream()
        .map(Fact::id)
        .collect(Collectors.toSet());

    if (analysis.findings().stream().anyMatch(
        f -> !ids.contains(f.factId())
    )) {
   
        throw new IllegalStateException(
            "分析结果存在无效证据引用"
        );
    }

    // Step 3:生成整改报告
    return model.generate(
        "根据已确认事实和分析结论生成整改报告",
        Map.of("facts", facts, "analysis", analysis),
        Report.class
    );
}

这是一段用于说明编排逻辑的简化代码,并非完整的生产实现。其中使用原文包含关系进行证据检查,只适合演示;正式项目应根据文档解析结果保存 documentId、sectionId、文本位置等信息,并继续校验最终报告中的结论和整改措施。

这段代码最重要的是三个模型调用之间的关系:FactSet → AnalysisResult → Report。每个阶段都有清晰的数据类型,前两个阶段设置了必要的校验关口,上一阶段没有通过检查时,不会继续生成下一阶段的结果。相比把所有要求拼接在一个 Prompt 中,这种实现更容易定位故障、编写测试并维护业务规则。

五、上下文隔离与中间结果管理

提示链的一个常见实现问题,是将此前所有步骤的 Prompt、模型回答和原始文档不断累积到下一阶段。例如,第一步提取了 50 条事实,第二步分析时又加入大量历史消息,第三步生成报告时继续附带前面所有内容。随着流程增加,上下文可能不断膨胀,最终削弱拆分步骤带来的收益。更合理的方式是每个步骤只接收完成当前工作所需的数据。在故障报告案例中:

阶段 主要输入 不必重复传入
事实提取 原始文档、字段定义 历史分析过程
风险分析 已确认事实、相关业务规则 无关文档章节、提取过程日志
建议生成 分析结论、关键证据、整改约束 前面完整的模型对话

这与此前介绍的 Context Engineering 并不冲突,而是将上下文管理落实到多个独立模型调用中。此外,中间结果应该以结构化对象保存,而不是只能存在于模型对话历史里。对于执行时间较长、成本较高的任务,还可以持久化每个阶段的结果,以支持断点恢复、结果回放和独立重试。

需要注意:摘要不能天然替代原始证据。 如果后续步骤需要核对精确事实,应同时保留必要的原文引用,避免在多次模型转述过程中逐渐偏离原始资料。

六、失败处理与局部重试

提示链引入多个执行步骤以后,失败处理也应该从“整个任务重新执行”转为“识别失败位置并针对性恢复”。例如事实提取阶段出现格式错误,可以修正输出格式或有限次数重新提取;风险分析阶段产生无效证据引用,可以重新执行分析,而不必重新解析整份文档。不同错误适合不同处理方式:

错误类型 推荐处理
网络超时、限流 有界重试与退避
JSON 格式错误 校验后针对性重试
Schema 不匹配 修正结构或重新生成
引用不存在 返回原步骤重新分析
原始资料缺失 请求补充资料
业务规则冲突 拒绝继续或转人工
多次生成仍不合格 终止并保留失败状态

这里最重要的是区分可重试错误和信息本身不充分。如果原始报告没有明确故障发生时间,无论重复调用多少次模型,也不应该要求它生成一个确定时间。系统应明确保留缺失项,必要时请求补充。另外,对于涉及数据库写入、审批提交等有副作用的步骤,重试必须考虑幂等性,不能因为上一次调用超时就直接重复执行。

因此,工程实现中除了 Prompt 和数据契约,还应该明确每个阶段的超时、最大重试次数、失败状态和恢复策略。

七、2026 年主流框架与模型接口的实现方式

随着模型接口和 Agent Framework 的发展,Prompt Chaining 已经不再依赖纯字符串拼接。

结构化输出成为中间数据契约

OpenAI Responses API 支持通过 text.format 配置 JSON Schema,并使用 strict 模式约束输出结构;SDK 还支持将结果直接映射为类型化对象。

DeepSeek 当前 Responses API 同样提供 json_schema 输出选项,而 Chat Completions 中的 JSON Output 则仍采用 json_object。不同接口和模型对 Schema 的支持范围需要分别确认,不能简单假设行为完全一致。

这使得提示链可以采用:Java DTO / JSON Schema → Model Output → Runtime Validation的方式构建中间结果,而不必依赖 Prompt 中反复强调“严格按照以下格式输出”。不过,原生结构化输出仍然不等于业务内容正确,因此程序校验和证据检查依然不可省略。

Workflow 框架负责执行编排

LangGraph 当前提供 Graph API 和 Functional API 两种组织方式。对于包含明确节点、分支和状态依赖的提示链,可以采用 State Graph;对于步骤较少、逻辑相对简单的任务,也可以通过普通函数或 Functional API 编排。对于 Java 企业应用,使用 Spring AI、LangChain4j 或已有 Workflow Engine 同样可以实现类似逻辑。具体框架并不是 Prompt Chaining 成立的前提。

评估从最终结果扩展到中间结果

随着可观测和 Evaluation 能力的完善,现在还可以分别评价事实提取、分析和报告生成等步骤,而不是只在最后检查一份报告。例如,事实提取阶段关注召回率和原文匹配率,风险分析阶段关注证据支持程度,最终报告阶段关注完整性和可执行性。这种分阶段评估方式能够帮助开发者更准确地定位问题,而不是在最终结果不理想时反复修改整条 Prompt。

八、性能、成本与模式选型

Prompt Chaining 提高了任务执行过程的可解释性,但也引入了额外的模型请求。假设一个任务拆成三个顺序执行的 LLM 阶段,总耗时通常接近各阶段耗时之和,再加上数据校验和其他处理开销。因此,它并不天然比单次模型调用更快。设计时应该同时评估:

维度 关注重点
结果质量 是否减少遗漏、错误和无依据结论
响应时间 串行调用增加了多少延迟
Token 成本 多阶段 Prompt 是否增加消耗
可维护性 是否可以独立调整某个阶段
失败恢复 是否能够局部重试
可观测性 是否可以定位到具体失败步骤

其中一个常见优化方式,是针对不同步骤选择不同模型。例如,简单分类或字段提取使用成本较低的模型,复杂分析阶段使用推理能力更强的模型。但这种模型分工应通过评估数据验证,不能假设小模型一定能可靠完成所有提取任务。对于能够一次调用完成、输出结构简单的任务,没有必要强行引入提示链;对于存在多个相互独立子任务的情况,后续介绍的 Parallelization 往往更加合适。

因此:Prompt Chaining 更适合步骤明确、存在顺序依赖、能够检查中间结果的任务,而不是所有复杂任务的默认实现。

九、小结

Prompt Chaining 是 Agent 设计模式中最基础的一种任务编排方式,它通过把复杂任务拆成多个独立步骤,使每次模型调用承担更加明确的职责。但它的工程价值并不只是将一个 Prompt 拆成多个 Prompt,而在于建立一套完整的多阶段处理机制:明确职责、类型化输出、中间结果校验、上下文隔离、局部重试与过程评估。

与自由 Agent Loop 相比,提示链的执行路径通常是预先确定的,因此更容易控制、测试和维护;但这也意味着它不适合执行路径高度不确定的开放式任务。在生产系统中,提示链完全可以与 RAG、Tool Calling、Structured Output 和 Workflow 结合,而不必为了使用它专门创建一个复杂 Agent。最终可以概括为:提示链的重点不是增加模型调用次数,而是将复杂任务组织成多个可验证、可维护的处理阶段。

上一篇回顾:

https://developer.aliyun.com/article/1770497?spm=a2c6h.13148508.setting.16.354f4f0eLaGZAk

下一篇将继续介绍 Routing(路由模式)——根据任务类型选择不同处理路径。

Prompt Chaining 解决的是多个步骤如何顺序执行,而 Routing 将进一步解决:面对不同类型的用户请求,系统应该选择哪一条处理流程、哪一个模型或者哪一种 Agent 能力。

相关文章
|
6天前
|
云安全 人工智能 运维
当攻击全面Agent化,你的安全防御能否跟上AI Speed?
多起客户侧AK泄露事件应急的真实观察
1290 6
|
4天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
|
9天前
|
存储 人工智能 安全
千问办公官网入口网页版登录:qwenwork.cn 注册送2000积分、登录送100积分
阿里云千问办公(QwenWork)是AI智能工作平台,支持一句话生成PPT、表格、网页、视频及数据分析。个人免费版送2000积分+每日登录赠100分,含1GB存储、5个发布页;企业版198元/席/月起。阿里千问办公QwenWork官网:https://t.aliyun.com/U/0VCTGt 阿里AI工作平台,一句话完成数据分析、PPT 生成、视频剪辑、网页搭建等复杂任务
|
29天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
9868 33
|
15天前
|
存储 人工智能 并行计算
大模型本地部署终端选型方法论:以 Qwen3.8-27B 为例的四档分层完整流程
本文提出一套大模型本地部署终端选型方法论:定约束、定档位、定框架、定参数四步决策法,配合入门、主力、质量、无损四档分层模型。以 Qwen3.8-27B 实测数据为例,逐环节解读显存、带宽、存储、散热、系统、预算等要素,给出面向不同预算的优选方案、决策自查清单与市场观察框架。文末前瞻 AI 笔记本的 CPU+GPU 与统一内存两条路线,论证四步决策法在新品类上的延续性。
|
6天前
|
Web App开发 人工智能 JavaScript
太猛了,一个月干到15W+,给大家推荐一个最近爆火的开源逆向工具:REA
REA(Reverse Engineer Anything)是近期爆火的开源AI逆向工具,4月发布,1个月内斩获15万+ Star。它让AI Agent无需源码即可分析二进制、APK、JS/Electron、HAR包等17类目标,自动反编译、生成可运行代码,并强制返回带证据与局限的结论。全本地执行,MIT协议,支持Hopper/Ghidra/IDA等引擎,一行命令即可上手。
694 2
太猛了,一个月干到15W+,给大家推荐一个最近爆火的开源逆向工具:REA
|
4天前
|
人工智能 开发者
Qoder CN 大使计划正式开启|无限创造,等你一起
全年免费积分、优先内测、活动支持与更多共创机会,邀请用 Qoder 把想法变成现实的你。
465 0
|
14天前
|
人工智能 JSON 自然语言处理
2026 年 Jev 决策模型深度拆解:原理解读、实战测评与保姆级落地教程
有一款特殊AI模型在开发者圈子刷屏,它摒弃传统大模型擅长的对话聊天能力,专注做高速结构化决策,它就是TypeSafe AI推出的Jev模型。该模型由ChatGPT共同发明人Diogo Almeida主导研发,定位为**System One Model(系统一模型)**,对标人类大脑快速直觉判断的思维模式,在响应延迟、调用成本、结构化输出稳定性上相比传统生成式大模型有着巨大差异。本文会完整拆解Jev底层原理、三大核心原语能力、适用业务场景,同时提供可直接运行的curl、Python代码示例,并且结合多组实测数据,客观分析模型优势与能力边界,帮助普通开发者和AI应用从业者快速上手落地。
992 1