提高提示工程的最佳实践

分类技术博客
作者Anthropic
来源跳转
发表时间

内容

上下文工程 已经成为与大型语言模型(LLM)合作的越来越重要的一部分,而提示工程是其基本构建块。

提示工程 是指结构化指令以从 AI 模型中获得更好的输出。它是如何表达查询、指定样式、提供上下文以及指导模型行为以实现目标的方法。

模糊指令和精心设计的提示之间的差异可能意味着通用输出和您需要的输出之间的差异。一个结构不良的提示可能需要多次来回交流以澄清意图,而一个精心设计的提示可以一次性实现。

为了帮助您入门,我们汇集了一些团队的最佳实践,包括旨在立即改善结果的实用方法。我们将从您今天可以使用的简单习惯开始,然后扩展到复杂项目的高级方法。

如何使用提示工程

在其最基本的层次上,提示工程只是修改您传递给 LLM 的查询。通常,它只是在实际请求之前向查询中添加信息,但知道 哪些 信息是正确的信息以创建一个伟大且有效的提示是秘密。

核心技术

这些提示工程技术构成了有效的 AI 交互的基础。使用它们以一致的方式来查看响应质量的立即改善。

清晰明确

现代 AI 模型对清晰、明确的指令做出异常好的响应。不要假设模型会推断出您想要什么 - 直接说明。使用简单的语言来明确说明您想要什么,而不带有歧义。

关键原则:告诉模型您想要看到什么。如果您想要全面输出,请要求它。如果您想要特定的功能,请列出它们。像 Claude 这样的现代模型特别受益于明确的方向。

示例:创建分析仪表盘

模糊:“创建分析仪表盘”

明确:“创建分析仪表盘。包括尽可能多的相关功能和交互。超越基础知识,创建一个功能齐全的实现。”

第二个版本明确请求全面功能,并表明您希望模型超越最低限度。

最佳实践

  • 以直接的动作动词开头:“写”、“分析”、“生成”、“创建”
  • 跳过前言,直接进入请求
  • 指定输出应包括什么,而不仅仅是要处理什么
  • 清楚地说明质量和深度的期望

提供上下文和动机

解释 为什么 某事物很重要,有助于 AI 模型更好地理解您的目标并提供更有针对性的响应。这在较新的模型中尤其有效,这些模型可以推理您的根本目标。

示例:格式偏好

效果较差:“永远不要使用项目符号”

更有效:“我更喜欢自然段落形式的响应,而不是项目符号,因为我发现流畅的散文更容易阅读和更具对话性。项目符号对我来说太正式和列表化了,不适合我的随意学习风格。”

第二个版本有助于模型了解规则背后的推理,这使得它能够对相关的格式选择做出更好的决定。

何时提供上下文

  • 解释输出的目的或受众
  • 澄清为什么存在某些约束
  • 描述输出将如何使用
  • 指出您试图解决什么问题

具体

提示工程中的具体性意味着用明确的指南和要求来结构您的指令。您越具体地说明您想要什么,结果就越好。

示例:餐饮计划

模糊:“创建地中海饮食的餐饮计划”

具体:“为预糖尿病管理设计地中海饮食餐饮计划。每日 1800 卡路里,重点是低血糖食品。列出早餐、午餐、晚餐和一份小吃的完整营养成分。”

什么样的提示足够具体?

包括:

  • 清晰的约束(字数、格式、时间表)
  • 相关的上下文(受众是谁,目标是什么)
  • 所需的输出结构(表格、列表、段落)
  • 任何要求或限制(饮食需求、预算限制、技术约束)

使用示例

示例并不总是必要的,但在解释概念或演示特定格式时,它们非常有用。也称为一次性或少次提示,示例通过演示来说明,而不是通过描述来说明,这有助于阐明通过描述难以表达的细微要求。

重要注意事项:Claude 4.x 及类似的高级模型非常关注示例中的细节。确保您的示例与您要鼓励的行为保持一致,并尽量减少您要避免的任何模式。

示例:文章摘要

无示例:“总结这篇文章”

这是我想要的摘要样式的示例: 文章:[关于 AI 法规的文章链接] 摘要:欧盟通过了针对高风险系统的全面 AI 法案。主要条款包括透明度要求和人类监督的强制规定。于 2026 年生效。 现在以相同的样式总结这篇文章:[您的新文章链接]

何时使用示例

  • 所需的格式更容易展示而不是描述
  • 您需要特定的语气或样式
  • 任务涉及微妙的模式或约定
  • 简单的指令没有产生一致的结果

提示:从一个示例(一次性)开始。只有当输出仍然不符合您的需求时,才添加更多示例(少次)。

允许 Claude 表达不确定性

明确允许 AI 表达不确定性,而不是猜测。这减少了幻觉并增加了可靠性。

示例:“分析这些财务数据并找出趋势。如果数据不足以得出结论,请说明,而不是推测。”

这个简单的添加使得响应更加可靠,因为它允许模型承认其局限性。

尝试这些在 Claude 中。

高级提示工程技术

这些核心习惯会带您走得很远,但您可能仍然会遇到需要更复杂方法的情况。高级提示工程技术在构建代理解决方案、处理复杂数据结构或需要分解多阶段问题时表现出色。

预填充 AI 的响应

预填充允许您为 AI 的响应开始,指导格式、语气或结构。这项技术对于强制输出格式或跳过对话前言尤其有效。

何时使用预填充

  • 您需要 AI 输出 JSON、XML 或其他结构化格式
  • 您希望跳过对话前言,直接进入内容
  • 您需要维持特定的语气或角色
  • 您希望控制 AI 如何开始其响应

示例:强制 JSON 输出

没有预填充,Claude 可能会说:“这是您请求的 JSON:{...}”

使用预填充(API 使用):

messages=[ {
  "role": "user", "content": "从此产品描述中提取名称和价格到 JSON 中。"
}

,
{
"role" : "assistant",
"content" : "{"
}

]

AI 将从开括号继续,仅输出有效的 JSON。

注意:在聊天界面中,您可以通过非常明确的方式来近似这个效果:“仅输出无前言的有效 JSON。从开括号开始您的响应。”

链式思维提示

链式思维(CoT)提示涉及在回答之前请求一步一步的推理。这项技术有助于复杂的分析任务,这些任务可以从结构化的思考中受益。

现代方法:Claude 提供了一个 扩展思考 功能,它自动化了结构化推理。当可用时,扩展思考通常比手动链式思维提示更可取。然而,理解手动 CoT 仍然对您有价值,因为它可以在扩展思考不可用或您需要可以审查的透明推理时使用。

何时使用链式思维

  • 扩展思考不可用(即免费的 Claude.ai 计划)
  • 您需要可以审查的透明推理
  • 任务需要多个分析步骤
  • 您希望确保 AI 考虑特定的因素

链式思维有三种常见的实现方法:

基本链式思维

只需在您的指令中添加“一步一步地思考”。

草拟个性化电子邮件,向捐赠者请求为今年的关爱儿童计划捐款。

计划信息:
<program>
  {{PROGRAM_DETAILS}}
</program>

捐赠者信息:
<donor>
  {{DONOR_DETAILS}}
</donor>

一步一步地思考,然后写电子邮件。

指导链式思维

结构您的提示以提供特定的推理阶段。

在写电子邮件之前,先思考。首先,思考哪些信息可能会吸引这位捐赠者,考虑到他们的捐赠历史。然后,找出关爱儿童计划的哪些方面可能会引起他们的共鸣。最后,使用您的分析,写一封个性化的捐赠者电子邮件。

结构化链式思维

使用标签来分离推理和最终答案。

<thinking> 标签中思考,然后写电子邮件。首先,分析哪些信息可能会吸引这位捐赠者。然后,找出相关的计划方面。最后,在 <email> 标签中,使用您的分析,写一封个性化的捐赠者电子邮件。

注意:即使扩展思考可用,显式 CoT 提示仍然可以通过复杂任务来提供帮助。两种方法是互补的,而不是互斥的。

控制输出格式

对于现代 AI 模型,有几种有效的方法来控制响应格式:

注意: 即使在扩展思考可用时,显式的CoT提示仍然可以在复杂任务中带来益处。两种方法是互补的,而不是相互排斥的。

控制输出格式

对于现代AI模型,有几种有效的方法来控制响应格式:

1. 告诉AI应该做什么,而不是不应该做什么

不要说:“不要在响应中使用markdown”而是说:“你的响应应该由流畅的段落组成”

2. 匹配你的提示风格与所需的输出

你的提示中使用的格式风格可能会影响AI的响应风格。如果你想要最小化markdown,请减少你的提示中的markdown。

3. 明确说明格式偏好

对于详细的格式控制:

当编写报告或分析时,使用清晰、流畅的散文和完整的段落。使用标准的段落断行来组织内容。仅将markdown保留用于内联代码、代码块和简单的标题。

不要使用有序列表或无序列表,除非你正在呈现真正离散的项目,列表格式是最佳选择,或者用户明确请求列表。

不要使用项目符号列出项目,而是将它们自然地纳入句子中。你的目标是可读的、流畅的文本,引导读者自然地浏览想法。

提示链

与前面的技术不同,提示链不能在单个提示中实现。链式提示将复杂任务分解为较小的顺序步骤,每个步骤使用单独的提示。每个提示处理一个阶段,输出作为下一个指令的输入。

这种方法通过使每个单独任务更容易来换取延迟,通常使用工作流程或以编程方式实现,但你也可以在收到响应后手动提供提示。

示例:研究摘要

  • 第一个提示:“总结这篇医学论文,涵盖方法、发现和临床影响。”

  • 第二个提示:“审查上述摘要的准确性、清晰性和完整性。提供评分反馈。”

  • 第三个提示:“根据以下反馈改进摘要:[来自步骤2的反馈]”

每个阶段通过专注的指令添加完善。

何时使用提示链

  • 你有一个复杂的请求,需要分解为步骤
  • 你需要迭代完善
  • 你正在进行多阶段分析
  • 中间验证增加了价值
  • 单个提示产生不一致的结果

权衡: 链式提示增加了延迟(多个API调用),但通常会显著提高复杂任务的准确性和可靠性。

你可能听说过的技术

一些提示工程技术曾经在早期AI模型中很流行,但在像Claude这样的模型中已经不那么必要了。然而,你可能仍然会在旧文档中遇到它们,或者在特定情况下找到它们有用。

XML标签用于结构

XML标签曾经是向提示添加结构和清晰度的推荐方法,尤其是在包含大量数据时。虽然现代模型在没有XML标签的情况下更好地理解结构,但它们在特定情况下仍然可以使用。

示例

<运动员信息>
  - 身高:6'2"
  - 体重:180磅
  - 目标:增肌
  - 饮食限制:素食主义者
</运动员信息>

根据上述运动员信息生成一份餐计划。

何时XML标签可能仍然有用

  • 你正在处理极其复杂的提示,混合多种类型的内容
  • 你需要绝对确定内容边界
  • 你正在使用旧版本的模型

现代替代方案: 在大多数用例中,清晰的标题、空白和明确的语言(“使用下面的运动员信息...”)与少量开销一样有效。

角色提示

角色提示定义了专家人物和视角,以便在查询中表达。虽然这可以有效,但现代模型已经足够成熟,以至于不再需要过度的角色提示。

示例: “你是一名财务顾问。分析这个投资组合...”

重要注意事项: 不要过度限制角色。“你是一个有帮助的助手”通常比“你是一个只使用技术术语和永远不犯错误的世界知名专家”更好。过于具体的角色可能会限制AI的有用性。

何时角色提示可能有帮助

  • 你需要在多个输出中保持一致的语气
  • 你正在构建一个需要特定人物的应用程序
  • 你希望为复杂主题提供领域专业知识框架

现代替代方案: 通常,明确说明你想要的视角更有效:“分析这个投资组合,关注风险承受能力和长期增长潜力”,而不是分配一个角色。

Try 在Claude中。

将所有内容整合在一起

你现在已经看到了单独的技术,但它们的真正力量在于当你战略性地组合它们时。提示工程的艺术不是使用每一种可用的技术,而是选择合适的组合来满足你的特定需求。

示例:组合多种技术

从这个季度报告中提取关键财务指标, 并以JSON格式呈现。

我需要这些数据用于自动处理, 因此你的响应中只能包含有效的JSON, 无需前言或解释。

使用以下结构: {
  "收入""带单位的值",
  "利润率""百分比",
  "增长率""百分比"
}

如果任何指标在报告中没有明确说明, 请使用null而不是猜测。

以开括号开始你的响应: {

这个提示结合了:

  • 明确的指令(要提取什么)
  • 上下文(为什么格式很重要)
  • 示例结构(显示格式)
  • 表达不确定性的许可(如果不确定使用null)
  • 格式控制(以开括号开始)

选择合适的技术

并非每个提示都需要每种技术。以下是一个决策框架:

从这里开始

  • 你的请求是否清晰明确?如果不是,先改进清晰度
  • 任务是否简单?仅使用核心技术(明确、清晰、提供上下文)
  • 任务是否需要特定的格式?使用示例或预填充
  • 任务是否复杂?考虑将其分解(链式提示)
  • 是否需要推理?使用扩展思考(如果可用)或链式思考

技术选择指南

如果你需要...使用...
特定的输出格式示例、预填充或明确的格式指令
步骤式推理扩展思考(Claude 4.x)或链式思考
复杂的多阶段任务提示链
透明的推理链式思考与结构化输出
防止幻觉允许说“我不知道”

解决常见的提示问题

即使是用心良好的提示也可能产生意外的结果。以下是一些常见的问题和解决方法:

  • 问题:响应太过通用 → 解决方案:添加具体性、示例或明确的请求以获取综合输出。要求AI“超越基础知识”。
  • 问题:响应离题或错过了重点 → 解决方案:更明确地说明你的实际目标。提供上下文以解释你为什么提问。
  • 问题:响应格式不一致 → 解决方案:添加示例(少量)或使用预填充来控制响应的开始。
  • 问题:任务太复杂,结果不可靠 → 解决方案:将其分解为多个提示(链式提示)。每个提示应该做一件事。
  • 问题:AI包含不必要的前言 → 解决方案:使用预填充或明确请求:“跳过前言,直接回答问题”。
  • 问题:AI编造信息 → 解决方案:明确允许说“我不知道”当不确定时。
  • 问题:AI建议更改,而你想要实现 → 解决方案:明确说明操作:“更改这个函数”而不是“可以建议更改吗”。

专业提示: 从简单开始,只在需要时添加复杂性。测试每个添加以查看它是否真正改善结果。

常见的错误要避免

从这些常见的陷阱中学习,以节省时间并改进你的提示:

  • 不要过度工程化:更长、更复杂的提示并不总是更好。
  • 不要忽视基础知识:高级技术不会帮助你,如果你的核心提示不清晰或模糊。
  • 不要假设AI能读懂你的心思:明确说明你想要什么。留下模糊性会给AI留下误解的空间。
  • 不要一次使用所有技术:选择解决你特定挑战的技术。
  • 不要忘记迭代:第一次提示很少能完美地工作。测试和改进。
  • 不要依赖过时的技术:XML标签和过度的角色提示在现代模型中不再必要。从明确、清晰的指令开始。

提示工程考虑

处理长内容

实施高级提示工程的一个挑战是,它通过额外的令牌使用增加了上下文开销。示例、多个提示、详细的指令——所有这些都消耗令牌,而上下文管理是一种独特的技能。

请记住,只有当它们有意义且证明其使用价值时,才使用提示工程技术。有关有效管理上下文的全面指导,请参阅我们的博客文章上下文工程

上下文感知改进: 现代AI模型,包括Claude 4.x,已经显著改进了上下文感知能力,以解决历史上的“迷失在中间”的问题,即模型难以平等地关注长上下文的所有部分。

为什么任务拆分仍然有帮助: 即使有了这些改进,将大任务分解为较小、离散的块仍然是一种有价值的技术——不是因为上下文限制,而是因为它帮助模型专注于在非常具体的要求和范围内做出最好的工作。在单个提示中,专注的任务始终会产生比尝试在单个提示中完成多个目标更高质量的结果。

为什么任务拆分仍然有帮助:即使有了这些改进,将大任务拆分成较小、离散的块仍然是一种有价值的技术——这不是因为上下文的限制,而是因为它可以帮助模型在非常具体的要求和范围内做出最好的工作。具有明确边界的专注任务始终能产生比尝试在单个提示中实现多个目标更高质量的结果。

策略:在处理长上下文时,清晰地结构化您的信息,将最关键的细节放在开始或结束处。当处理复杂任务时,请考虑将它们拆分成专注的子任务是否能提高每个组件的质量和可靠性。

什么样的提示是好的?

提示工程是一种技能,需要经过几次尝试才能掌握。判断您是否做对的唯一方法是测试并查看结果。第一步就是尝试一下。您将立即看到使用和不使用我们在这里介绍的提示技术之间的差异。

要真正提高您的提示工程技能,您需要客观地衡量您的提示的有效性。好消息是,这正是我们在 anthropic.skilljar.com 的提示工程课程中涵盖的内容。

快速评估提示

  • 输出是否符合您的具体要求?
  • 您是否在一次尝试中获得了结果,还是需要多次迭代?
  • 格式在多次尝试中是否保持一致?
  • 您是否避免了上述常见错误?

最后的建议

提示工程最终是关于沟通:使用帮助 AI 最清晰地理解您的意图的语言。从本指南中介绍的核心技术开始。将它们一致地使用,直到它们成为您的第二天性。只有当高级技术解决特定问题时,才将它们纳入其中。

请记住:最好的提示不是最长或最复杂的,而是能够可靠地实现您的目标并具有最小必要结构的提示。随着您的练习,您将对哪些技术适用于哪些情况发展出直觉。

转向上下文工程并不降低提示工程的重要性。事实上,提示工程是上下文工程中的一个基本构建块。每个精心设计的提示都成为塑造 AI 行为的更大上下文的一部分,通过对话历史、附加文件和系统指令与其他元素一起工作以产生更好的结果。

开始在 Claude 中提示

附加资源

评论

(0)
未配置登录方式
暂无评论