提示链
提示链改变了方法。不是使用一个巨大的提示,而是创建一个聚焦提示的管道,其中每个步骤专注于单一的任务。
如果你曾经让ChatGPT做一件复杂的事情——比如分析一份文件、提取见解,并根据这些见解起草一封电子邮件——你可能已经注意到一些问题:它开始时表现不错,但随后就崩溃了。
摘要还不错。见解很模糊。邮件?最坏的情况是毫无特色。
这并不是模型的问题。这是架构的问题。
而解决方案有一个名字:提示链。
1、为什么单个提示会失败
当你一次性把一个复杂任务扔给LLM时,你实际上是在要求一个聪明但容易分心的同事同时处理五件事,同时写一份报告。
会发生什么?
- 指令忽视:你的提示中的一些部分被忽略了
- 上下文漂移:模型失去了对最初请求的跟踪
- 错误传播:早期的小错误会变成垃圾输出
- 幻觉:认知过载增加了编造信息的可能性
我在Convolution AI构建AI系统时反复看到这种模式。一个在测试中能正常工作的提示,在生产环境中却惨遭失败——因为生产任务比我们的测试用例更混乱和复杂。
2、分而治之的解决方案
提示链改变了方法。不是使用一个巨大的提示,而是创建一个聚焦提示的管道,其中每个步骤:
- 完成一件事做得很好
- 产生结构化的输出
- 输入到下一步
想象一下像工厂装配线一样的东西。每个站点都有一个工作。站点A的输出成为站点B的输入。没有一个站点会被压垮。最终产品是可靠的。
这里是一个思维模型:
[复杂任务]
→ [步骤1:提取]
→ [步骤2:分析]
→ [步骤3:转换]
→ [最终输出]
3、一个真实例子:市场调研到高管邮件
假设你需要分析一份市场调研报告,识别趋势,并起草一封给管理层的邮件。
原始方法(单个提示):
“分析这份市场调研报告,总结发现,识别前三个有支持数据的趋势,并为营销团队起草一封电子邮件。”
这将产生中等的结果,因为模型同时处理太多认知任务。
提示链方法:
步骤1 —— 摘要(角色:市场分析师)
“总结以下市场调研报告的关键发现:[文本]”
步骤2 —— 趋势识别(角色:趋势分析师)
“使用这个摘要,识别前三个新兴趋势。对于每个趋势,提取支持它的具体数据点。以JSON格式输出。”
步骤3 —— 邮件撰写(角色:高管沟通专家)
“为营销团队起草一封简洁的邮件,概述这些趋势及其支持数据:[步骤2的JSON]”
每个步骤都更简单。每个输出在继续之前都会被验证。最终结果大大改善。
4、秘诀:结构化输出
大多数实现失败的地方在于它们在步骤之间传递混乱的文本。
解决方法是:在链路之间强制结构化输出(JSON、XML):
{
"trends": [
{
"trend_name": "基于AI的个性化",
"supporting_data": "73%的消费者更喜欢使用个人信息的品牌"
},
{
"trend_name": "可持续品牌",
"supporting_data": "ESG相关产品在过去五年增长了28%,而其他产品仅增长20%"
}
]
}
这消除了歧义。下一步知道它接收的是什么。没有解析错误。没有丢失上下文。
5、代码:一个完整实现
以下是使用LangChain的一个最小但完整的示例:
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
llm = ChatOpenAI(temperature=0)
# 步骤1:提取规格
prompt_extract = ChatPromptTemplate.from_template(
"从以下文本中提取技术规格:\n\n{text_input}"
)
# 步骤2:转换为结构化JSON
prompt_transform = ChatPromptTemplate.from_template(
"将这些规格转换为包含'cpu'、'memory'和'storage'键的JSON:\n\n{specifications}"
)
# 构建链
extraction_chain = prompt_extract | llm | StrOutputParser()
full_chain = (
{"specifications": extraction_chain}
| prompt_transform
| llm
| StrOutputParser()
)
# 执行
input_text = "新款笔记本电脑配备3.5 GHz八核处理器、16GB RAM和1TB NVMe SSD。"
result = full_chain.invoke({"text_input": input_text})
print(result)
输出:
{"cpu": "3.5 GHz八核", "memory": "16GB", "storage": "1TB NVMe SSD"}
两个提示。干净的交接。可靠的输出。
6、在什么情况下使用提示链
在以下情况下使用此模式:
- 任务有多个不同的处理阶段
- 你需要在步骤之间集成外部工具
- 可靠性比速度更重要
- 你正在构建需要多步推理的代理
- 调试和可观测性很重要
在以下情况不要使用此模式:
- 任务确实很简单(一次性的提示就可以)
- 延迟是关键且无法承受多次LLM调用
- 步骤之间没有逻辑依赖
7、更大的图景:上下文工程
提示链实际上是称为上下文工程的一个更大领域的子集——构建丰富信息环境供AI模型使用的实践。
洞察是简单但深刻的:模型质量不如上下文质量重要。
一个普通的模型如果拥有优秀的上下文,将胜过一个前沿模型如果上下文不好。每一次都是如此。
提示链确保在每一步,模型都能获得它需要的精确上下文——不多也不少。这就是它如此可靠的原因。
8、接下来是什么
提示链是代理系统的第一个构建块。它教授了一个基本原理:将复杂性分解为可管理的步骤。
但真正的代理需要更多。他们需要决定执行哪个链(路由)。他们需要在可能的情况下并行运行步骤(并行化)。他们需要评估和改进自己的输出(反思)。
在下一篇文章中,我们将介绍路由——如何根据输入特征动态选择不同的处理路径。
原文链接:Prompt Chaining: The Foundation of Every Serious AI Agent
汇智网翻译整理,转载请标明出处