Agentic 设计模式详解 - 提示词链 (Prompt Chaining)

核心思想

用一个巨大的 Prompt 让 LLM 一步到位地解决复杂问题,往往效果不好。模型会顾此失彼,例如,一个要求分析市场调研报告、总结发现、用数据点识别趋势并起草邮件的查询,可能总结做得不错,但数据提取就乱了;或者前半段还行,后半段开始"编造"内容。

提示词链(Prompt Chaining)的思路很简单:把大问题拆成一串小问题,每一步只做一件事,上一步的输出作为下一步的输入。 这就像工厂的流水线------每个工位只负责一道工序,最终组装出完整的产品。

为什么单个 Prompt 不够用?

当你在一个 Prompt 里塞入太多指令时,LLM 容易出现以下问题:

  • 指令忽略:部分要求被跳过
  • 上下文漂移:写着写着就偏离了原始目标
  • 错误传播:前面出了错,后面越错越离谱
  • 幻觉:认知负荷过大,模型开始编造信息

拆开来做,效果立刻不同

让我们回到刚开始那个例子:你让 LLM "分析这份市场报告、总结发现、识别趋势、起草邮件"------四件事塞在一起,模型很可能总结还行,但趋势提取和邮件撰写就一塌糊涂。 同样的任务用提示词链来处理:

  1. Prompt 1(摘要):"总结这份市场报告的关键发现。"
  2. Prompt 2(趋势识别):"根据上面的摘要,提取前三个新兴趋势及其数据支撑。"
  3. Prompt 3(邮件撰写):"根据这些趋势,起草一封给营销团队的邮件。" 每一步都很简单、很聚焦,模型的准确率自然就上去了。你甚至可以在每一步给模型分配不同的角色------第一步是"市场分析师",第二步是"数据分析师",第三步是"文案专家"。

步骤之间用结构化数据传递

提示词链的可靠性取决于步骤之间传递数据的质量。如果上一步输出的是模糊的自然语言,下一步很容易"理解偏了"。最佳实践是让每一步输出结构化格式(如 JSON):

json 复制代码
{
  "trends": [
    {
      "trend_name": "AI-Powered Personalization",
      "supporting_data": "73% of consumers prefer brands that use personal information to make shopping more relevant."
    },
    {
      "trend_name": "Sustainable and Ethical Brands",
      "supporting_data": "ESG-related products sales grew 28% over the last five years, vs 20% for others."
    }
  ]
}

结构化输出让数据可以被精确解析,消除了自然语言的歧义。 所以拆分后的每一步不一定都是 LLM 给出的回答,也可以是外部的知识库、数据库等外部数据源提供的结构化数据。

典型应用场景

信息处理流水线: 提取文本 → 生成摘要 → 识别关键实体 → 查询知识库 → 生成报告。适用于自动化内容分析和研究助手。

数据提取与转换: 从发票、表单等非结构化文档中提取字段,验证格式,缺失则重新提取,最终输出结构化数据。处理 OCR 场景时尤其有效------先提取文本,再规范化数据(如将"一千零五十"转为 1050),遇到计算则委托给外部工具。

内容生成: 构思主题 → 生成大纲 → 逐段撰写(每段都带上前文作为上下文) → 整体审校。比一次性让模型"写一篇完整文章"可靠得多。

代码生成与优化: 理解需求 → 生成伪代码 → 编写初稿 → 检查错误 → 优化重写。关键优势在于可以在步骤之间插入确定性逻辑(如静态分析、单元测试),而不是完全依赖 LLM。

实际项目中,独立的数据收集步骤可以并行 执行以提高效率,而综合和完善等有依赖关系的步骤则通过提示词链串行处理。

代码示例

以下用 LangChain 实现一个两步提示词链:先从文本中提取技术规格,再将其转换为 JSON。

bash 复制代码
pip install langchain langchain-community langchain-openai langgraph
python 复制代码
import os
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

llm = ChatOpenAI(temperature=0)

## --- Prompt 1: Extract Information ---
prompt_extract = ChatPromptTemplate.from_template(
    "从以下文本中提取技术规格信息:\n\n{text_input}"
)

## --- Prompt 2: Transform to JSON ---
prompt_transform = ChatPromptTemplate.from_template(
    "将以下规格信息转换为一个 JSON 对象,使用 'cpu'、'memory' 和 'storage' 作为键:\n\n{specifications}"
)

## --- Build the Chain using LCEL ---
extraction_chain = prompt_extract | llm | StrOutputParser()

full_chain = (
    {"specifications": extraction_chain}
    | prompt_transform
    | llm
    | StrOutputParser()
)

## --- Run the Chain ---
input_text = "这款新笔记本电脑配备了 3.5 GHz 八核处理器、16GB 内存和 1TB NVMe 固态硬盘。"
final_result = full_chain.invoke({"text_input": input_text})

print("\n--- Final JSON Output ---")
print(final_result)

extraction_chain 负责提取规格信息,full_chain 将提取结果喂给第二个 Prompt 做 JSON 格式化。两步各司其职,通过 LCEL(LangChain Expression Language)用 | 管道符串联起来。

Context Engineering 与 Prompt Engineering

Prompt Engineering 关注的是"怎么措辞才能让模型给出好答案"。而 Context Engineering 关注的是更大的问题:在模型生成回答之前,给它构建一个怎样的信息环境?

如上图所示,Context Engineering 是构建丰富信息环境的概念,上下文的质量直接决定了 Agentic 系统的表现。 一个经过 Context Engineering 的 Agent,在回答你的问题之前,会先整合多层信息:

  • System Prompt:定义 AI 的角色和行为规范(如"你是一名技术撰稿人,语气正式精确")
  • 检索文档:从知识库主动获取的相关资料
  • 工具输出:调用外部 API 获得的实时数据(如日历、数据库查询结果)
  • 隐式数据:用户身份、交互历史、当前环境状态

核心原则是:即使是最强的模型,如果给它的上下文不够好,输出也会很差。 Context Engineering 把重心从"优化一句话"转移到了"构建完整的操作图景"。

参考文献

  1. LangChain Documentation on LCEL
  2. LangGraph Documentation
  3. Prompt Engineering Guide - Chaining Prompts
  4. OpenAI API Documentation (General Prompting Concepts)
  5. Crew AI Documentation (Tasks and Processes)
  6. Google AI for Developers (Prompting Guides)
  7. Vertex Prompt Optimizer
相关推荐
犀利豆1 小时前
多轮对话生成架构图 Agent 设计实践
agent
kyriewen1 小时前
我让AI给前端项目做了一次完整的Code Review——它和人类的差距,比我想的大得多
前端·javascript·ai编程
吴佳浩2 小时前
今天我们讲讲大模型的“核心”技术:蒸馏(Model Distillation)
人工智能·llm·agent
阿里云大数据AI技术2 小时前
阿里云 ES AI 引擎版:面向 Agent 场景,为亿级租户、千亿规模向量设计的搜索引擎
人工智能·elasticsearch·agent
星栈2 小时前
翻完 Pi 源码:它和 Codex、Claude Code 有何不同
人工智能·agent
码哥字节3 小时前
Google 上周推了个 agents-cli,我装完发现 Claude Code 多了 7 个超能力
google·agent·claude
chaors3 小时前
DeepRearchSystem 0x00:初识
langchain·llm·ai编程
DisonTangor4 小时前
【微软开源】Mage-Flow 深度解读:微软4B参数图像生成与编辑模型,单卡A100仅需0.59秒
人工智能·microsoft·ai作画·开源·aigc
一个有理想的摸鱼选手4 小时前
在三维地球上以另一种视角感受巴威台风
前端·gis·ai编程
谁来拯救笨小孩4 小时前
深入 Cursor 架构:一个 AI 编辑器是如何被「流式」重塑的
ai编程