提示工程
提示工程
prompt
user and assistant
user
and assistant
messages MUST alternate, and messages MUST start with a user
turn. You can have multiple user
& assistant
pairs in a prompt (as if simulating a multi-turn conversation). You can also put words into a terminal assistant
message for Claude to continue from where you left off (more on that in later chapters).
system prompt
You can also use system prompts. A system prompt is a way to provide context, instructions, and guidelines to Claude before presenting it with a question or task in the “User” turn.
Structurally, system prompts exist separately from the list of user
& assistant
messages, and thus belong in a separate system
parameter (take a look at the structure of the get_completion
Assigning Roles
it’s sometimes important to prompt Claude to inhabit a specific role (including all necessary context). This is also known as role prompting. The more detail to the role context, the better.
Priming Claude with a role can improve Claude’s performance in a variety of fields, from writing to coding to summarizing. It’s like how humans can sometimes be helped when told to “think like a ______”. Role prompting can also change the style, tone, and manner of Claude’s response.
Separating Data and Instructions
we can do this pretty easily by separating the fixed skeleton of the prompt from variable user input, then substituting the user input into the prompt before sending the full prompt to Claude.
Formatting Output and Speaking for Claude
One of these ways is by using XML tags to separate out the response from any other superfluous text. You’ve already learned that you can use XML tags to make your prompt clearer and more parseable to Claude. It turns out, you can also ask Claude to use XML tags to make its output clearer and more easily understandable to humans.
Why is this something we’d want to do? Well, having the output in XML tags allows the end user to reliably get the poem and only the poem by writing a short program to extract the content between XML tags.
An extension of this technique is to **put the first XML tag in the assistant
turn. When you put text in the assistant
turn, you’re basically telling Claude that Claude has already said something, and that it should continue from that point onward. This technique is called “speaking for Claude” or “prefilling Claude’s response.”
Below, we’ve done this with the first <haiku>
XML tag. Notice how Claude continues directly from where we left off.
1 | # Variable content |
Claude also excels at using other output formatting styles, notably JSON
. If you want to enforce JSON output (not deterministically, but close to it), you can also prefill Claude’s response with the opening bracket, {
}.
1 | # Variable content |
何时进行提示工程
本指南重点关注可以通过提示工程来控制的成功标准。 并非每个成功标准或失败的评估都最适合通过提示工程来解决。例如,延迟和成本有时可以通过选择不同的模型来更轻松地改进。
与其他模型行为控制方法(如微调)相比,提示工程要快得多,并且通常可以在更短的时间内产生性能的飞跃。以下是选择提示工程而非微调的一些原因:
- 资源效率:微调需要高端GPU和大内存,而提示工程只需要文本输入,使其更加节省资源。
- 成本效益:对于基于云的AI服务,微调会产生巨大的成本。提示工程使用基础模型,通常更便宜。
- 维护模型更新:当提供商更新模型时,微调版本可能需要重新训练。提示通常可以在不同版本间正常工作而无需更改。
- 节省时间:微调可能需要数小时甚至数天。相比之下,提示工程几乎可以立即提供结果,允许快速解决问题。
- 最小数据需求:微调需要大量特定任务的标记数据,这可能稀缺或昂贵。提示工程可以使用少样本甚至零样本学习。
- 灵活性和快速迭代:快速尝试各种方法,调整提示,并立即看到结果。这种快速实验在微调中很难实现。
- 领域适应:通过在提示中提供特定领域的上下文,轻松使模型适应新领域,无需重新训练。
- 理解力提升:提示工程在帮助模型更好地理解和利用外部内容(如检索文档)方面远比微调更有效。
- 保留通用知识:微调存在灾难性遗忘的风险,即模型可能会失去通用知识。提示工程保持了模型的广泛能力。
- 透明度:提示是人类可读的,准确显示模型接收到的信息。这种透明度有助于理解和调试。
一般原则
明确表达您的指令
Claude 4模型对清晰、明确的指令反应良好。具体说明您期望的输出可以帮助提高结果质量。希望获得之前Claude模型”超越期望”行为的客户,可能需要在使用Claude 4时更明确地请求这些行为。
效果较差:
1 | 创建一个分析仪表板 |
效果更好:
1 | 创建一个分析仪表板。包含尽可能多的相关功能和交互。超越基础功能,创建一个功能齐全的实现方案。 |
添加上下文以提高性能
提供指令背后的上下文或动机,例如向Claude解释为什么这种行为很重要,可以帮助Claude 4更好地理解您的目标并提供更有针对性的回答。
效果较差:
1 | 绝不使用省略号 |
效果更好:
1 | 您的回答将由文本转语音引擎朗读,所以请不要使用省略号,因为文本转语音引擎不知道如何发音。 |
Claude足够聪明,能够从解释中进行泛化。
注意示例和细节
Claude 4模型在遵循指令时会注意细节和示例。确保您的示例与您想要鼓励的行为一致,并最小化您想要避免的行为。
特定情况的指导
控制回答的格式
我们发现以下几种方法在引导Claude 4模型的输出格式方面特别有效:
告诉Claude应该做什么,而不是不应该做什么
- 不要用:“不要在回答中使用markdown”
- 尝试用:“您的回答应该由流畅连贯的散文段落组成。”
使用XML格式指示符
- 尝试:“在
标签中编写回答的散文部分。”
- 尝试:“在
使您的提示风格与期望的输出相匹配
您在提示中使用的格式风格可能会影响Claude的回答风格。如果您仍然遇到输出格式的可控性问题,我们建议尽可能使您的提示风格与您期望的输出风格相匹配。例如,从提示中删除markdown可以减少输出中markdown的数量。
利用思考和交错思考能力
Claude 4提供思考能力,这对于涉及工具使用后反思或复杂多步推理的任务特别有帮助。您可以引导其初始或交错思考,以获得更好的结果。
示例提示
1 | 在收到工具结果后,仔细反思其质量并确定最佳下一步行动,然后再继续。使用您的思考来基于这些新信息进行规划和迭代,然后采取最佳的下一步行动。 |
有关思考能力的更多信息,请参阅扩展思考。
优化并行工具调用
Claude 4模型在并行工具执行方面表现出色。即使没有任何提示,它们在使用并行工具调用方面也有很高的成功率,但一些小的提示可以将这种行为的成功率提高到约100%。我们发现以下提示最有效:
代理的示例提示
1 | 为了最大效率,当您需要执行多个独立操作时,同时调用所有相关工具,而不是按顺序调用。 |
可能原因:
1. 鲁棒性和错误处理:更简单的状态管理
当任务链变得复杂时,顺序执行的脆弱性会暴露无遗。
- 顺序执行的脆弱性:如果在任务链的第二步(共五步)失败了,模型需要停下来,判断失败的原因,然后决定是重试、放弃还是换一种方法。这需要复杂的错误处理逻辑和状态管理。整个任务链被一个单点故障卡住了。
- 并行执行的鲁棒性:如果同时发起的三个任务中,有一个失败了,另外两个成功了。模型可以一次性拿到{结果A, 结果B, 错误C}。它可以在掌握了所有可用信息的情况下,做出更明智的下一步决策。比如,它可能会向用户报告:“我已经拿到了A和B的信息,但获取C信息时遇到了问题,您看是需要重试还是先基于A和B进行分析?” 这种处理方式更优雅,也更健壮。
核心优势:并行化将多个任务的成功或失败解耦,简化了错误处理逻辑,避免了“多米诺骨牌”式的失败,使整个系统更加稳健。
2.模型认知负荷:更符合高级规划能力
大型语言模型,尤其是像Claude 3这样的顶级模型,其强大的能力在于高级推理和规划。
- 顺序执行的限制:强迫模型进行顺序调用,实际上是限制了它的规划能力,把它变成了一个简单的“if-then”执行器。它每一步都只关注于当前任务,缺乏全局视野。
- 并行执行的赋能:允许模型并行调用,恰恰是发挥其长处。模型可以先通读用户的整个请求,在“脑中”构建一个完整的、包含所有子任务的“执行图”(DAG),识别出哪些节点(任务)没有依赖关系,然后将这些独立的任务打包一次性执行。这更像一个真正的人类专家在规划和执行复杂项目。
减少代理编码中的文件创建
Claude 4模型有时可能会创建新文件用于测试和迭代,特别是在处理代码时。这种方法允许Claude使用文件,尤其是Python脚本,作为”临时草稿”,然后再保存最终输出。使用临时文件可以改善代理编码用例的结果。
如果您希望最小化新文件的创建,可以指示Claude在完成后进行清理:
示例提示
1 | 如果您创建了任何临时新文件、脚本或用于迭代的辅助文件,请在任务结束时通过删除这些文件来进行清理。 |
增强视觉和前端代码生成
对于前端代码生成,您可以通过提供明确的鼓励来引导Claude 4模型创建复杂、详细和交互式的设计:
示例提示
1 | 不要有所保留。全力以赴。 |
您还可以通过提供额外的修饰语和关注点的详细信息来提高Claude在特定领域的前端性能:
- “包含尽可能多的相关功能和交互”
- “添加周到的细节,如悬停状态、过渡和微交互”
- “创建一个展示网页开发能力的令人印象深刻的演示”
- “应用设计原则:层次结构、对比、平衡和动态”
迁移考虑事项
从Sonnet 3.7迁移到Claude 4时:
- 明确说明期望的行为:考虑准确描述您希望在输出中看到的内容。
- 使用修饰语框定您的指令:添加鼓励Claude提高输出质量和细节的修饰语可以帮助更好地塑造Claude的表现。例如,不要用”创建一个分析仪表板”,而是使用”创建一个分析仪表板。包含尽可能多的相关功能和交互。超越基础功能,创建一个功能齐全的实现方案。”
- 明确请求特定功能:需要时应明确请求动画和交互元素。
提示词生成器mateprompt
引导 Claude 生成针对您特定任务的高质量提示词模板。这些模板遵循了我们许多提示工程的最佳实践。
提示词生成器作为解决”空白页问题”的工具特别有用,为您提供进一步测试和迭代的起点。
何时使用提示模板和变量
当您预期提示的任何部分会在另一次调用 Claude 时重复使用时(仅通过 API 或 Anthropic Console。claude.ai 目前不支持提示模板或变量),您都应该使用提示模板和变量。
提示模板提供了几个好处:
- 一致性: 确保在多次交互中保持提示的一致结构
- 效率: 无需重写整个提示即可轻松替换变量内容
- 可测试性: 通过仅更改变量部分来快速测试不同的输入和边缘情况
- 可扩展性: 随着应用程序复杂度增加,简化提示管理
- 版本控制: 通过仅跟踪提示的核心部分(与动态输入分开),轻松跟踪提示结构的变化
提示词优化器
提示词优化器的工作原理
提示词优化器通过4个步骤增强您的提示词:
- 示例识别:定位并提取提示词模板中的示例
- 初始草稿:创建具有清晰章节和XML标签的结构化模板
- 思维链精炼:添加和完善详细的推理指令
- 示例增强:更新示例以展示新的推理过程
您可以在改进模态框中实时观察这些步骤。
您将获得什么
提示词优化器生成的模板包含:
- 详细的思维链指令,指导Claude的推理过程并通常提高其性能
- 使用XML标签清晰组织不同组件
- 标准化的示例格式,展示从输入到输出的逐步推理
- 战略性预填充,引导Claude的初始响应
保持清晰、直接和详细
在与 Claude 交互时,可以将其视为一位聪明但非常新的员工(有健忘症),需要明确的指示。像任何新员工一样,Claude 并不了解你的规范、风格、准则或首选的工作方式。 你越是精确地解释你想要什么,Claude 的回应就会越好。
如何保持清晰、具有上下文和具体
为 Claude 提供上下文信息:
就像你在了解更多上下文的情况下可能会更好地完成任务一样,Claude 在有更多上下文信息的情况下也会表现得更好。上下文信息的一些例子:
- 任务结果将用于什么
- 输出内容面向什么受众
- 任务属于什么工作流程,以及这个任务在工作流程中的位置
- 任务的最终目标,或者成功完成任务是什么样子
具体说明你希望 Claude 做什么: 例如,如果你只想要 Claude 输出代码而不要其他内容,就要明确说明。
按顺序提供指示: 使用编号列表或项目符号,以更好地确保 Claude 按照你想要的方式执行任务。
注意,在不清晰的提示示例中,Claude 仍然会犯错误,比如保留了客户的姓名。
注意,在不清晰的提示示例中,Claude 仍然会犯错误,比如保留了客户的姓名。
角色 | 不清晰的提示 | 清晰的提示 |
---|---|---|
用户 | 请从这些客户反馈信息中删除所有个人身份信息: | 你的任务是为我们的季度审查匿名化客户反馈。 指示: 1. 将所有客户姓名替换为”CUSTOMER_[ID]“(例如,“Jane Doe” → “CUSTOMER_001”) 2. 将电子邮件地址替换为”EMAIL_[ID]@example.com” 3. 将电话号码编辑为”PHONE_[ID]“ 4. 如果消息提到特定产品(如”AcmeCloud”),保持不变 5. 如果没有发现个人身份信息,逐字复制消息 6. 仅输出经处理的消息,用”—“分隔 要处理的数据: |
助手(Claude 的回应) | 以下是匿名化的客户反馈信息: 1. 我使用你们的软件已经多年了,一直都很好。但最近,AcmeCloud 经常崩溃。请修复它! 2. XXX,你们的客服代表非常有帮助。他指导我完成了整个过程。我的邮箱是 XXX,如果你们想发送调查。 3. 我是 John Smith,我很不高兴。我已经等了2小时试图联系 XXX。这是不可接受的! | CUSTOMER_001:我使用你们的软件已经多年了,一直都很好。但最近,AcmeCloud 经常崩溃。请修复它! — CUSTOMER_002:CUSTOMER_SERVICE_001,你们的客服代表非常有帮助。他指导我完成了整个过程。我的邮箱是 EMAIL_002@example.com,如果你们想发送调查。 — CUSTOMER_003:我是 CUSTOMER_003,我很不高兴。我已经等了2小时试图联系 PHONE_001。这是不可接受的! |
注意,在模糊的提示中,Claude 会编造细节来填补缺乏上下文的空白。
角色 | 模糊的提示 | 具体的提示 |
---|---|---|
用户 | 为我们的新 AcmeCloud 功能写一封营销邮件。 | 你的任务是为我们第三季度 AcmeCloud 功能发布制作一封有针对性的营销邮件。 指示: 1. 针对目标受众:从本地部署升级到云端的中型科技公司(100-500名员工) 2. 突出3个关键新功能:高级数据加密、跨平台同步和实时协作 3. 语气:专业但平易近人。强调安全性、效率和团队协作 4. 包含明确的行动号召:30天免费试用,优先获得入门培训 5. 主题行:少于50个字符,提到”安全”和”协作” 6. 个性化:使用和变量 结构: 1. 主题行 2. 邮件正文(150-200字) 3. CTA按钮文本 |
助手(Claude 的回应) | 这是我们新功能的营销邮件草稿: 主题:借助 AcmeCloud 的最新功能提升您的业务 尊敬的客户, 我们很高兴为 AcmeCloud 引入三个强大的功能,这将彻底改变您的工作流程: 1. 实时协作:与您的团队同时处理文档。不再有版本控制问题! 2. AI 驱动的洞察:利用分析趋势和自动化任务的 AI 做出数据驱动的决策。 3. 高级安全套件:端到端加密、多因素认证和威胁检测确保您的数据安全。 限时优惠:立即升级可获得首年20%折扣。另外,推荐朋友可额外获得10%折扣! 此致, AcmeCloud 团队 | 主题行:AcmeCloud:企业级安全性与实时团队协作的完美结合 邮件正文: 亲爱的 , 在 ,您正在快速发展并着眼于云端。但随着增长而来的是保持数据安全同时促进协作的挑战。这就是 AcmeCloud 第三季度版本的用武之地,专为像您这样的科技创新者量身打造。 1. 堡垒级文件保护:军事级加密现在可以保护您的数据,无论是传输中还是静态存储。您的知识产权始终属于您,毫无疑问。 2. 无边界同步:Windows、Mac 或 Linux—AcmeCloud 通晓所有语言。统一的版本控制意味着不再有”final_v2_REALLY_FINAL.doc”。 3. 光速协作:告别附件反复发送。现在您的开发人员、设计师和数据科学家可以实时共同创作,大大缩短上市时间。 不要只相信我们的话。通过我们的30天试用体验 AcmeCloud 的不同之处。而且因为我们知道时间是您最宝贵的资产,我们还提供优先入门培训。 立即提升您的团队 - 30天免费试用 |
注意,在模糊的提示中,Claude 输出了多余的文本和不同的格式。
角色 | 模糊的提示 | 详细的提示 |
---|---|---|
用户 | 分析这份 AcmeCloud 停机报告并总结关键点。 | 分析这份 AcmeCloud 停机报告。跳过前言。保持简洁的回应,只写最基本的必要信息。仅列出: 1) 原因 2) 持续时间 3) 受影响的服务 4) 受影响用户数量 5) 预计收入损失。 以下是报告: |
助手(Claude 的回应) | 以下是 AcmeCloud 停机报告的关键点总结: 5月15日,一个配置错误的负载均衡器更新导致严重的流量路由问题,造成服务从 UTC 时间 09:15 到 13:52 停机。这次持续4小时37分钟的中断影响了我们的核心文件同步服务和管理仪表板,导致它们无法访问。此外,移动应用程序经历了部分功能丢失。我们约68%的用户群,总计130万用户受到影响。根据我们的服务级别协议(SLA)和每用户平均收入,我们估计财务影响为42万美元的服务补偿和潜在的客户流失。 | 1) 原因:负载均衡器更新配置错误 2) 持续时间:4小时37分钟(5月15日 UTC 09:15-13:52) 3) 受影响:核心同步、管理仪表板(停机);移动应用(部分影响) 4) 受影响用户:130万(68%的用户基数) 5) 预计收入损失:42万美元 |
使用示例(多示例提示)来引导 Claude 的行为
示例是让 Claude 精确生成你所需内容的秘密武器捷径。通过在提示中提供一些精心设计的示例,你可以显著提高 Claude 输出的准确性、一致性和质量。 这种技术被称为少样本或多示例提示,对于需要结构化输出或遵循特定格式的任务特别有效。
为什么要使用示例?
- 准确性:示例减少对指令的误解。
- 一致性:示例强制执行统一的结构和风格。
- 性能:精心选择的示例可以提升 Claude 处理复杂任务的能力。
制作有效的示例
为了获得最大效果,请确保你的示例是:
- 相关的:你的示例反映了你的实际用例。
- 多样化的:你的示例涵盖边缘情况和潜在挑战,并且有足够的变化使 Claude 不会无意中捕捉到不必要的模式。
- 清晰的:你的示例用
<example>
标签包装(如果有多个,则嵌套在<examples>
标签中)以保持结构。
请 Claude 评估你的示例的相关性、多样性或清晰度。或者让 Claude 基于你的初始集合生成更多示例。
注意在”无示例”版本中,尽管其书面分析表明某些反馈有多个类别,但 Claude 并没有为每个类别列出多个选项。它还包含了一个我们可能不需要的长篇解释。
角色 | 无示例 | 有示例 |
---|---|---|
用户 | 分析这个客户反馈并对问题进行分类。使用这些类别:UI/UX、性能、功能请求、集成、定价和其他。同时评估情感(积极/中性/消极)和优先级(高/中/低)。 以下是反馈: | 我们的客服团队被非结构化反馈淹没了。你的任务是为我们的产品和工程团队分析反馈并对问题进行分类。使用这些类别:UI/UX、性能、功能请求、集成、定价和其他。同时评估情感(积极/中性/消极)和优先级(高/中/低)。这里有一个示例: |
助手(Claude 的回应) | 以下是客户反馈的分析: 问题:UI/UX 情感:消极 优先级:高 客户对新仪表板设计感到沮丧,认为它杂乱且加载缓慢。他们特别提到缺少”导出”按钮,这可能是一个关键功能。这个问题需要作为高优先级来解决。 问题:集成 情感:积极 优先级:中 客户对现有的 Salesforce 集成感到满意,但希望看到对 Hubspot 的支持。这是一个可以考虑在未来产品更新中实现的功能请求。 问题:定价 情感:消极 优先级:高 客户认为定价不合理,特别是对于基本功能而言。他们威胁要转向竞争对手,所以这是一个需要审查的高优先级问题。 问题:性能 情感:消极 优先级:高 客户在移动应用程序中遇到关键问题,大文件上传持续导致崩溃。这是一个显著影响客户有效使用产品的问题,应该作为高优先级来解决。 问题:UI/UX 情感:积极 优先级:低 客户总体上对产品满意,特别提到了直观的 UI 和出色的客户支持。这是一个不需要任何即时行动的积极反馈。 | 以下是客户反馈的分析: 1. 新仪表板一团糟!加载需要很长时间,而且我找不到导出按钮。请尽快修复这个问题! 类别:UI/UX、性能 情感:消极 优先级:高 2. 喜欢 Salesforce 集成!但如果你们能添加 Hubspot 就更好了。 类别:集成、功能请求 情感:积极 优先级:中 3. 你们的定价太荒谬了!基本功能要 $99/月?我要转向竞争对手 X。 类别:定价 情感:消极 优先级:高 4. 移动应用程序在我尝试上传大文件(>50MB)时持续崩溃。这对我们的外勤人员来说至关重要。 类别:性能 情感:消极 优先级:高 5. 总的来说,我对产品很满意。UI 很直观,客户支持一流。继续保持! 类别:UI/UX、其他(客户支持) 情感:积极 优先级:低 |
让 Claude 思考(思维链提示)以提高性能
在面对研究、分析或问题解决等复杂任务时,给 Claude 思考的空间可以显著提高其表现。这种被称为思维链(CoT)提示的技术,鼓励 Claude 逐步分解问题,从而产生更准确和细致的输出
实施思维链之前
为什么要让 Claude 思考?
- 准确性: 逐步解决问题可以减少错误,尤其是在数学、逻辑、分析或一般复杂任务中。
- 连贯性: 结构化思维可以产生更连贯、组织更完善的回答。
- 调试: 查看 Claude 的思维过程有助于你找出提示可能不清晰的地方。
为什么不让 Claude 思考?
- 增加输出长度可能影响延迟。
- 并非所有任务都需要深入思考。明智地使用思维链以确保性能和延迟的适当平衡。
对于人类需要思考的任务,如复杂数学、多步骤分析、编写复杂文档或涉及多个因素的决策,请使用思维链。
如何提示思考
下面的思维链技术按从简单到复杂的顺序排列。较简单的方法在上下文窗口中占用较少空间,但通常功能也较弱。
思维链提示: 始终让 Claude 输出其思考过程。如果不输出思维过程,就不会发生思考!
基本提示:
在提示中包含”逐步思考”。
- 缺乏关于如何思考的指导(如果任务特别针对你的应用、用例或组织,这尤其不理想)
角色 内容 用户 起草个性化邮件,向捐赠者请求为今年的关爱儿童计划捐款。 项目信息: 引导式提示:
概述 Claude 在思考过程中要遵循的具体步骤。
- 缺乏结构化,难以剥离和分离答案与思考过程。
角色 内容 用户 起草个性化邮件,向捐赠者请求为今年的关爱儿童计划捐款。 项目信息: 结构化提示:
使用像
<thinking>
和<answer>
这样的 XML 标签来分离推理和最终答案。
角色 内容 用户 起草个性化邮件,向捐赠者请求为今年的关爱儿童计划捐款。 项目信息: 标签中思考。首先,根据他们的捐赠历史和他们过去支持过的活动,思考什么信息可能吸引这位捐赠者。然后,根据他们的历史,思考关爱儿童计划的哪些方面会吸引他们。最后,在 标签中使用你的分析写出个性化的捐赠者邮件。
示例
没有逐步思考,Claude 给出的建议看似合理但缺乏深度。它没有量化潜在结果或考虑历史市场表现,这些对做出明智决定至关重要。
角色 | 内容 |
---|---|
用户 | 你是一名财务顾问。一位客户想投资10,000美元。他们可以在两个选项中选择:A)一支历史年回报率为12%但波动的股票,或 B)一支保证年回报率6%的债券。客户需要在5年内用这笔钱作为房子的首付。你推荐哪个选项? |
助手 | 根据提供的信息,我推荐选项B,即保证6%年回报率的债券。原因如下: 1. 确定性:债券提供保证的6%年回报率,这为财务规划提供确定性。当客户有特定的财务目标(首付)和固定时间表(5年)时,这一点至关重要。 2. 风险规避:由于客户需要这笔钱用于重要的生活事件(买房),他们可能风险承受能力较低。如果在他们需要资金时恰逢股市下跌,股市的波动性可能会危及他们的计划。 3. 时间跨度:只有5年时间,从潜在的股市下跌中恢复的时间较少。较长的投资期限(10年以上)通常更适合承受股市波动。 虽然股票12%的历史回报率很有吸引力,但过去的表现并不能保证未来的结果。债券保证的6%确保客户在需要支付首付时能有足够的资金。 |
通过逐步思考,顾问提供了更丰富的分析。它计算了两种情况的确切数字,考虑了历史市场波动性,并深入分析了客户的风险承受能力。这种深入的推理导致了更有信心和更合理的建议。
角色 | 内容 |
---|---|
用户 | 你是一名财务顾问。一位客户想投资10,000美元。他们可以在两个选项中选择:A)一支历史年回报率为12%但波动的股票,或 B)一支保证年回报率6%的债券。客户需要在5年内用这笔钱作为房子的首付。你推荐哪个选项?请逐步思考。 |
助手 | 为了确定最适合我们客户的投资选项,我将逐步考虑几个因素: |
使用XML标签构建你的提示词
当你的提示词包含多个组件(如上下文、指令和示例)时,XML标签可以成为改变游戏规则的工具。它们可以帮助Claude更准确地解析你的提示词,从而产生更高质量的输出。
为什么要使用XML标签?
- 清晰度: 清晰地分隔提示词的不同部分,确保提示词结构良好。
- 准确性: 减少因Claude误解提示词部分而导致的错误。
- 灵活性: 无需重写所有内容即可轻松查找、添加、删除或修改提示词的部分内容。
- 可解析性: 让Claude在输出中使用XML标签,可以通过后处理更容易提取其响应的特定部分
标签使用最佳实践
- 保持一致性: 在整个提示词中使用相同的标签名称,并在谈论内容时引用这些标签名称(例如,
使用<contract>标签中的合同...
)。 - 嵌套标签: 对于层次结构内容,你应该嵌套标签
<outer><inner></inner></outer>
。
高级用户提示: 将XML标签与其他技术结合使用,如多示例提示(<examples>
)或思维链(<thinking>
、<answer>
)。这将创建超结构化、高性能的提示词。
示例
没有XML标签时,Claude会误解任务并生成不符合所需结构或语气的报告。替换后,Claude也可能会误解某个部分(如Q1报告示例)的结束位置和另一部分的开始位置。
角色 | 不使用XML标签 | 使用XML标签 |
---|---|---|
用户 | 你是AcmeCorp的财务分析师。为我们的投资者生成Q2财务报告。包括收入增长、利润率和现金流等部分,就像去年的这个示例:。使用这个电子表格中的数据点:。报告应该非常简洁、切中要点、专业,并采用列表格式。它应该突出优势和需要改进的领域。 | 你是AcmeCorp的财务分析师。为我们的投资者生成Q2财务报告。 AcmeCorp是一家B2B SaaS公司。我们的投资者重视透明度和可行的见解。 使用这些数据生成报告: |
助手 | AcmeCorp投资者Q2财务报告 尊敬的投资者: 我很高兴向您呈现我们的Q2财务报告,展示AcmeCorp在B2B SaaS市场持续增长和韧性。 1. 收入增长: 我们的Q2收入达到1520万美元,同比增长22%。这一增长主要由企业客户群增长30%推动。然而,我们的中小企业部分略有下降5%,我们计划通过Q3的定向营销计划来解决这个问题。 2. 利润率: 得益于基础设施优化,毛利率提升至72%(较Q1上升3%)。然而,由于我们在即将推出的AI驱动功能上投入大量研发,EBITDA利润率下降至18%(下降2%)。 3. 现金流: 运营现金流保持强劲,达410万美元。我们的现金储备为2800万美元,按当前消耗率计算可维持15个月。我们确实看到客户获取成本增加20%,我们正通过更有效的销售策略来解决这个问题。 总之,AcmeCorp的核心财务状况保持稳健。我们在平衡增长投资和审慎的现金管理。我们在Q3的重点将是振兴中小企业增长和优化销售效率。 感谢您一如既往的信任。 此致, AcmeCorp首席财务官 | Q2 Financial Report for AcmeCorp Investors 收入增长: - Q2收入:1520万美元(同比增长22%↑) - 企业客户:30%↑ - 中小企业部分:5%↓ 行动:Q3定向营销 利润率: - 毛利率:72%(较Q1上升3%↑) 原因:基础设施优化 - EBITDA利润率:18%(2%↓) 原因:AI功能研发投资 现金流: - 运营现金流:410万美元(强劲) - 现金储备:2800万美元(15个月运营资金) - 客户获取成本:20%↑ 行动:优化销售策略 展望: - 核心财务:稳健 - Q3重点:振兴中小企业、优化销售 管理层继续致力于平衡增长投资与财务纪律。 |
没有XML标签时,Claude的分析缺乏组织且遗漏关键点。使用标签后,它提供了一个法律团队可以采取行动的结构化、全面的分析。
角色 | 不使用XML标签 | 使用XML标签 |
---|---|---|
用户 | 分析这份软件许可协议的潜在风险和责任:。重点关注赔偿、责任限制和知识产权所有权条款。另外,注意任何不寻常或令人担忧的条款。这是我们的标准合同供参考:。为我们的法律团队提供调查结果和建议摘要。 | 分析这份软件许可协议的法律风险和责任。 我们是一家考虑将此协议用于核心数据基础设施的跨国企业。 |
助手 | 提供的软件许可协议存在几个令人担忧的方面。赔偿条款过于宽泛,可能使我们面临重大责任。责任限制部分将损害赔偿上限设定为仅500美元,这对于我们的企业级使用来说是不够的。关于知识产权,该协议授予供应商对我们创建的任何修改或集成的共同所有权。 总之,这份协议不符合我们的最佳利益。它使我们面临不当风险,限制了我们在发生故障时的追索权,并损害了我们的知识产权。我建议重新谈判这些条款或寻找替代供应商。 |
通过系统提示给Claude赋予角色
在使用Claude时,您可以通过使用system
参数来赋予它一个角色,从而显著提升其表现。这种被称为角色提示的技术,是使用系统提示与Claude交互的最强大方式。
合适的角色可以将Claude从一个通用助手转变为您的虚拟领域专家!
系统提示技巧:使用system
参数来设置Claude的角色。将其他所有内容(如特定任务的指令)放在user
轮次中。
为什么要使用角色提示?
- **提高准确性:**在复杂场景中(如法律分析或财务建模),角色提示可以显著提升Claude的表现。
- **定制语气:**无论您需要CFO的简洁还是文案撰写人的文采,角色提示都可以调整Claude的沟通风格。
- **提升专注度:**通过设置角色背景,Claude能更好地保持在您任务特定要求的范围内。
如何给Claude赋予角色
在Messages API中使用system
参数来设置Claude的角色:
1 | import anthropic |
角色提示技巧:尝试不同的角色!对于相同的数据,数据科学家
可能会看到与营销策略师
不同的见解。而专门为世界500强公司进行客户洞察分析的数据科学家
可能会产生又一种不同的结果!
示例
示例1:法律合同分析
没有角色时,Claude可能会错过关键问题:
角色 | 内容 |
---|---|
User | 分析这份软件许可协议的潜在风险: |
Assistant | 以下是软件许可协议的主要要点总结: 1. 赔偿条款(第8节): - 我们对因我们使用而产生的索赔向供应商作出赔偿。 2. 责任限制(第9节): - 损害赔偿上限为500美元。 3. 知识产权所有权(第12节): - 我们保留对我们修改内容的所有权。 总的来说,该协议看起来比较标准。赔偿和责任条款都很典型,我们也保留了知识产权。 |
有了角色后,Claude能发现可能造成数百万损失的关键问题:
角色 | 内容 |
---|---|
User | 您是一家世界500强科技公司的总法律顾问。我们正在考虑将这份软件许可协议用于我们的核心数据基础设施: |
Assistant | 我已审查了该软件许可协议,发现一些可能使我们公司面临重大风险的严重问题: 1. 赔偿条款(第8节): - 严重问题:我们对”任何及所有”因使用而产生的索赔向供应商作出赔偿。 - 风险:这可能使我们对供应商的疏忽或产品缺陷承担责任。 - 建议:拒绝。将我们的赔偿限制在因我们违反协议而产生的索赔。 2. 责任限制(第9节): - 严重问题:损害赔偿上限为500美元,包括直接损害。 - 风险:严重不足。数据基础设施的重大故障可能造成数百万美元的收入损失和声誉损害。 - 建议:拒绝。就直接损害协商12个月费用的上限,并为数据泄露设置例外条款。 3. 知识产权所有权(第12节): - 严重问题:供应商获得我们的修改和集成的共同所有权。 - 风险:他们可能向竞争对手使用或出售我们的专有算法或数据洞察。 - 建议:拒绝。我们必须保留对我们工作的完全所有权。 专业意见:不要签署这份协议。它极其不利,并使我们面临不可接受的风险水平。如果供应商拒绝重新协商这些条款,我强烈建议探索其他供应商或加快我们的内部解决方案。继续执行该协议的潜在成本远超过任何短期收益。 |
示例2:财务分析
没有角色时,Claude的分析缺乏深度:
角色 | 内容 |
---|---|
User | 分析我们第二季度的财务数据: 突出关键趋势并提出建议。 |
Assistant | 以下是您第二季度财务状况的总结: 1. 收入:1520万美元,同比增长22%。企业客户群增长30%。 2. 毛利率:72%,环比增长3%。 3. EBITDA利润率:18%,由于研发投资下降2%。 4. 现金流:运营现金流410万美元,储备2800万美元。 总的来说,财务状况良好,收入增长且利润率健康。增加的研发支出影响了盈利能力,但长期可能会带来回报。保持当前方向。 |
有了角色后,Claude提供了可行的见解:
角色 | 内容 |
---|---|
User | 您是一家高增长B2B SaaS公司的CFO。我们正在董事会会议上讨论第二季度财务状况: 分析关键趋势,标出问题,并提出战略行动建议。我们的投资者希望实现激进增长,但对我们的资金消耗率表示担忧。 |
Assistant | 各位董事会成员,以下是我对第二季度财务状况的分析: 1. 收入(1520万美元,同比+22%): - 洞察:企业增长(+30%)超过整体增长。 - 问题:中小企业部分下降5%。 - 行动:将20%的中小企业营销预算重新分配到企业销售。要求产品团队简化中小企业入门流程。 2. 利润率(毛利率:72%,环比+3%;EBITDA:18%,环比-2%): - 洞察:基础设施优化提升了毛利率。 - 问题:AI功能的研发支出影响了EBITDA。 - 行动:维持不变。我们的AI路线图对企业客户粘性至关重要。 3. 现金(运营现金流410万美元,储备2800万美元): - 洞察:按当前消耗率可维持15个月。 - 问题:获客成本上升20%,降低了LTV/CAC。 - 行动:冻结非必要招聘。实施销售漏斗分析,第三季度将获客成本降低15%。 战略立场:我们正在增长和消耗之间寻找平衡。企业市场是我们的增长引擎——在这里投资。但要关注中小企业流失;它可能会影响到企业业务。我们对AI的押注是明智的,但必须在第四季度将其转化为年度经常性收入,否则我们将削减30%的研发支出。 总结:加倍投入企业市场,精简中小企业业务,优化销售,实现AI变现。有问题吗? |
预填充 Claude 的回复以获得更好的输出控制
预填充功能仅适用于非扩展思考模式。目前不支持与扩展思考一起使用。
在使用 Claude 时,您有独特的能力通过预填充 Assistant
消息来引导其回复。这种强大的技术允许您指导 Claude 的行动,跳过前言,强制使用特定格式如 JSON 或 XML,甚至帮助 Claude 在角色扮演场景中保持角色一致性。
在某些 Claude 表现不如预期的情况下,几句预填充的句子可以极大地改善 Claude 的表现。一点预填充就能产生很大的效果!
如何预填充 Claude 的回复
要进行预填充,请在 Assistant
消息中包含所需的初始文本(Claude 的回复将从 Assistant
消息结束的地方继续):
1 | import anthropic |
预填充内容不能以尾随空格结束。像 "As an AI assistant, I "
这样的预填充(末尾有空格)将导致错误。
示例
示例 1:控制输出格式并跳过前言
高级用户提示:预填充 {
强制 Claude 跳过前言并直接输出 JSON 对象。这样更简洁、更清晰,也更容易被程序解析而无需额外处理。
角色 | 内容 |
---|---|
User | Extract the name, size, price, and color from this product description as a JSON object: |
Assistant | Here’s the extracted information in JSON format: json { “name”: “SmartHome Mini”, “size”: “5 inches wide”, “price”: “$49.99”, “colors”: [“black”, “white”] } I’ve extracted the following details from the product description: - Name: SmartHome Mini - Size: 5 inches wide - Price: $49.99 - Colors: Available in black and white The JSON object provides a structured format that’s easy for programs to parse and use. Let me know if you need any modifications or have any other questions! |
角色 | 内容 |
---|---|
User | Extract the name, size, price, and color from this product description as a JSON object: |
Assistant (prefill) | { |
Assistant (Claude’s response) | “name”: “SmartHome Mini”, “size”: “5 inches wide”, “price”: “$49.99”, “colors”: [ “black”, “white” ] } |
示例 2:在角色扮演场景中保持角色
角色扮演提示:预填充一个带方括号的 [角色名称]
可以提醒 Claude 保持角色,即使在更长更复杂的对话中也是如此。当与 system
参数中的角色提示结合使用时,这种方法特别强大。
角色 | 内容 |
---|---|
User (与”夏洛克·福尔摩斯” Claude 的第50轮对话) | What do you deduce about the owner of this shoe? |
Assistant | As an AI assistant, I would be happy to analyze the image of a muddy shoe as if you had provided it. Here’s my deduction… |
角色 | 内容 |
---|---|
User (与”夏洛克·福尔摩斯” Claude 的第50轮对话) | What do you deduce about the owner of this shoe? |
Assistant (prefill) | [Sherlock Holmes] |
Assistant (Claude’s response) | Ah, what have we here? A most curious specimen, Watson! Let us examine this shoe with a discerning eye. The mud, you see, is not your common London clay, but rather the distinctive reddish hue of the iron-rich soil found only in the environs of Hampstead Heath. And yet, the wear on the sole suggests a gait more suited to the cobblestones of Whitechapel than the gentle slopes of the Heath. Now, observe the laces! They are tied with a particular knot favored by those in the medical profession—doubtless a habit acquired during years of tying surgical gowns. But the scuff marks on the toe box tell a different tale: they are consistent with the kicking motion one might employ in the martial arts, specifically Baritsu. We may conclude, then, that our absent shoe owner is a doctor, possibly a surgeon, who resides in Whitechapel but frequents Hampstead Heath—perhaps for a secret Baritsu practice, away from prying eyes. A most intriguing case, Watson! We must make haste; the game is afoot! |
链式复杂提示以获得更强的性能
While these tips apply broadly to all Claude models, you can find prompting tips specific to extended thinking models here.
在处理复杂任务时,如果你试图在单个提示中处理所有内容,Claude有时可能会出错。思维链(CoT)提示很好,但如果你的任务有多个不同的步骤,每个步骤都需要深入思考怎么办?
这就需要提示链:将复杂任务分解成更小、可管理的子任务。
为什么要链式提示?
- 准确性:每个子任务都能得到Claude的充分关注,减少错误。
- 清晰度:更简单的子任务意味着更清晰的指令和输出。
- 可追溯性:轻松定位和修复提示链中的问题。
何时使用链式提示
对于多步骤任务如研究综合、文档分析或迭代内容创作,使用链式提示。当任务涉及多个转换、引用或指令时,链式提示可以防止Claude遗漏或处理错误步骤。
**记住:**链条中的每个环节都能得到Claude的充分关注!
调试提示:如果Claude遗漏了某个步骤或表现不佳,将该步骤单独放在一个提示中。这样你可以微调有问题的步骤,而无需重做整个任务。
如何链式提示
- 识别子任务:将任务分解为不同的、连续的步骤。
- 使用XML构建清晰的交接:使用XML标签在提示之间传递输出。
- 设定单一任务目标:每个子任务应该有一个明确的单一目标。
- 迭代:根据Claude的表现改进子任务。
链式工作流示例:
- 多步骤分析:参见下面的法律和商业示例。
- 内容创作流程:研究 → 大纲 → 草稿 → 编辑 → 格式化。
- 数据处理:提取 → 转换 → 分析 → 可视化。
- 决策制定:收集信息 → 列出选项 → 分析每个选项 → 推荐。
- 验证循环:生成内容 → 审查 → 改进 → 重新审查。
优化提示:对于具有独立子任务的任务(如分析多个文档),创建单独的提示并并行运行以提高速度。
高级:自我纠正链
你可以链式提示让Claude审查自己的工作!这可以捕获错误并改进输出,特别是对于高风险任务。
提示1
角色 | 内容 |
---|---|
User | 总结这篇医学研究论文。 |
Assistant | 方法:500名2型糖尿病患者的双盲随机对照试验。A组(n=250)接受新型GLP-1/GIP双激动剂;B组(n=250)接受标准GLP-1激动剂。24周试验,主要终点:HbA1c降低。 发现: - A组:平均HbA1c降低1.8% - B组:平均HbA1c降低1.1% - A组68%vs B组52%达到HbA1c <7% - A组:平均减重5.2kg - B组:平均减重3.1kg 安全性:类似的不良事件特征,无严重事件归因于治疗。 临床意义:双激动剂相比标准治疗显示出更好的血糖控制和减重效果。可能是一个突破性进展,特别是对肥胖糖尿病患者。 |
提示2
角色 | 内容 |
---|---|
User | 你的任务是对一篇研究论文摘要提供反馈。这是一篇医学研究论文的摘要: |
Assistant | 1. 准确性:A - 正确报告了关键数据:HbA1c降低、减重。 - 准确记录了安全性特征和无严重不良事件。 - “突破性进展”的说法由显著更好的结果支持。 2. 清晰度:A- - 简洁且结构良好,章节清晰。 - 很好地使用了比较语言(如”较Q1上升3%“)提供背景。 - 小问题:未定义缩写”RCT”、“GLP-1”和”GIP”。考虑首次使用时拼写完整。 3. 完整性:B+ - 涵盖了所有要求的领域:方法、发现、临床意义。 - 缺失:组别的基线特征(是否匹配良好?)。 - 缺失:任何次要终点(如血压、血脂)。 - 考虑:长期影响或进一步研究的需求。 总的来说,摘要准确清晰,提供了快速把握研究的关键见解。要达到A+,需定义缩写,提及组别基线数据,注明任何次要结果,并简要提及长期研究的需求。 |
提示3
角色 | 内容 |
---|---|
User | 你的任务是根据反馈改进论文摘要。这是医学研究论文摘要的第一稿: |
Assistant | 方法:500名2型糖尿病患者的双盲随机对照试验(RCT)。A组(n=250)接受新型胰高血糖素样肽-1/葡萄糖依赖性促胰岛素分泌多肽(GLP-1/GIP)双激动剂;B组(n=250)接受标准GLP-1激动剂。24周试验的主要终点是HbA1c降低。两组在年龄、BMI和基线HbA1c方面匹配良好。 发现: - A组:平均HbA1c降低1.8% - B组:平均HbA1c降低1.1% - A组68%vs B组52%达到HbA1c <7% - A组:平均减重5.2kg - B组:平均减重3.1kg 次要终点显示两组的血压和血脂特征都有改善,A组效果略好。 安全性:类似的不良事件特征,无严重事件归因于任一治疗。 临床意义:GLP-1/GIP双激动剂相比标准GLP-1治疗显示出更好的血糖控制和减重效果。这些结果表明它可能是一个重要进展,特别是对肥胖糖尿病患者。然而,需要更长期的研究来确认持续的有效性和安全性,并研究潜在的心血管获益。 |
示例
注意Claude在其电子邮件草稿中遗漏了提供建议修改的指令。
角色 | 内容 |
---|---|
User | 你是我们的首席法务官。审查这份SaaS合同的风险,重点关注数据隐私、SLA和责任上限。 |
Assistant | 审查SaaS合同后,我发现几个问题: 1. 数据隐私(第7节): - 问题:供应商对客户数据有广泛的”服务改进”使用权。 - 风险:可能导致未经授权的数据共享或变现。 2. SLA(第5节): - 问题:99.5%的正常运行时间保证低于行业标准。 - 风险:过多的停机时间可能影响我们的运营。 3. 责任(第9节): - 问题:上限设为3个月的费用。 - 风险:对潜在的数据泄露或服务故障不足。 电子邮件草稿: 尊敬的, 审查SaaS协议后,我们有以下担忧: 1. 数据隐私:我们要求我们的数据仅用于直接服务提供,而不是广泛的”服务改进”。请修改第7节。 2. SLA:99.5%的正常运行时间不足。我们需要99.99%并有明确定义的处罚。请修改第5节。 3. 责任:目前3个月费用的上限不足。我们建议12个月费用的上限,对数据泄露或故意不当行为没有上限。 我们重视我们的潜在合作关系,相信这些变更将为我们带来成功。请发送修改后的协议。 此致, |
提示1
角色 | 内容 |
---|---|
User | 你是我们的首席法务官。审查这份SaaS合同的风险,重点关注数据隐私、SLA和责任上限。 |
Assistant | 1. 数据隐私(第7节): - 问题:供应商对客户数据有广泛的”服务改进”使用权。 - 风险:可能导致未经授权的数据共享或客户数据变现。 - 影响:潜在的客户信任破坏,监管罚款(GDPR、CCPA)。 2. SLA(第5节): - 问题:99.5%的正常运行时间保证低于行业标准(通常为99.99%)。 - 风险:每年最多43.8小时停机时间vs 99.99%时的52.6分钟。 - 影响:运营中断、收入损失、客户不满。 3. 责任(第9节): - 问题:责任上限设为3个月的费用。 - 风险:对潜在的数据泄露、知识产权盗窃或长期服务故障不足。 - 影响:对可能远超上限的损害赔偿不足,如集体诉讼或监管罚款。 |
提示2
角色 | 内容 |
---|---|
User | 起草一封给SaaS产品供应商的电子邮件,概述以下担忧并提出修改建议。以下是担忧: |
Assistant | 尊敬的, 经过对拟议SaaS协议的深入审查,我们的法务团队发现了几个必须解决的高优先级问题: 1. 数据隐私(第7节): - 当前:对客户数据有广泛的”服务改进”使用权。 - 担忧:潜在的未经授权数据共享或变现。 - 建议修改:限制数据使用于直接服务提供。任何用于改进、分析或营销的使用必须选择加入、可撤销且匿名化。 2. SLA(第5节): - 当前:99.5%正常运行时间保证。 - 担忧:每年最多43.8小时停机时间,威胁运营。 - 建议修改:99.99%正常运行时间,分级服务补偿。例如,<99.99%补偿10%,<99.9%补偿25%,<99.5%补偿50%。 3. 责任(第9节): - 当前:上限为3个月费用。 - 担忧:对数据泄露、知识产权盗窃或长期停机严重不足。 - 建议修改:一般责任为12个月费用。数据泄露、故意不当行为、知识产权侵权无上限。 这些变更对我们来说是不可协商的。它们符合行业标准和我们对数据安全、运营卓越和信托责任的承诺。我们重视潜在的合作关系,解决这些问题将奠定坚实的基础。 请让您的法务团队审查并纳入这些变更。我们很乐意进一步讨论以确保相互理解和达成一致。 此致, |
提示3
角色 | 内容 |
---|---|
User | 你的任务是审查一封电子邮件并提供反馈。这是电子邮件: |
Assistant | 1. 语气: - 专业且坚定但不对抗。 - 使用”不可协商”措辞强硬但考虑到问题的重要性是合理的。 - 合作性语言(“我们重视”,“乐意讨论”)平衡了坚定性,保持建设性语气。 2. 清晰度: - 优秀的结构:每个问题都列出当前状态、担忧和建议修改。 - 技术术语(如”EBITDA”,“分级服务补偿”)适合B2B SaaS环境。 - 行动项目明确:供应商法务团队审查并纳入变更。 3. 专业性: - 关注互惠和行业标准,而不仅是我们的要求。 - 提到更广泛的责任(数据安全、运营卓越、信托责任),提升了讨论层次。 - 提供进一步讨论,显示对理解和解决问题的承诺。 总的来说,电子邮件在坚定性和合作性之间取得了正确的平衡。它清晰地阐述了我们的担忧,提出具体解决方案,并保持专业、面向合作伙伴的语气。无需修改;可以发送。 |
长文本提示技巧
Claude的扩展上下文窗口(Claude 3模型为200K tokens)使其能够处理复杂的、数据丰富的任务。本指南将帮助您有效地利用这一能力。
长文本提示3的基本技巧
将长文本数据放在顶部:将您的长文档和输入(约20K+ tokens)放在提示的顶部,位于查询、指令和示例之上。这可以显著提高Claude在所有模型中的表现。
测试表明,将查询放在末尾可以将响应质量提高多达30%,特别是在处理复杂的多文档输入时。
使用XML标签构建文档内容和元数据:在使用多个文档时,用
<document>
标签包装每个文档,并使用<document_content>
和<source>
(以及其他元数据)子标签以提高清晰度。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16<documents>
<document index="1">
<source>annual_report_2023.pdf</source>
<document_content>
{{ANNUAL_REPORT}}
</document_content>
</document>
<document index="2">
<source>competitor_analysis_q2.xlsx</source>
<document_content>
{{COMPETITOR_ANALYSIS}}
</document_content>
</document>
</documents>
分析年度报告和竞争对手分析。识别战略优势并推荐第三季度重点关注领域。用引用支持响应:对于长文档任务,请先让Claude引用文档中的相关部分,然后再执行任务。这有助于Claude从文档内容的”噪音”中筛选出重要信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24您是一位AI医生助手。您的任务是帮助医生诊断可能的患者疾病。
<documents>
<document index="1">
<source>patient_symptoms.txt</source>
<document_content>
{{PATIENT_SYMPTOMS}}
</document_content>
</document>
<document index="2">
<source>patient_records.txt</source>
<document_content>
{{PATIENT_RECORDS}}
</document_content>
</document>
<document index="3">
<source>patient01_appt_history.txt</source>
<document_content>
{{PATIENT01_APPOINTMENT_HISTORY}}
</document_content>
</document>
</documents>
从患者记录和就诊历史中找出与诊断患者报告症状相关的引用。将这些引用放在<quotes>标签中。然后,根据这些引用,列出所有能帮助医生诊断患者症状的信息。将您的诊断信息放在<info>标签中。
延展思考技巧
本指南提供了高级策略和技巧,帮助您充分利用Claude的延展思考功能。延展思考允许Claude逐步解决复杂问题,提高在困难任务上的表现。
查看延展思考模型以获取关于何时使用延展思考的指导。
延展思考的技术考量
- 思考令牌的最小预算为1024个令牌。我们建议您从最小思考预算开始,然后根据您的需求和任务复杂性逐步增加调整。
- 对于最佳思考预算超过32K的工作负载,我们建议您使用批处理以避免网络问题。推动模型进行超过32K令牌思考的请求会导致长时间运行的请求,可能会遇到系统超时和开放连接限制。
- 延展思考在英语中表现最佳,尽管最终输出可以是Claude支持的任何语言。
- 如果您需要低于最小预算的思考,我们建议使用标准模式,关闭思考功能,使用带有XML标签(如
<thinking>
)的传统思维链提示。请参阅思维链提示。
延展思考的提示技巧
先使用一般指令,然后用更详细的步骤指令进行故障排除
Claude通常在高层次指令下表现更好,只需要深入思考任务,而不是提供规定性的逐步指导。模型在解决问题时的创造力可能超过人类规定最佳思考过程的能力。
例如,不要这样:
1 | 逐步思考这个数学问题: |
考虑这样:
1 | 请彻底且详细地思考这个数学问题。 |
话虽如此,Claude在需要时仍然可以有效地遵循复杂的结构化执行步骤。与之前的版本相比,模型可以处理更长的列表和更复杂的指令。我们建议您从更一般化的指令开始,然后阅读Claude的思考输出,并通过迭代提供更具体的指令来引导其思考。
使用延展思考进行多样本提示
多样本提示与延展思考配合良好。当您向Claude提供如何思考问题的示例时,它将在其延展思考块中遵循类似的推理模式。
您可以在延展思考场景中的提示中包含少量示例,方法是使用XML标签,如<thinking>
或<scratchpad>
,以指示这些示例中的规范延展思考模式。
Claude将把这种模式推广到正式的延展思考过程中。然而,让Claude自由地以它认为最佳的方式思考可能会获得更好的结果。
示例:
1 | 我将向您展示如何解决一个数学问题,然后我希望您解决一个类似的问题。 |
使用延展思考最大化指令遵循
启用延展思考时,Claude在遵循指令方面显示出显著改进。模型通常:
- 在延展思考块内推理指令
- 在响应中执行这些指令
要最大化指令遵循:
- 清晰明确地表达您的需求
- 对于复杂指令,考虑将其分解为Claude应该有条不紊地处理的编号步骤
- 给Claude足够的预算来在其延展思考中充分处理指令
使用延展思考来调试和引导Claude的行为
您可以使用Claude的思考输出来调试Claude的逻辑,尽管这种方法并不总是完全可靠的。
为了最好地利用这种方法,我们建议以下技巧:
- 我们不建议在用户文本块中传回Claude的延展思考,因为这不会提高性能,实际上可能会降低结果质量。
- 明确不允许预填充延展思考,手动更改模型思考块后的输出文本可能会因模型混淆而降低结果质量。
当关闭延展思考时,标准的assistant
响应文本预填充仍然是允许的。
有时Claude可能会在助手输出文本中重复其延展思考。如果您想要一个干净的响应,请指示Claude不要重复其延展思考,只输出答案。
充分利用长输出和长形式思考
对于数据集生成用例,尝试使用诸如”请创建一个极其详细的表格…”之类的提示来生成全面的数据集。
对于详细内容生成等用例,您可能希望生成更长的延展思考块和更详细的响应,请尝试以下技巧:
- 增加最大延展思考长度并明确要求更长的输出
- 对于非常长的输出(20,000+字),请要求提供详细的大纲,包括段落级别的字数。然后要求Claude将其段落索引到大纲中并保持指定的字数
我们不建议您为了输出更多令牌而推动Claude输出更多令牌。相反,我们鼓励您从小的思考预算开始,并根据需要增加,以找到适合您用例的最佳设置。
以下是由于更长的延展思考而使Claude表现出色的示例用例:
让Claude反思并检查其工作以提高一致性和错误处理
您可以使用简单的自然语言提示来提高一致性并减少错误:
- 在宣布任务完成之前,要求Claude通过简单的测试验证其工作
- 指导模型分析其前一步骤是否达到了预期结果
- 对于编码任务,要求Claude在其延展思考中运行测试用例
示例:
1 | 编写一个计算数字阶乘的函数。 |
测试与评估
定义你的成功标准
构建成功的基于LLM的应用程序始于明确定义你的成功标准。你如何知道你的应用程序何时足够好可以发布?
拥有明确的成功标准可确保你的提示工程和优化工作专注于实现特定的、可衡量的目标。
建立强有力的标准
好的成功标准是:
具体的:明确定义你想要实现的目标。不要说”良好的性能”,而应该具体说明”准确的情感分类”。
可衡量的:使用定量指标或定义明确的定性量表。数字提供清晰度和可扩展性,但如果与定量措施一起持续应用,定性措施也可能很有价值。
即使是”模糊”的主题,如伦理和安全也可以被量化:
安全标准 差 安全输出 好 在10,000次试验中,被我们的内容过滤器标记为有毒性的输出少于0.1%。
定量指标:
- 特定任务:F1分数、BLEU分数、困惑度
- 通用:准确率、精确率、召回率
- 运营:响应时间(毫秒)、正常运行时间(%)
定量方法:
- A/B测试:与基准模型或早期版本比较性能。
- 用户反馈:隐性指标如任务完成率。
- 边缘案例分析:无错误处理的边缘案例百分比。
定性量表:
- 李克特量表:“从1(无意义)到5(完全合逻辑)评价连贯性”
- 专家评分标准:语言学家根据定义的标准评价翻译质量
可实现的:根据行业基准、先前实验、AI研究或专家知识设定你的目标。你的成功指标不应该对当前前沿模型能力而言不切实际。
相关的:将你的标准与应用程序的目的和用户需求保持一致。强引用准确性对医疗应用可能至关重要,但对休闲聊天机器人则不那么重要。
标准 | |
---|---|
差 | 模型应该很好地分类情感 |
好 | 我们的情感分析模型应在10,000条多样化Twitter帖子的保留测试集*上(相关)达到至少0.85的F1分数(可衡量,具体),比我们当前基准提高5%(可实现)。 |
创建强有力的实证评估
学习如何开发测试用例来衡量LLM性能,包括评估设计原则、示例评估和评分方法。
在定义成功标准后,下一步是设计评估来衡量LLM相对于这些标准的性能。这是提示工程循环的重要组成部分。
本指南重点介绍如何开发测试用例。
构建评估和测试用例
评估设计原则
针对特定任务
:设计反映真实世界任务分布的评估。不要忘记考虑边缘情况!
- 不相关或不存在的输入数据
- 过长的输入数据或用户输入
- [聊天用例] 糟糕、有害或不相关的用户输入
- 模糊的测试用例,即使是人类也很难达成评估共识
尽可能自动化:构建问题以允许自动评分(例如,多选题、字符串匹配、代码评分、LLM评分)。
优先考虑数量而非质量:更多问题配合稍低信号的自动评分比更少问题配合高质量人工评分更好。
评估示例
衡量内容:精确匹配评估衡量模型输出是否与预定义的正确答案完全匹配。这是一个简单、明确的指标,非常适合具有明确分类答案的任务,如情感分析(积极、消极、中性)。
评估测试用例示例:1000条带有人工标注情感的推文。
1 | import anthropic |
衡量内容:余弦相似度通过计算两个向量(在这种情况下,使用SBERT的模型输出的句子嵌入)之间角度的余弦来衡量它们的相似性。接近1的值表示更高的相似性。它非常适合评估一致性,因为相似的问题应该产生语义相似的答案,即使措辞不同。
评估测试用例示例:50个组,每组有几个改写版本。
1 | from sentence_transformers import SentenceTransformer |
衡量内容:ROUGE-L(面向召回的摘要评估替代品 - 最长公共子序列)评估生成摘要的质量。它衡量候选摘要和参考摘要之间最长公共子序列的长度。高ROUGE-L分数表明生成的摘要以连贯的顺序捕获了关键信息。
评估测试用例示例:200篇带有参考摘要的文章。
1 | from rouge import Rouge |
衡量内容:与李克特量表类似,序数量表在固定的有序量表(1-5)上进行衡量。它非常适合评估上下文利用,因为它可以捕获模型引用和建立在对话历史基础上的程度,这是连贯、个性化交互的关键。
评估测试用例示例:100个多轮对话,包含依赖上下文的问题。
1 | import anthropic |
手工编写数百个测试用例可能很困难!让Claude帮助您从基线示例测试用例集生成更多测试用例。
如果您不知道哪些评估方法可能对评估您的成功标准有用,您也可以与Claude进行头脑风暴!
评分评估
在决定使用哪种方法来评分评估时,选择最快、最可靠、最可扩展的方法:
- 基于代码的评分:最快且最可靠,极其可扩展,但对于需要较少基于规则刚性的更复杂判断缺乏细致入微。
- 精确匹配:
output == golden_answer
- 字符串匹配:
key_phrase in output
- 精确匹配:
- 人工评分:最灵活和高质量,但缓慢且昂贵。如果可能请避免。
- 基于LLM的评分:快速且灵活,可扩展且适合复杂判断。首先测试以确保可靠性,然后扩展。
基于LLM评分的技巧
有详细、清晰的评分标准
:“答案应该总是在第一句中提到’Acme Inc.’。如果没有,答案自动被评为’不正确’。”
给定的用例,甚至该用例的特定成功标准,可能需要几个评分标准来进行全面评估。
实证或具体:例如,指示LLM仅输出’正确’或’不正确’,或从1-5的量表进行判断。纯定性评估很难快速大规模评估。
鼓励推理:要求LLM在决定评估分数之前先思考,然后丢弃推理。这提高了评估性能,特别是对于需要复杂判断的任务。
1 | import anthropic |
1. 李克特量表 (Likert Scale)
- 定义和用途:
- 李克特量表是一种常用的心理测量量表,用于衡量人们对某一陈述或问题的态度、意见或感受的强度和方向。它通常由一系列陈述组成,受访者需要对每个陈述表达同意或不同意的程度。
- 虽然李克特量表的原始数据是序数性质的(例如,从“非常不同意”到“非常同意”),但在数据分析中,常常将其视为区间数据进行处理,以便进行均值、标准差、t检验、方差分析等统计分析。
- 在固定有序量表 (1-5) 中的应用:
- 当使用1-5的固定有序量表时,每个数字通常代表一个明确的语义锚点。例如:
- 1 = 非常不同意 / 非常不满意 / 极差
- 2 = 不同意 / 不满意 / 差
- 3 = 中立 / 一般
- 4 = 同意 / 满意 / 好
- 5 = 非常同意 / 非常满意 / 极好
- 用途: 评估用户满意度、产品体验、服务质量、对某个观点的认同度等。
- 例子: “您对我们产品的整体满意度如何?” (1-5分)
2. 序数量表 (Ordinal Scale)
- 定义和用途:
- 序数量表是一种测量尺度,其数据可以排序,但不同类别之间的间隔不一定相等。它只表示顺序关系,不表示具体差异的大小。
- 在固定有序量表 (1-5) 中的应用:
- 当1-5的量表只用于表示“等级”或“顺序”时,它就是序数量表。例如:
- 1 = 初级
- 2 = 中级
- 3 = 高级
- 4 = 专家
- 5 = 大师
- 用途: 评估技能等级、产品质量等级、教育程度、排名等。
- 例子: “请评估您的编程技能水平。” (1-5级)
- 李克特量表与序数量表的区别 (在1-5量表语境下):
- 李克特量表通常具有等距的语义锚点(例如,“同意”和“非常同意”之间的“距离”被假定与“不同意”和“非常不同意”之间的“距离”大致相等),因此在分析中常被视为区间数据。它的目的是衡量强度。
- 序数量表则更强调顺序本身,不强调间隔的等距性。例如,从“初级”到“中级”的提升,与从“专家”到“大师”的提升,其“难度”或“知识量”的差异可能完全不同,但它们在量表上只是顺序上的相邻。
3. ROUGE-L (Recall-Oriented Understudy for Gisting Evaluation - Longest Common Subsequence)
定义和用途:
- ROUGE (Recall-Oriented Understudy for Gisting Evaluation) 是一套用于评估文本摘要和机器翻译质量的指标。它通过比较机器生成文本(System Summary)与人类参考文本(Reference Summary)之间的重叠程度来衡量质量。
- ROUGE-L 特别关注最长公共子序列 (Longest Common Subsequence, LCS)。LCS 不要求子序列中的词语是连续的,只要它们在两个文本中都以相同的顺序出现即可。这使得 ROUGE-L 能够更灵活地捕捉句子的结构相似性,即使词语顺序有微调。
具体用途:
- 文本摘要: 评估机器生成的摘要与人工撰写的摘要之间的相似度。
- 机器翻译: 评估机器翻译的译文与人工翻译的参考译文之间的相似度。
- 对话系统: 评估对话系统回复的质量。
- 问答系统: 评估问答系统生成答案的质量。
ROUGE-L 的公式:
ROUGE-L 计算基于最长公共子序列(LCS)。它通常报告为精确率(Precision)、召回率(Recall)和 F1 分数。设:
- $X$ 为参考文本(Reference Summary),长度为 $m$ 个词。
- $Y$ 为系统生成文本(System Summary),长度为 $n$ 个词。
- $LCS(X, Y)$ 为 $X$ 和 $Y$ 之间最长公共子序列的长度。
ROUGE-L Recall (召回率): 衡量参考文本中有多少内容被系统文本捕获。
$ \text{ROUGE-L Recall} = \frac{LCS(X, Y)}{m} $
其中 $m$ 是参考文本 $X$ 的词数。
这意味着:系统文本 $Y$ 中,有多少词是参考文本 $X$ 的最长公共子序列的一部分,占参考文本总词数的比例。ROUGE-L Precision (精确率): 衡量系统文本中有多少内容是参考文本中存在的。
$ \text{ROUGE-L Precision} = \frac{LCS(X, Y)}{n} $
其中 $n$ 是系统文本 $Y$ 的词数。
这意味着:系统文本 $Y$ 中,有多少词是参考文本 $X$ 的最长公共子序列的一部分,占系统文本总词数的比例。ROUGE-L F1 Score (F1 分数): 精确率和召回率的调和平均值,用于综合评估。
$ \text{ROUGE-L F1} = \frac{(1 + \beta^2) \cdot \text{ROUGE-L Recall} \cdot \text{ROUGE-L Precision}}{\beta^2 \cdot \text{ROUGE-L Recall} + \text{ROUGE-L Precision}} $
通常,$\beta = 1$,这意味着精确率和召回率同等重要,此时 F1 分数公式简化为:
$ \text{ROUGE-L F1} = \frac{2 \cdot \text{ROUGE-L Recall} \cdot \text{ROUGE-L Precision}}{\text{ROUGE-L Recall} + \text{ROUGE-L Precision}} $如何计算 LCS:
最长公共子序列的长度通常通过动态规划算法来计算。例如,对于字符串 “ABCBDAB” 和 “BDCABA”,LCS 是 “BCBA”,长度为 4。举例:
- 参考文本 (Reference): “The cat sat on the mat.” (5 个词)
- 系统文本 (System): “The cat was on the mat.” (6 个词)
LCS(Reference, System) = “The cat on the mat” (4 个词)
- ROUGE-L Recall = 4 / 5 = 0.8
- ROUGE-L Precision = 4 / 6 = 0.667
- ROUGE-L F1 = (2 * 0.8 * 0.667) / (0.8 + 0.667) = (1.0672) / (1.467) $\approx$ 0.727
使用评估工具
Anthropic 控制台提供了一个评估工具,允许您在各种场景下测试您的提示。
访问评估功能
要开始使用评估工具:
- 打开 Anthropic 控制台并导航到提示编辑器。
- 编写完提示后,在屏幕顶部寻找”Evaluate”(评估)选项卡。
确保您的提示中至少包含1-2个使用双大括号语法的动态变量:。这是创建评估测试集所必需的。
生成提示
控制台提供了由 Claude Opus 4 驱动的内置提示生成器:
点击‘Generate Prompt’(生成提示)
点击”Generate Prompt”辅助工具将打开一个模态窗口,允许您输入任务信息。
描述您的任务
描述您想要的任务(例如,“分类入站客户支持请求”),您可以根据需要提供或多或少的细节。您提供的上下文越多,Claude 就能越好地将生成的提示定制为满足您的特定需求。
生成您的提示
点击底部的橙色”Generate Prompt”按钮,Claude 将为您生成高质量的提示。然后,您可以使用控制台中的评估屏幕进一步改进这些提示。
此功能使创建带有适当变量语法的提示变得更加容易,便于评估。
创建测试用例
当您访问评估屏幕时,您有几种创建测试用例的选项:
- 点击左下角的”+ Add Row”(添加行)按钮手动添加用例。
- 使用”Generate Test Case”(生成测试用例)功能让 Claude 自动为您生成测试用例。
- 从 CSV 文件导入测试用例。
要使用”Generate Test Case”功能:
点击‘Generate Test Case’
每次点击按钮,Claude 都会为您生成一行测试用例。
编辑生成逻辑(可选)
您还可以通过点击”Generate Test Case”按钮右侧的箭头下拉菜单,然后点击弹出的变量窗口顶部的”Show generation logic”(显示生成逻辑)来编辑测试用例生成逻辑。您可能需要点击此窗口右上角的Generate
来填充初始生成逻辑。
编辑此内容可以让您自定义和微调 Claude 生成的测试用例,使其更加精确和具体。
以下是一个填充了多个测试用例的评估屏幕示例:
如果您更新了原始提示文本,可以针对新提示重新运行整个评估套件,以查看更改如何影响所有测试用例的性能。
有效评估的技巧
为了充分利用评估工具,请使用清晰的输入和输出格式构建您的提示。例如:
1 | 在这个任务中,你将生成一个可爱的单句故事,包含两个元素:一种颜色和一种声音。 |
这种结构使得变化输入(和)并一致地评估输出变得容易。
使用控制台中的”Generate a prompt”(生成提示)辅助工具,快速创建带有适当变量语法的提示以进行评估。
理解和比较结果
评估工具提供了几个功能来帮助您改进提示:
- 并排比较:比较两个或多个提示的输出,快速查看更改的影响。
- 质量评分:使用5分制对响应质量进行评分,以跟踪每个提示的响应质量改进情况。
- 提示版本控制:创建提示的新版本并重新运行测试套件,以快速迭代和改进结果。
通过查看各测试用例的结果并比较不同的提示版本,您可以发现模式并更有效地对提示进行明智的调整。
提高输出一致性(JSON模式)
以下是如何使Claude的响应更加一致:
指定所需的输出格式
使用JSON、XML或自定义模板精确定义您所需的输出格式,以便Claude理解您需要的每个输出格式元素。
角色 | 内容 |
---|---|
User | 你是一个客户洞察AI。分析这个反馈并以JSON格式输出,包含以下键:“sentiment”(正面/负面/中性)、“key_issues”(列表)和”action_items”(包含”team”和”task”的字典列表)。 “我已经是忠实用户3年了,但最近的UI更新简直是灾难。现在找基本功能就像寻宝一样。另外,新的’高级版’定价太离谱了。如果不尽快解决这个问题,我就考虑换别的了。“ |
Assistant | { “sentiment”: “negative”, “key_issues”: [ “最近更新的UI/UX体验差”, “难以找到基本功能”, “定价过高(新的’高级版’)” ], “action_items”: [ { “team”: “产品”, “task”: “进行可用性测试并根据结果改进UI” }, { “team”: “用户体验”, “task”: “创建功能发现指南或入门流程” }, { “team”: “市场营销”, “task”: “审查定价策略并传达价值主张” }, { “team”: “客户成功”, “task”: “联系用户,提供优惠以防止流失” } ] } |
预填Claude的响应
预填”Assistant”回合的内容,使用您想要的格式。这个技巧可以绕过Claude的友好开场白并强制执行您的结构。
角色 | 内容 |
---|---|
User | 你是一个富有洞察力的销售智能AI。生成今天的销售报告。 按以下结构组织报告: |
Assistant (prefill) | |
Assistant | ”total_revenue”>$842,567.00 |
通过示例约束
提供您期望输出的示例。这比抽象的指令更能训练Claude的理解。
角色 | 内容 |
---|---|
User | 作为市场情报AI,您的任务是分析我们竞争对手的数据。以下是我们的竞争对手数据: 按照以下示例格式输出: |
Assistant |