上下文工程中提示词编写的原则和技巧

摘要自anthropic:Effective context engineering for AI agents

引言:从单一提示到上下文状态管理

在构建复杂的 AI 智能体(Agent)时,我们关注的焦点已不再仅仅是如何写出“魔法”般的提示词(Prompt)。大型语言模型(LLM)的推理过程是一个多轮、动态的状态管理过程。因此,我们需要从“提示工程”(Prompt Engineering)迈向上下文工程(Context Engineering)。

提示工程侧重于如何编写和组织 LLM 指令以获得最佳结果。而上下文工程,作为提示工程的自然演进,则关注于在 LLM 推理过程中策划和维护最优的代币集合(信息)的整套策略。系统提示(System Prompts)是 Agent 初始、静态上下文的核心组成部分,其编写质量直接决定了 Agent 的初始效用和指导方向。

有效的上下文工程要求我们“在上下文中思考”(thinking in context),即如何利用有限的上下文窗口,找到最小可能集合的高信号代币,最大限度地提高所需结果的可能性。

一、提示词编写的核心原则:清晰性与极简主义

上下文(Context)是 Agent 的有限资源,因为它受到 LLM 的注意力预算(attention budget)和上下文衰减(context rot)等架构约束。因此,对系统提示的要求是高效且紧凑

1. 极度清晰和直接的语言

系统提示应该极其清晰(extremely clear),并使用简单、直接的语言来呈现 Agent 的指导信息。

2. 追求最小化信息集合

无论您如何组织系统提示,都应该努力实现信息的最小化集合,这个集合必须充分概述您期望的 Agent 行为。

请注意,这里的“最小化”(minimal)不一定意味着简短。您仍然需要预先为 Agent 提供足够的信息,以确保它能够坚持您期望的行为。我们的总体指导原则是深思熟虑,并保持上下文内容丰富,但同时又紧凑(informative, yet tight)。

最佳实践:最好从一个最小化的提示开始测试,并使用可用的最佳模型来观察其在任务上的表现。然后,根据在初始测试中发现的失败模式,迭代性地添加清晰的指令和示例来改进性能。

二、关键技巧:定位“正确的高度”(The Right Altitude)

“正确的高度”是 Agent 开发者在编写提示时需要掌握的“金发姑娘区”(Goldilocks zone)。它要求我们在两种常见的失败模式之间取得平衡:

失败模式一:过于僵化(硬编码的复杂逻辑)

  • 特点: 工程师试图在提示中硬编码复杂、脆弱的逻辑,以引发精确的 Agent 行为。
  • 后果: 这种方法会随着时间的推移,增加系统的脆弱性维护的复杂性
  • 示例(避免): 像“如果工具 A 返回了 HTTP 404 错误,并且用户在过去 5 分钟内没有提及‘重试’,那么你必须调用工具 B,且将 query 参数设置为用户消息的前 10 个词,除非用户消息包含 URL”——这种脆弱的 If-Else 逻辑应该被避免。

失败模式二:过于笼统(模糊的指导)

  • 特点: 工程师提供模糊、高层的指导,未能为 LLM 提供具体的信号以指导期望的输出,或者错误地假设 Agent 具有共享的上下文
  • 后果: Agent 可能会偏离目标,无法做出有效的、符合预期的行动。
  • 示例(避免): 像“做一名优秀的助手,帮助用户解决问题”——这种提示过于笼统,难以有效指导行为。

“正确的高度”的提示词

最优的高度是:足够具体以有效地指导行为,但同时要足够灵活,为模型提供强大的启发式方法来引导行为。

示例(理想的系统提示片段):

Agent 角色与目标
“你是一名专业的技术文档分析师。你的首要目标是准确回答用户关于文档库的查询。你必须始终使用 search_documents 工具来获取最新的信息。如果信息来源不确定,你必须明确告知用户信息不足。”

约束与输出格式
“在回答之前,你必须在内部推理步骤中指出你使用的工具和检索到的信息。最终回答必须简洁,并且仅包含来自工具结果的信息。”

三、结构化提示:利用标记增强 Agent 可读性

为了避免提示内容混杂,提高 Agent 的理解效率,建议将提示组织成不同的部分(distinct sections)。

技巧:使用 XML 标签或 Markdown 标题进行划分

建议使用技术,如 XML 标签Markdown 标题来划分这些部分。这种结构化方法使得 LLM 能够更好地识别不同类型的信息,即使模型能力不断提升,这种清晰的划分仍是良好实践。

部分名称 标记示例 目的
背景信息 <background_information> 设定 Agent 的专业领域或限制条件。
指令 <instructions> 明确 Agent 必须遵循的步骤或行动规则。
工具指导 ## Tool guidance 描述工具的使用方式、时机和优先级。
输出描述 ## Output description 明确最终输出的格式要求(如 JSON、Markdown)。

四、少样本提示(Few-shot Prompting)的精心策展

提供示例(即少样本提示)是 Agent 开发中持续强烈建议的最佳实践。示例是 Agent 预期行为的视觉蓝图,对于 LLM 而言,示例有极大引导作用。

策展要点:

  • 避免堆砌边缘案例: 不要试图将一大堆边缘案例清单塞入提示中,试图囊括 Agent 可能需要遵循的每一条规则。
  • 提供规范化示例: 应该努力策划一组多样化、规范化的示例,以有效地描绘 Agent 的预期行为。这些示例应展示核心功能、正确的工具使用流程以及预期的响应风格。

通过以上这些技巧,Agent 开发者能够确保他们的系统提示在上下文工程的框架下,既能提供有效的指导信号,又能尊重 LLM 有限的注意力预算,从而构建出更可靠、高效的 Agent。

作者

马克鱼

发布于

2025-10-12

更新于

2025-10-12

许可协议