2.5 智能体提示词工程

为智能体设计提示词与传统的 提示词工程arrow-up-right 有显著不同。智能体提示词需要定义身份、能力边界、行为规范和决策框架,是智能体的"灵魂"所在。

2.5.1 智能体提示词的特殊性

智能体提示词(Agent Prompt)不仅仅是向 LLM 提问的技巧,它更像是一种 自然语言编程。如果说普通提示词是向搜索引擎发送的查询,那么智能体提示词就是为 AI 编写的"操作系统"。

它的特殊性体现在以下几个方面:

  1. 系统性:它不是单条指令,而是一个包含身份、记忆、工具和规划的完整系统框架。

  2. 可执行性:它的目标不仅是产生文本,而是产生可执行的动作(如调用 API、操作文件)。

  3. 鲁棒性:它需要预设错误处理机制,告诉智能体在遇到未知情况或工具调用失败时该如何应对 ("If-Then" 逻辑)。

  4. 元认知引导:它通常包含强制性的思维链(Chain of Thought)要求,迫使智能体在行动前显式地进行推理和反思。

简而言之,智能体提示词定义了智能体的 思维模式行为边界,将其从一个单纯的对话者(Chatbot)转变为一个能够独立解决问题的行动者(Actor)。

2.5.2 与普通提示词的区别

维度
普通提示词
智能体提示词

目标

完成单次任务

定义持续行为模式

时效

单次对话

跨多轮/多会话

复杂度

通常简短

通常较长且结构化

内容

任务描述

身份 + 能力 + 规范 + 示例

动态性

静态

可能动态更新

2.5.3 智能体提示词的核心组成

具体示例如下:

spinner

图 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 模式或受约束解码)。建议在需要稳定协议通信时启用,以减少解析错误。

接口建议:如果你使用的平台提供了更新的结构化输出接口,优先选择新接口;同时保留兼容写法以覆盖历史代码。

思维链提示

思维链提示要求在回答前进行逐步推理。这种技术有助于需要结构化思考的复杂分析任务。

三种实现方式

提示词缓存

对于拥有长系统提示词或大量示例的智能体,提示词缓存是降低延迟和成本的关键技术。原理:将系统提示词的前缀部分(如身份、工具定义、文档)缓存在推理服务器端,后续请求只需发送差异部分。

最佳实践

  • 静态内容前置:将不变的身份、工具、规则放在提示词最前面。

  • 动态内容后置:将用户当前输入、对话历史放在提示词尾部。

  • 结构化分层:保持提示词结构稳定,最大化缓存命中率。

分层提示词设计

将不同类型的指令分层,便于管理:

spinner

动态提示词注入

根据运行时状态动态添加内容:

防御性提示词

防止提示词注入攻击:

元提示

使用 LLM 来帮你写提示词。与其手动调整字句,不如让 AI 优化 AI 的指令。

Meta-prompt 示例

自我反省提示词

让智能体可以"反省"自己的提示词:

2.5.7 常见问题与解决

问题1:提示词过长

症状:上下文窗口不够用

解决

  • 使用简洁的措辞

  • 将示例移到检索系统

  • 动态加载相关部分

问题2:指令冲突

症状:智能体行为不一致

解决

  • 建立明确的优先级层次

  • 减少模糊表述

  • 添加冲突处理规则

问题3:遗忘指令

症状:长对话后智能体忽略某些规则

解决

  • 关键指令放在提示词开头和结尾

  • 定期在对话中提醒

  • 使用强调标记(如 ⚠️)

最佳实践 Checklist


下一节: 本章小结

Last updated