2.5 智能体提示词工程
为智能体设计提示词与传统的 提示词工程 有显著不同。智能体提示词需要定义身份、能力边界、行为规范和决策框架,是智能体的"灵魂"所在。
2.5.1 智能体提示词的特殊性
智能体提示词(Agent Prompt)不仅仅是向 LLM 提问的技巧,它更像是一种 自然语言编程。如果说普通提示词是向搜索引擎发送的查询,那么智能体提示词就是为 AI 编写的"操作系统"。
它的特殊性体现在以下几个方面:
系统性:它不是单条指令,而是一个包含身份、记忆、工具和规划的完整系统框架。
可执行性:它的目标不仅是产生文本,而是产生可执行的动作(如调用 API、操作文件)。
鲁棒性:它需要预设错误处理机制,告诉智能体在遇到未知情况或工具调用失败时该如何应对 ("If-Then" 逻辑)。
元认知引导:它通常包含强制性的思维链(Chain of Thought)要求,迫使智能体在行动前显式地进行推理和反思。
简而言之,智能体提示词定义了智能体的 思维模式和行为边界,将其从一个单纯的对话者(Chatbot)转变为一个能够独立解决问题的行动者(Actor)。
2.5.2 与普通提示词的区别
目标
完成单次任务
定义持续行为模式
时效
单次对话
跨多轮/多会话
复杂度
通常简短
通常较长且结构化
内容
任务描述
身份 + 能力 + 规范 + 示例
动态性
静态
可能动态更新
2.5.3 智能体提示词的核心组成
具体示例如下:
图 2-3:智能体系统提示词核心组件
2.5.4 系统提示词设计模板
身份定义
具体示例如下:
能力描述
具体示例如下:
约束规范
具体示例如下:
工具定义
具体示例如下:
[!TIP] 工具描述最佳实践 虽然 markdown 格式易读,但在实际开发中(如平台提供的 Tool Use 能力),推荐使用 JSON Schema 定义工具。
优势:明确的类型约束(Type Safety)、支持枚举(Enums)和必填项检查。
技巧:在
description字段中详细说明参数的用途和格式要求,模型会依赖这些描述进行决策。
输出格式
具体示例如下:
示例
具体示例如下:
2.5.5 核心提示工程技术
以下技术来自业界常见的最佳实践总结,能显著提升智能体的输出质量。
明确性原则
现代 AI 模型对清晰、明确的指令响应极佳。不要假设模型会推断你的意图——直接说明。
关键原则:告诉模型你想看到什么。如果需要全面输出,明确要求;如果需要特定功能,逐一列出。
最佳实践:
使用直接的动作动词开头:"编写"、"分析"、"生成"、"创建"
跳过前言,直接进入请求
说明输出应包含什么,而不仅仅是要处理什么
对质量和深度期望明确
提供上下文和动机
解释为什么某事重要能帮助模型更好地理解目标,从而提供更有针对性的响应。
第二种版本帮助模型理解规则背后的原因,使其能够对相关的格式选择做出更好的决策。
具体性原则
具体性意味着用明确的指导和要求来构建指令。越具体,结果越好。
让提示词足够具体的检查清单:
明确的约束(字数、格式、时间线)
相关上下文(受众是谁、目标是什么)
期望的输出结构(表格、列表、段落)
任何要求或限制(饮食需求、预算限制、技术约束)
使用示例
示例(也称为 单样本(One-shot)或少样本提示)通过展示而非描述来澄清难以用语言表达的微妙需求。
何时使用示例:
期望的格式比描述更容易展示
需要特定的语气或风格
任务涉及微妙的模式或惯例
简单指令未能产生一致的结果
专业提示:从一个示例开始(One-shot)。只有当输出仍不符合需求时才添加更多示例(Few-shot)。
允许表达不确定性
明确允许 AI 表达不确定性而不是猜测。这能减少幻觉并提高可靠性。
这个简单的添加通过允许模型承认局限性,使响应更加可信。
2.5.6 高级技巧
预填充与结构化输出
预填充: 预填充允许你为 AI 开始响应,引导格式、语气或结构。
结构化输出: 不少现代模型支持结构化输出(如 JSON 模式或受约束解码)。建议在需要稳定协议通信时启用,以减少解析错误。
接口建议:如果你使用的平台提供了更新的结构化输出接口,优先选择新接口;同时保留兼容写法以覆盖历史代码。
思维链提示
思维链提示要求在回答前进行逐步推理。这种技术有助于需要结构化思考的复杂分析任务。
三种实现方式:
提示词缓存
对于拥有长系统提示词或大量示例的智能体,提示词缓存是降低延迟和成本的关键技术。原理:将系统提示词的前缀部分(如身份、工具定义、文档)缓存在推理服务器端,后续请求只需发送差异部分。
最佳实践:
静态内容前置:将不变的身份、工具、规则放在提示词最前面。
动态内容后置:将用户当前输入、对话历史放在提示词尾部。
结构化分层:保持提示词结构稳定,最大化缓存命中率。
分层提示词设计
将不同类型的指令分层,便于管理:
动态提示词注入
根据运行时状态动态添加内容:
防御性提示词
防止提示词注入攻击:
元提示
使用 LLM 来帮你写提示词。与其手动调整字句,不如让 AI 优化 AI 的指令。
Meta-prompt 示例:
自我反省提示词
让智能体可以"反省"自己的提示词:
2.5.7 常见问题与解决
问题1:提示词过长
症状:上下文窗口不够用
解决:
使用简洁的措辞
将示例移到检索系统
动态加载相关部分
问题2:指令冲突
症状:智能体行为不一致
解决:
建立明确的优先级层次
减少模糊表述
添加冲突处理规则
问题3:遗忘指令
症状:长对话后智能体忽略某些规则
解决:
关键指令放在提示词开头和结尾
定期在对话中提醒
使用强调标记(如 ⚠️)
最佳实践 Checklist
下一节: 本章小结
Last updated
