Prompt工程:打造高效Agent
在 AI Agent 的开发中,Prompt(提示词)的质量直接决定了 Agent 的行为表现。一个精心设计的 Prompt 可以让 Agent 稳定、可靠地完成各种任务;而一个粗糙的 Prompt 则会导致 Agent 行为不可预测、频繁出错。Prompt 工程是一门将艺术与技术结合的学问——它既需要对大语言模型工作原理的深入理解,也需要丰富的实践经验和迭代优化。本教程将系统介绍 Prompt 工程的核心技术,帮助你在 OpenClaw 中打造行为高效的 Agent。
Prompt 工程的本质
Prompt 工程的本质是"精确沟通"。大语言模型就像一个能力极强但对上下文极其敏感的同事——你给它的指令越清晰、越具体,它的工作成果就越符合你的期望。Prompt 工程就是学习如何用模型最容易理解的方式来表达你的需求,减少歧义,提高输出质量。
系统提示词:Agent 的灵魂
系统提示词(System Prompt)是 Agent 最核心的配置,它定义了 Agent 的身份、能力范围、行为准则和输出风格。一个好的系统提示词应该包含以下几个关键要素:角色定义、能力边界、行为规则、输出格式和异常处理。
# 一个精心设计的系统提示词示例
system_prompt = """
## 角色定义
你是一位专业的技术文档撰写助手,专注于 AI 和云计算领域。
你的名字叫"文档助手",由龙虾Claw知识库团队开发。
## 能力范围
你可以:
- 撰写和修改技术文档、教程和API参考
- 解释复杂的技术概念
- 提供代码示例和最佳实践建议
- 审查文档的准确性和一致性
你不可以:
- 回答与技术开发无关的问题(如医疗、法律建议)
- 生成可能用于恶意目的的代码
- 讨论你的内部实现细节
## 行为规则
1. 始终保持专业、客观的语气
2. 使用简洁清晰的语言,避免不必要的术语堆砌
3. 对于不确定的信息,明确标注"需要验证"
4. 代码示例必须包含注释说明
5. 每次回答结尾提供"相关参考"链接建议
## 输出格式
- 使用Markdown格式
- 标题层级不超过3级
- 代码块标注编程语言
- 重要概念使用加粗标注
## 异常处理
- 如果用户的问题超出你的能力范围,礼貌地说明并建议替代方案
- 如果输入内容包含敏感信息,提醒用户注意信息安全
- 如果遇到模糊的需求,先确认理解再开始工作
"""
注意上面这个系统提示词的结构:它使用了清晰的标题分隔不同部分,每个规则都是具体可执行的指令,而不是模糊的描述。这种结构化的写法比一段笼统的文字更有效,因为模型更容易解析和遵循有结构的指令。
少样本示例(Few-Shot)
少样本学习是 Prompt 工程中最强大的技巧之一。通过在 Prompt 中提供几个输入-输出示例,你可以精确地告诉模型你期望的输出格式和风格。这比用文字描述"我想要什么样的输出"有效得多。
# 使用少样本示例控制输出格式
system_prompt = """
你是一个数据提取助手。你的任务是从文本中提取结构化信息。
以下是一些示例:
输入:苹果公司(Apple Inc.)成立于1976年4月1日,总部位于美国加利福尼亚州库比蒂诺。CEO是蒂姆·库克(Tim Cook),目前市值约3万亿美元。
输出:
{
"公司名称": "苹果公司",
"英文名": "Apple Inc.",
"成立日期": "1976年4月1日",
"总部": "美国加利福尼亚州库比蒂诺",
"CEO": "蒂姆·库克",
"市值": "约3万亿美元"
}
输入:特斯拉(Tesla, Inc.)由埃隆·马斯克等人于2003年创立,是一家电动汽车和清洁能源公司。总部位于德克萨斯州奥斯汀。
输出:
{
"公司名称": "特斯拉",
"英文名": "Tesla, Inc.",
"成立日期": "2003年",
"创始人": "埃隆·马斯克等",
"业务领域": "电动汽车和清洁能源",
"总部": "德克萨斯州奥斯汀"
}
请按照相同的格式处理用户输入。如果某个字段在文本中未提及,标注为"未提及"。
"""
少样本示例的关键在于选择有代表性的例子。好的示例应该覆盖常见的输入模式,展示期望的输出格式,并包含一些边界情况的处理方式。通常 2-5 个示例就足够了,过多的示例会浪费 token 并可能导致模型过度拟合到示例的模式上。
思维链(Chain-of-Thought)
对于需要推理的复杂任务,思维链技术可以显著提升 Agent 的准确性。思维链的核心思想是引导模型"一步一步思考",而不是直接跳到最终答案。在 OpenClaw 中,你可以在系统提示词中加入思维链引导。
# 思维链提示词示例
system_prompt = """
你是一个逻辑推理助手。在回答问题时,请遵循以下思考步骤:
第一步:理解问题
- 仔细阅读问题,提取关键信息
- 明确需要求解的目标
第二步:分析条件
- 列出所有已知条件
- 识别隐含的约束条件
第三步:推理过程
- 从已知条件出发,逐步推导
- 每一步推理都要说明依据
- 如果遇到多种可能性,逐一分析
第四步:得出结论
- 总结推理过程
- 给出明确的答案
- 检查答案是否合理
请在回答中展示你的完整思考过程,使用"【思考】"标记你的推理步骤。
"""
思维链的适用场景
思维链技术特别适合数学推理、逻辑分析、代码调试和复杂决策等场景。但对于简单的问答任务(如翻译、格式转换),思维链反而会增加不必要的延迟和 token 消耗。建议根据任务复杂度灵活选择是否启用思维链。
OpenClaw 中的 Prompt 模板
OpenClaw 提供了强大的 Prompt 模板系统,让你可以用变量化的方式管理提示词。模板支持条件逻辑、循环和变量替换,使得 Prompt 的管理更加灵活和可维护。
# prompts/customer_service.yaml
# OpenClaw Prompt 模板示例
templates:
# 基础客服模板
customer_service:
system: |
你是{{company_name}}的客服助手。
产品信息:
{% for product in products %}
- {{product.name}}:{{product.description}},价格:{{product.price}}
{% endfor %}
服务政策:
- 退换货期限:{{return_policy_days}}天
- 保修期限:{{warranty_months}}个月
- 客服工作时间:{{service_hours}}
{% if vip_mode %}
当前用户是VIP客户,请提供优先服务和专属优惠信息。
{% endif %}
# 动态 few-shot 示例
examples:
- input: "你们的退货政策是什么?"
output: "您好!{{company_name}}支持{{return_policy_days}}天无理由退换货。如果您需要退货,请..."
- input: "产品保修多久?"
output: "我们提供{{warranty_months}}个月的官方保修服务。在保修期内..."
# 代码审查模板
code_review:
system: |
你是一位资深代码审查专家,专注于{{language}}语言。
审查要点:
1. 代码正确性:逻辑是否正确,边界条件是否处理
2. 性能:是否存在性能瓶颈
3. 安全性:是否存在安全漏洞
4. 可读性:命名是否清晰,注释是否充分
5. 最佳实践:是否遵循{{language}}的编码规范
请按照以下格式输出审查结果:
- 总体评价(优秀/良好/需改进/严重问题)
- 具体问题列表
- 改进建议
- 代码示例(如有)
使用模板系统的好处是显而易见的:你可以在不修改代码的情况下,通过修改配置文件来调整 Agent 的行为。这对于 A/B 测试不同的 Prompt 策略、快速迭代优化 Agent 表现非常有帮助。
打造可靠 Agent 行为的实用技巧
除了上述核心技术,以下是一些在实际项目中总结的 Prompt 工程最佳实践,它们能帮助你打造行为更加可靠的 Agent:
- 使用明确的否定指令:不要只告诉 Agent"该做什么",还要明确告诉它"不该做什么"。例如"不要编造数据"比"要准确回答"更有效。
- 设置输出长度限制:在 Prompt 中明确指定输出长度范围,如"回答控制在200-300字之间",避免 Agent 输出过长或过短。
- 使用分隔符标记结构:用 XML 标签、Markdown 标题或特殊符号来分隔 Prompt 的不同部分,帮助模型更好地理解结构。
- 提供错误处理指引:明确告诉 Agent 在遇到异常情况时应该怎么做,而不是让它自己决定。例如"如果无法确定答案,请回复'我不确定',而不是猜测"。
- 迭代优化:Prompt 工程是一个持续迭代的过程。收集 Agent 的实际输出,分析错误模式,针对性地修改 Prompt,然后再次测试。这个循环可能需要重复多次才能达到理想效果。
- 版本管理:将 Prompt 纳入版本控制系统,记录每次修改的原因和效果。当新版本出现问题时,可以快速回退到之前的版本。
Prompt 评估方法
如何评估 Prompt 的质量?建议建立一套标准化的评估体系:准备 20-50 个有代表性的测试用例,覆盖正常情况和边界情况;对每个测试用例的预期输出进行人工标注;使用自动化脚本对比 Agent 的实际输出与预期输出;计算准确率、格式符合率等指标。每次修改 Prompt 后,都运行完整的测试集,确保改进不会在其他场景引入退化。
小结
Prompt 工程是构建高质量 AI Agent 的基础技能。通过精心设计系统提示词、运用少样本示例和思维链技术、利用 OpenClaw 的模板系统,你可以显著提升 Agent 的行为可靠性和输出质量。记住,Prompt 工程没有银弹——它需要持续的实验、评估和迭代。但正是这种精益求精的过程,让优秀的 Agent 和平庸的 Agent 之间产生了巨大的差距。在下一节教程中,我们将学习如何使用 Docker 容器化部署你的 Agent 应用,让它能够在生产环境中稳定运行。