什么是提示链(Prompt Chaining)?
凌晨3点17分,我盯着那个需要"先分析用户意图→再查数据库→然后生成报告→最后发邮件"的任务。突然意识到:一个超级提示不如一串精心设计的提示链。
提示链就是把复杂任务拆解成多个步骤,每个步骤的输出作为下一步的输入。就像流水线上的工人,各司其职,最后组装成完整产品。
💡 核心价值:
- 准确性提升:每一步专注一件事,减少"贪多嚼不烂"
- 可调试性:哪步出问题一目了然,不用猜
- 成本优化:简单步骤用小模型,复杂步骤才上大模型
- 可复用性:链中的每个环节都可以单独调用
OpenClaw 中的提示链实现
基础提示链示例
假设我们要做一个"用户反馈分析Agent",需要:分类→情感分析→生成报告
# openclaw prompt-chain.yaml
name: "feedback-analysis-chain"
description: "用户反馈分析提示链"
steps:
- id: "classify"
prompt: |
将以下用户反馈分类为:bug报告、功能请求、用户体验、其他。
只返回分类结果,不要解释。
反馈内容:{input}
model: "gpt-4o-mini"
output_key: "category"
- id: "sentiment"
prompt: |
分析以下用户反馈的情感倾向。
返回JSON格式:{"sentiment": "积极|中性|消极", "score": 0-10}
反馈内容:{input}
model: "gpt-4o-mini"
output_key: "sentiment_result"
- id: "report"
prompt: |
根据以下信息生成一份反馈分析报告:
原始反馈:{input}
分类:{steps.classify.output}
情感:{steps.sentiment.output}
报告格式:
1. 摘要(50字内)
2. 优先级(高/中/低)
3. 建议行动
model: "gpt-4o"
output_key: "final_report"
- id: "notify"
type: "tool_call"
tool: "send_email"
args:
to: "product-team@company.com"
subject: "新反馈分析报告 - {steps.classify.output}"
body: "{steps.report.output}"
在 OpenClaw 中运行提示链
# 安装提示链技能
openclaw skill install prompt-chain-engine
# 运行提示链
openclaw run-chain feedback-analysis-chain \
--input "App经常闪退,特别是在导出报告的时候,太影响工作了!" \
--output json
# 输出示例
{
"category": "bug报告",
"sentiment_result": "{\"sentiment\": \"消极\", \"score\": 9}",
"final_report": "摘要:App导出报告时频繁闪退...\n优先级:高\n建议:紧急修复导出模块",
"notify": "邮件已发送"
}
条件分支提示链
真实场景不会总是线性执行,需要根据上一步结果决定下一步。
# conditional-chain.yaml - 带条件分支的提示链
name: "smart-customer-service"
description: "智能客服提示链,根据问题类型路由"
steps:
- id: "intent_recognition"
prompt: |
识别用户问题的意图,从以下选项中选择:
- 退款:涉及退款、退货、赔偿
- 技术:涉及bug、无法使用、错误
- 咨询:询问功能、价格、使用方法
- 投诉:表达不满、威胁、差评
用户问题:{input}
只返回意图名称。
model: "gpt-4o-mini"
output_key: "intent"
# 条件分支:根据意图执行不同链条
- id: "handle_refund"
condition: "{steps.intent_recognition.output} == '退款'"
prompt: |
你是一个退款处理专员。用户说:{input}
请生成退款处理方案,包括:是否退款、退款比例、处理时效。
model: "gpt-4o"
output_key: "solution"
- id: "handle_tech"
condition: "{steps.intent_recognition.output} == '技术'"
prompt: |
你是一个技术支持。用户问题:{input}
请给出排查步骤和解决方案,分步骤列出。
model: "gpt-4o"
output_key: "solution"
- id: "handle_complaint"
condition: "{steps.intent_recognition.output} == '投诉'"
prompt: |
你是一个客户关系专员。用户投诉:{input}
请生成安抚话术和补偿方案,语气要诚恳。
model: "gpt-4o"
output_key: "solution"
temperature: 0.7 # 更有"人情味"
- id: "default_handler"
condition: "true" # 默认分支
prompt: "感谢您的咨询:{input}\n我们的客服会尽快联系您。"
model: "gpt-4o-mini"
output_key: "solution"
最佳实践
1
每步只做一件事
别让一个提示干太多活。分类就只分类,别顺带做情感分析。
2
小模型做简单活
分类、提取、格式化用 gpt-4o-mini 或 claude-haiku,省钱!
3
结构化输出
要求 LLM 返回 JSON,方便后续步骤解析和传递。
4
错误处理
每步都加 fallback,某步失败不会导致整条链崩溃。
5
日志追踪
记录每步的输入输出,出了问题能快速定位。
性能对比
| 方案 | 准确性 | 成本(1000次) | 可维护性 |
|---|---|---|---|
| 单个超级提示 | ⭐⭐ | $12.50 | ⭐(改一处全崩) |
| 提示链(混合模型) | ⭐⭐⭐⭐ | $4.20 | ⭐⭐⭐⭐(模块化) |
| 提示链+条件分支 | ⭐⭐⭐⭐⭐ | $3.80 | ⭐⭐⭐⭐⭐(可扩展) |
完整示例:内容创作提示链
# content-creation-chain.yaml
name: "blog-post-creator"
description: "从选题到成稿的完整写作链"
steps:
- id: "topic_research"
prompt: |
搜索关于"{input}"的最新趋势和热门角度。
返回JSON:{"trending_angles": [...], "key_points": [...]}
model: "gpt-4o"
tools: ["web_search"]
output_key: "research"
- id: "outline"
prompt: |
根据以下研究资料,生成一篇1500字博客大纲:
主题:{input}
研究资料:{steps.topic_research.output}
大纲格式:
1. 引言(金句开场)
2. 核心论点1
3. 核心论点2
4. 核心论点3
5. 总结和行动号召
model: "gpt-4o"
output_key: "outline"
- id: "draft"
prompt: |
根据大纲撰写完整博客文章:
大纲:{steps.outline.output}
要求:妙趣风格(周星驰脑洞+王家卫时间感),2000字左右。
model: "claude-opus-4.7"
output_key: "draft"
- id: "seo_optimize"
prompt: |
对以下文章进行SEO优化:
原文:{steps.draft.output}
关键词:{input}, OpenClaw, AI Agent, 教程
返回优化后的文章(保留原风格)。
model: "gpt-4o"
output_key: "final_article"
- id: "publish"
type: "tool_call"
tool: "write_file"
args:
path: "/var/www/miaoquai/tools/{input}.html"
content: "{steps.final_article.output}"
🎯 妙趣提示:
提示链最怕的是"过度设计"。别一开始就搞10步链条,先做3步,跑通了再加。就像写代码,先MVP,再迭代。
常见问题
- 提示链太长怎么办? 超过5步考虑拆成多个子链,或者改用Agent工作流。
- 如何调试提示链? 在每步加
debug: true,会打印详细的输入输出。 - 某步失败了会怎样? 默认整个链停止。可以设置
continue_on_error: true。 - 能并行执行步骤吗? 可以!用
parallel: true让无依赖的步骤同时跑。
⚠️ 避坑指南:
别在提示链里做"循环"!如果需要循环逻辑(比如"重试直到成功"),用 Agent 的 while 循环,而不是提示链。提示链是DAG(有向无环图),不是图灵完备的。