目录
[2.1 使用提示模板](#2.1 使用提示模板)
[2.1.1 使用提示模板和变量](#2.1.1 使用提示模板和变量)
[2.1.2 何时使用提示模板和变量](#2.1.2 何时使用提示模板和变量)
[2.1.3 提示模板示例](#2.1.3 提示模板示例)
[2.2 保持清晰和直接](#2.2 保持清晰和直接)
[2.2.1 如何保持清晰、具有上下文和具体](#2.2.1 如何保持清晰、具有上下文和具体)
[2.2.2 示例](#2.2.2 示例)
[2.3 使用示例(多示例提示)来引导 Claude 的行为](#2.3 使用示例(多示例提示)来引导 Claude 的行为)
[2.3.1 为什么要使用示例?](#2.3.1 为什么要使用示例?)
[2.3.2 制作有效的示例](#2.3.2 制作有效的示例)
[2.4 让 Claude 思考(思维链提示)以提高性能](#2.4 让 Claude 思考(思维链提示)以提高性能)
[2.4.1 实施思维链之前](#2.4.1 实施思维链之前)
[2.4.2 如何提示思考](#2.4.2 如何提示思考)
[2.5 使用XML标签构建你的提示词](#2.5 使用XML标签构建你的提示词)
[2.5.1 为什么要使用XML标签?](#2.5.1 为什么要使用XML标签?)
[2.5.2 标签使用最佳实践](#2.5.2 标签使用最佳实践)
[2.5.3 示例](#2.5.3 示例)
[2.6 通过系统提示给Claude赋予角色](#2.6 通过系统提示给Claude赋予角色)
[2.6.1 为什么要使用角色提示?](#2.6.1 为什么要使用角色提示?)
[2.6.2 示例](#2.6.2 示例)
[2.7 预填充 Claude 的回复以获得更好的输出控制](#2.7 预填充 Claude 的回复以获得更好的输出控制)
[2.7.1 示例](#2.7.1 示例)
[2.8 链式复杂提示以获得更强的性能](#2.8 链式复杂提示以获得更强的性能)
[2.8.1 为什么要链式提示?](#2.8.1 为什么要链式提示?)
[2.8.2 何时使用链式提示](#2.8.2 何时使用链式提示)
[2.8.3 如何链式提示](#2.8.3 如何链式提示)
[2.8.3.1 链式工作流示例](#2.8.3.1 链式工作流示例)
[2.8.3.2 高级:自我纠正链](#2.8.3.2 高级:自我纠正链)
[2.9 长文本提示的基本技巧](#2.9 长文本提示的基本技巧)
[3.Claude 4 提示工程最佳实践](#3.Claude 4 提示工程最佳实践)
[3.1 一般原则](#3.1 一般原则)
[3.2 针对具体情况的指导](#3.2 针对具体情况的指导)
[3.2.1 控制响应的格式](#3.2.1 控制响应的格式)
[3.2.2 利用思考和交叉思考能力](#3.2.2 利用思考和交叉思考能力)
[3.2.3 优化并行工具调用](#3.2.3 优化并行工具调用)
[3.2.4 减少代理编码中的文件创建](#3.2.4 减少代理编码中的文件创建)
[3.2.5 增强视觉和前端代码生成](#3.2.5 增强视觉和前端代码生成)
[3.2.6 避免专注于测试通过和硬编码](#3.2.6 避免专注于测试通过和硬编码)
❗️虽然这些技巧广泛适用于所有 Claude 模型,但您也可以应用于其他模型,逻辑都是相通的。
本指南假设您已:
-
明确定义用例的成功标准
-
对这些标准进行实证检验的一些方法
-
您想要改进的初稿提示
如果没有,我们强烈建议您先花时间建立这个标准。
本指南重点介绍可通过快速工程控制的成功标准。并非所有成功标准或失败评估都能通过快速工程得到最佳解决。例如,有时可以通过选择其他模型更轻松地改善延迟和成本。
1.什么时候适合用提示工程?
-
Prompt engineering是用来优化模型输出质量、风格、结构等与文本内容直接相关的指标的工具。
-
有些性能指标(如速度、成本)与提示词关系不大,改善它们的最佳方法可能是换模型配置或算法。
-
不要试图用 prompt 改写去解决所有类型的问题,要先判断问题的性质,再选方法。
问题类型 | 是否适合用 Prompt 调整 | 更可取的方法 |
---|---|---|
输出结构不符格式 | ✅ 是 | 调整 prompt 中的指令、示例 |
内容逻辑错误/不完整 | ✅ 是 | 提供更多上下文、明确任务目标 |
指令遵循度低 | ✅ 是 | 增强提示词的明确性和限制条件 |
响应太慢(延迟高) | ❌ 否 | 选择响应速度更快的模型/部署方式 |
成本太高(token费用高) | ❌ 否 | 选更便宜的模型、缩短上下文、压缩输入文本 |
模型知识缺口 | 部分 | 补充外部知识(RAG)、改模型 |
提示工程与微调:
提示工程比其他模型行为控制方法(例如微调)速度更快,并且通常能够在更短的时间内实现性能飞跃。以下是一些考虑即时工程而非微调的理由:
- 资源效率:微调需要高端 GPU 和大内存,而快速工程只需要文本输入,因此更加节省资源。
- 成本效益:对于基于云端的 AI 服务,微调会产生大量成本。Prompt Engineering 使用基础模型,通常成本更低。
- 维护模型更新:当提供商更新模型时,经过微调的版本可能需要重新训练。提示通常可以跨版本运行,无需更改。
- 节省时间:微调可能需要数小时甚至数天。相比之下,快速工程几乎可以立即获得结果,从而快速解决问题。
- 极少的数据需求:微调需要大量特定于任务的标记数据,而这些数据可能稀缺或昂贵。快速工程适用于少样本学习甚至零样本学习。
- 灵活性和快速迭代:快速尝试各种方法,调整提示,并立即看到结果。这种快速实验很难进行微调。
- 领域适应:通过在提示中提供特定领域的上下文,轻松地将模型适应新领域,而无需重新训练。
- 理解力提升:快速工程比微调更有效,可以帮助模型更好地理解和利用检索到的文档等外部内容
- 保留常识:微调可能会带来灾难性的遗忘,导致模型丢失常识。及时的工程设计可以保留模型的广泛功能。
- 透明度:提示符易于理解,准确显示模型接收到的信息。这种透明度有助于理解和调试。
2.如何进行提示工程
本节中的提示工程页面已按最广泛有效的技术到更专业的技术进行组织。在进行性能故障排除时,我们建议您按顺序尝试这些技术,尽管每种技术的实际效果取决于您的用例。
2.1 使用提示模板
2.1.1 使用提示模板和变量
使用 Claude 部署基于 LLM 的应用程序时,您的 API 调用通常包含两种类型的内容:
-
**固定内容:**在多次交互中保持不变的静态指令或上下文
-
**可变内容:**随每个请求或对话而变化的动态元素,例如:
-
用户输入
-
检索增强生成 (RAG) 的检索内容
-
对话上下文,例如用户帐户历史记录
-
系统生成的数据(例如从其他独立调用中输入的工具使用结果)提供给 Claude
-
提示模板将这些固定部分和可变部分组合在一起,并使用占位符来表示动态内容。
2.1.2 何时使用提示模板和变量
当您希望提示的任何部分在另一次调用 Claude 时重复出现时,您应该始终使用提示模板和变量(仅通过 API 或AnthropicConsole。claude.ai目前不支持提示模板或变量)。
提示模板有几个好处:
-
**一致性:**确保在多个交互中提示的结构一致
-
**效率:**轻松替换变量内容,无需重写整个提示
-
**可测试性:**仅通过更改变量部分即可快速测试不同的输入和边缘情况
-
**可扩展性:**随着应用程序复杂性的增加,简化提示管理
-
**版本控制:**通过仅关注提示的核心部分(与动态输入分开),轻松跟踪提示结构随时间的变化
2.1.3 提示模板示例
让我们考虑一个将英文文本翻译成西班牙文的简单应用。翻译后的文本会有所不同,因为您预计该文本会在用户操作或调用 Claude 时发生变化。该翻译文本可以从数据库或用户输入中动态检索。
因此,对于您的翻译应用程序,您可以使用这个简单的提示模板:
将此文本从英语翻译为西班牙语:{{text}}
2.2 保持清晰和直接
在与 Claude 交互时,可以将其视为一位聪明但非常新的员工(有健忘症),需要明确的指示。像任何新员工一样,Claude 并不了解你的规范、风格、准则或首选的工作方式。 你越是精确地解释你想要什么,Claude 的回应就会越好。
❗️清晰提示的黄金法则
向同事展示你的提示,最好是对任务了解很少的人,让他们按照指示操作。如果他们感到困惑,Claude 也可能会感到困惑。
2.2.1 如何保持清晰、具有上下文和具体
-
为 Claude 提供上下文信息: 就像你在了解更多上下文的情况下可能会更好地完成任务一样,Claude 在有更多上下文信息的情况下也会表现得更好。上下文信息的一些例子:
-
任务结果将用于什么
-
输出内容面向什么受众
-
任务属于什么工作流程,以及这个任务在工作流程中的位置
-
任务的最终目标,或者成功完成任务是什么样子
-
-
具体说明你希望 Claude 做什么: 例如,如果你只想要 Claude 输出代码而不要其他内容,就要明确说明。
-
按顺序提供指示: 使用编号列表或项目符号,以更好地确保 Claude 按照你想要的方式执行任务。
2.2.2 示例
示例一:匿名化客户反馈
注意,在不清晰的提示示例中,Claude 仍然会犯错误,比如保留了客户的姓名。
|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 角色 | 不清晰的提示 | 清晰的提示 |
| 用户 | 请从这些客户反馈信息中删除所有个人身份信息:{{FEEDBACK_DATA}} | 你的任务是为我们的季度审查匿名化客户反馈。 指示: 1. 将所有客户姓名替换为"CUSTOMER_[ID]"(例如,"Jane Doe" → "CUSTOMER_001") 2. 将电子邮件地址替换为"EMAIL_[ID]@example.com" 3. 将电话号码编辑为"PHONE_[ID]" 4. 如果消息提到特定产品(如"AcmeCloud"),保持不变 5. 如果没有发现个人身份信息,逐字复制消息 6. 仅输出经处理的消息,用"---"分隔 要处理的数据:{{FEEDBACK_DATA}} |
| 助手(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. 个性化:使用{{COMPANY_NAME}}和{{CONTACT_NAME}}变量 结构: 1. 主题行 2. 邮件正文(150-200字) 3. CTA按钮文本 |
助手(Claude 的回应) | 这是我们新功能的营销邮件草稿: 主题:借助 AcmeCloud 的最新功能提升您的业务 尊敬的客户, 我们很高兴为 AcmeCloud 引入三个强大的功能,这将彻底改变您的工作流程: 1. 实时协作:与您的团队同时处理文档。不再有版本控制问题! 2. AI 驱动的洞察:利用分析趋势和自动化任务的 AI 做出数据驱动的决策。 3. 高级安全套件:端到端加密、多因素认证和威胁检测确保您的数据安全。 限时优惠:立即升级可获得首年20%折扣。另外,推荐朋友可额外获得10%折扣! 此致, AcmeCloud 团队 | 主题行:AcmeCloud:企业级安全性与实时团队协作的完美结合 邮件正文: 亲爱的 {{CONTACT_NAME}}, 在 {{COMPANY_NAME}},您正在快速发展并着眼于云端。但随着增长而来的是保持数据安全同时促进协作的挑战。这就是 AcmeCloud 第三季度版本的用武之地,专为像您这样的科技创新者量身打造。 1. 堡垒级文件保护:军事级加密现在可以保护您的数据,无论是传输中还是静态存储。您的知识产权始终属于您,毫无疑问。 2. 无边界同步:Windows、Mac 或 Linux---AcmeCloud 通晓所有语言。统一的版本控制意味着不再有"final_v2_REALLY_FINAL.doc"。 3. 光速协作:告别附件反复发送。现在您的开发人员、设计师和数据科学家可以实时共同创作,大大缩短上市时间。 不要只相信我们的话。通过我们的30天试用体验 AcmeCloud 的不同之处。而且因为我们知道时间是您最宝贵的资产,我们还提供优先入门培训。 立即提升您的团队 - 30天免费试用 |
示例三:事件响应
注意,在模糊的提示中,Claude 输出了多余的文本和不同的格式。
角色 | 模糊的提示 | 详细的提示 |
---|---|---|
用户 | 分析这份 AcmeCloud 停机报告并总结关键点。 {{REPORT}} | 分析这份 AcmeCloud 停机报告。跳过前言。保持简洁的回应,只写最基本的必要信息。仅列出: 1) 原因 2) 持续时间 3) 受影响的服务 4) 受影响用户数量 5) 预计收入损失。 以下是报告:{{REPORT}} |
助手(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万美元 |
2.3 使用示例(多示例提示)来引导 Claude 的行为
示例是让 Claude 精确生成你所需内容的秘密武器捷径。通过在提示中提供一些精心设计的示例,你可以显著提高 Claude 输出的准确性、一致性和质量。 这种技术被称为少样本或多示例提示,对于需要结构化输出或遵循特定格式的任务特别有效。
❗️增强你的提示: 包含 3-5 个多样化、相关的示例来向 Claude 准确展示你想要的内容。示例越多 = 表现越好,尤其是对于复杂任务。
2.3.1 为什么要使用示例?
-
准确性:示例减少对指令的误解。
-
一致性:示例强制执行统一的结构和风格。
-
性能:精心选择的示例可以提升 Claude 处理复杂任务的能力。
2.3.2 制作有效的示例
为了获得最大效果,请确保你的示例是:
-
相关的:你的示例反映了你的实际用例。
-
多样化的:你的示例涵盖边缘情况和潜在挑战,并且有足够的变化使 Claude 不会无意中捕捉到不必要的模式。
-
清晰的 :你的示例用
<example>
标签包装(如果有多个,则嵌套在<examples>
标签中)以保持结构。
❗️请 Claude 评估你的示例的相关性、多样性或清晰度。或者让 Claude 基于你的初始集合生成更多示例。
示例:分析客户反馈
注意在"无示例"版本中,尽管其书面分析表明某些反馈有多个类别,但 Claude 并没有为每个类别列出多个选项。它还包含了一个我们可能不需要的长篇解释。
角色 | 无示例 | 有示例 |
---|---|---|
用户 | 分析这个客户反馈并对问题进行分类。使用这些类别:UI/UX、性能、功能请求、集成、定价和其他。同时评估情感(积极/中性/消极)和优先级(高/中/低)。 以下是反馈:{{FEEDBACK}} | 我们的客服团队被非结构化反馈淹没了。你的任务是为我们的产品和工程团队分析反馈并对问题进行分类。使用这些类别:UI/UX、性能、功能请求、集成、定价和其他。同时评估情感(积极/中性/消极)和优先级(高/中/低)。这里有一个示例: <example> 输入:新仪表板一团糟!加载需要很长时间,而且我找不到导出按钮。请尽快修复这个问题! 类别:UI/UX、性能 情感:消极 优先级:高</example> 现在,分析这个反馈:{{FEEDBACK}} |
助手(Claude 的回应) | 以下是客户反馈的分析: 问题:UI/UX 情感:消极 优先级:高 客户对新仪表板设计感到沮丧,认为它杂乱且加载缓慢。他们特别提到缺少"导出"按钮,这可能是一个关键功能。这个问题需要作为高优先级来解决。 问题:集成 情感:积极 优先级:中 客户对现有的 Salesforce 集成感到满意,但希望看到对 Hubspot 的支持。这是一个可以考虑在未来产品更新中实现的功能请求。 问题:定价 情感:消极 优先级:高 客户认为定价不合理,特别是对于基本功能而言。他们威胁要转向竞争对手,所以这是一个需要审查的高优先级问题。 问题:性能 情感:消极 优先级:高 客户在移动应用程序中遇到关键问题,大文件上传持续导致崩溃。这是一个显著影响客户有效使用产品的问题,应该作为高优先级来解决。 问题:UI/UX 情感:积极 优先级:低 客户总体上对产品满意,特别提到了直观的 UI 和出色的客户支持。这是一个不需要任何即时行动的积极反馈。 | 以下是客户反馈的分析: 1. 新仪表板一团糟!加载需要很长时间,而且我找不到导出按钮。请尽快修复这个问题! 类别:UI/UX、性能 情感:消极 优先级:高 2. 喜欢 Salesforce 集成!但如果你们能添加 Hubspot 就更好了。 类别:集成、功能请求 情感:积极 优先级:中 3. 你们的定价太荒谬了!基本功能要 $99/月?我要转向竞争对手 X。 类别:定价 情感:消极 优先级:高 4. 移动应用程序在我尝试上传大文件(>50MB)时持续崩溃。这对我们的外勤人员来说至关重要。 类别:性能 情感:消极 优先级:高 5. 总的来说,我对产品很满意。UI 很直观,客户支持一流。继续保持! 类别:UI/UX、其他(客户支持) 情感:积极 优先级:低 |
2.4 让 Claude 思考(思维链提示)以提高性能
在面对研究、分析或问题解决等复杂任务时,给 Claude 思考的空间可以显著提高其表现。这种被称为思维链(CoT)提示的技术,鼓励 Claude 逐步分解问题,从而产生更准确和细致的输出。
2.4.1 实施思维链之前
为什么要让 Claude 思考?
-
准确性: 逐步解决问题可以减少错误,尤其是在数学、逻辑、分析或一般复杂任务中。
-
连贯性: 结构化思维可以产生更连贯、组织更完善的回答。
-
调试: 查看 Claude 的思维过程有助于你找出提示可能不清晰的地方。
为什么不让 Claude 思考?
-
增加输出长度可能影响延迟。
-
并非所有任务都需要深入思考。明智地使用思维链以确保性能和延迟的适当平衡。
❗️对于人类需要思考的任务,如复杂数学、多步骤分析、编写复杂文档或涉及多个因素的决策,请使用思维链。
2.4.2 如何提示思考
下面的思维链技术按从简单到复杂的顺序排列。较简单的方法在上下文窗口中占用较少空间,但通常功能也较弱。
❗️思维链提示: 始终让 Claude 输出其思考过程。如果不输出思维过程,就不会发生思考!
-
基本提示: 在提示中包含"逐步思考"。
-
缺乏关于如何思考的指导(如果任务特别针对你的应用、用例或组织,这尤其不理想)
-
示例:撰写捐赠者邮件(基本思维链)
角色 内容 用户 起草个性化邮件,向捐赠者请求为今年的关爱儿童计划捐款。 项目信息: <program>{{PROGRAM_DETAILS}} </program> 捐赠者信息: <donor>{{DONOR_DETAILS}} </donor> 在写邮件之前逐步思考。
-
-
引导式提示: 概述 Claude 在思考过程中要遵循的具体步骤。
示例:撰写捐赠者邮件(引导式思维链)
-
缺乏结构化,难以剥离和分离答案与思考过程。
-
示例:撰写捐赠者邮件(引导式思维链)
角色 内容 用户 起草个性化邮件,向捐赠者请求为今年的关爱儿童计划捐款。 项目信息: <program>{{PROGRAM_DETAILS}} </program> 捐赠者信息: <donor>{{DONOR_DETAILS}} </donor> 在写邮件之前先思考。首先,根据他们的捐赠历史和他们过去支持过的活动,思考什么信息可能吸引这位捐赠者。然后,根据他们的历史,思考关爱儿童计划的哪些方面会吸引他们。最后,使用你的分析写出个性化的捐赠者邮件。
-
-
结构化提示: 使用像
<thinking>
和<answer>
这样的 XML 标签来分离推理和最终答案。-
示例:撰写捐赠者邮件(结构化引导思维链)
角色 内容 用户 起草个性化邮件,向捐赠者请求为今年的关爱儿童计划捐款。 项目信息: <program>{{PROGRAM_DETAILS}} </program> 捐赠者信息: <donor>{{DONOR_DETAILS}} </donor> 在写邮件之前在 <thinking> 标签中思考。首先,根据他们的捐赠历史和他们过去支持过的活动,思考什么信息可能吸引这位捐赠者。然后,根据他们的历史,思考关爱儿童计划的哪些方面会吸引他们。最后,在 <email> 标签中使用你的分析写出个性化的捐赠者邮件。
-
2.5 使用XML标签构建你的提示词
当你的提示词包含多个组件(如上下文、指令和示例)时,XML标签可以成为改变游戏规则的工具。它们可以帮助Claude更准确地解析你的提示词,从而产生更高质量的输出。
❗️XML提示 : 使用像
<instructions>
、<example>
和<formatting>
这样的标签来清晰地分隔提示词的不同部分。这可以防止Claude混淆指令与示例或上下文。
2.5.1 为什么要使用XML标签?
-
清晰度: 清晰地分隔提示词的不同部分,确保提示词结构良好。
-
准确性: 减少因Claude误解提示词部分而导致的错误。
-
灵活性: 无需重写所有内容即可轻松查找、添加、删除或修改提示词的部分内容。
-
可解析性: 让Claude在输出中使用XML标签,可以通过后处理更容易提取其响应的特定部分。
❗️Claude并没有经过特定的"最佳"XML标签训练,尽管我们建议你的标签名称要与它们所包含的信息相符。
2.5.2 标签使用最佳实践
-
保持一致性 : 在整个提示词中使用相同的标签名称,并在谈论内容时引用这些标签名称(例如,
使用<contract>标签中的合同...
)。 -
嵌套标签 : 对于层次结构内容,你应该嵌套标签
<outer><inner></inner></outer>
。
❗️高级用户提示 : 将XML标签与其他技术结合使用,如多示例提示(
<examples>
)或思维链(<thinking>
、<answer>
)。这将创建超结构化、高性能的提示词。
2.5.3 示例
示例一:生成财务报告
没有XML标签时,Claude会误解任务并生成不符合所需结构或语气的报告。替换后,Claude也可能会误解某个部分(如Q1报告示例)的结束位置和另一部分的开始位置。
角色 | 不使用XML标签 | 使用XML标签 |
---|---|---|
用户 | 你是AcmeCorp的财务分析师。为我们的投资者生成Q2财务报告。包括收入增长、利润率和现金流等部分,就像去年的这个示例:{{Q1_REPORT}}。使用这个电子表格中的数据点:{{SPREADSHEET_DATA}}。报告应该非常简洁、切中要点、专业,并采用列表格式。它应该突出优势和需要改进的领域。 | 你是AcmeCorp的财务分析师。为我们的投资者生成Q2财务报告。 AcmeCorp是一家B2B SaaS公司。我们的投资者重视透明度和可行的见解。 使用这些数据生成报告:<data>{{SPREADSHEET_DATA}}</data> <instructions> 1. 包括以下部分:收入增长、利润率、现金流。 2. 突出优势和需要改进的领域。 </instructions> 使用简洁专业的语气。遵循这个结构: <formatting_example>{{Q1_REPORT}}</formatting_example> |
助手 | 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</output> 收入增长: - Q2收入:1520万美元(同比增长22%↑) - 企业客户:30%↑ - 中小企业部分:5%↓ 行动:Q3定向营销 利润率: - 毛利率:72%(较Q1上升3%↑) 原因:基础设施优化 - EBITDA利润率:18%(2%↓) 原因:AI功能研发投资 现金流: - 运营现金流:410万美元(强劲) - 现金储备:2800万美元(15个月运营资金) - 客户获取成本:20%↑ 行动:优化销售策略 展望: - 核心财务:稳健 - Q3重点:振兴中小企业、优化销售 管理层继续致力于平衡增长投资与财务纪律。 |
示例二:法律合同分析
没有XML标签时,Claude的分析缺乏组织且遗漏关键点。使用标签后,它提供了一个法律团队可以采取行动的结构化、全面的分析。
角色 | 不使用XML标签 | 使用XML标签 |
---|---|---|
用户 | 分析这份软件许可协议的潜在风险和责任:{{CONTRACT}}。重点关注赔偿、责任限制和知识产权所有权条款。另外,注意任何不寻常或令人担忧的条款。这是我们的标准合同供参考:{{STANDARD_CONTRACT}}。为我们的法律团队提供调查结果和建议摘要。 | 分析这份软件许可协议的法律风险和责任。 我们是一家考虑将此协议用于核心数据基础设施的跨国企业。 <agreement> {{CONTRACT}}</agreement> 这是我们的标准合同供参考: <standard_contract>{{STANDARD_CONTRACT}}</standard_contract> <instructions> 1. 分析以下条款: - 赔偿 - 责任限制 - 知识产权所有权 2. 注意不寻常或令人担忧的条款。 3. 与我们的标准合同进行比较。 4. 在<findings>标签中总结调查结果。 5. 在<recommendations>标签中列出可行的建议。</instructions> |
助手 | 提供的软件许可协议存在几个令人担忧的方面。赔偿条款过于宽泛,可能使我们面临重大责任。责任限制部分将损害赔偿上限设定为仅500美元,这对于我们的企业级使用来说是不够的。关于知识产权,该协议授予供应商对我们创建的任何修改或集成的共同所有权。 总之,这份协议不符合我们的最佳利益。它使我们面临不当风险,限制了我们在发生故障时的追索权,并损害了我们的知识产权。我建议重新谈判这些条款或寻找替代供应商。 | <findings> 1. 赔偿(第8条): - 问题:过于宽泛。我们需要对"任何和所有"因使用而产生的索赔进行赔偿。 - 风险:即使是供应商的疏忽或产品缺陷也可能使我们承担责任。 - 偏差:我们的标准合同将赔偿限制在因我们违反协议而产生的索赔。 2. 责任限制(第9条): - 问题:将所有损害赔偿(包括直接损害)上限设为500美元。 - 风险:对企业使用来说严重不足。关键故障可能造成数百万美元损失。 - 偏差:我们的标准允许直接损害赔偿最高达已付费用的12个月。 3. 知识产权所有权(第12条): - 问题:授予供应商对我们的修改/集成的共同所有权。 - 风险:供应商可能使用或出售我们的专有算法或数据洞察。 - 偏差:我们的标准保留我们工作的完全所有权。 4. 不寻常条款: - 第5.3条:供应商可以"出于任何目的"使用我们的使用数据。 - 第7.2条:供应商可以仅提前7天通知就"随意"终止。 - 第11条:不提供任何保证,即使是基本的适销性保证。 </findings> <recommendations> 1. 拒绝这份协议。对企业来说风险远大于收益。 2. 提出反建议: - 赔偿:限制在因我们违反协议而产生的索赔。 - 责任:直接损害上限设为12个月费用;就间接损害进行谈判。 - 知识产权:完全拥有我们的修改/集成。 - 数据使用:仅限于服务改进。 - 终止:最少90天通知;仅限有正当理由。 - 保证:要求基本的适销性和适用性保证。 3. 如果供应商拒绝,探索替代供应商或内部解决方案。 4. 鉴于风险较高,聘请法律顾问进行合同谈判。 </recommendations> |
2.6 通过系统提示给Claude赋予角色
在使用Claude时,您可以通过使用system
参数来赋予它一个角色,从而显著提升其表现。这种被称为角色提示的技术,是使用系统提示与Claude交互的最强大方式。
合适的角色可以将Claude从一个通用助手转变为您的虚拟领域专家!
❗️系统提示技巧 :使用
system
参数来设置Claude的角色。将其他所有内容(如特定任务的指令)放在user
轮次中。
2.6.1 为什么要使用角色提示?
-
**提高准确性:**在复杂场景中(如法律分析或财务建模),角色提示可以显著提升Claude的表现。
-
**定制语气:**无论您需要CFO的简洁还是文案撰写人的文采,角色提示都可以调整Claude的沟通风格。
-
**提升专注度:**通过设置角色背景,Claude能更好地保持在您任务特定要求的范围内。
❗️角色提示技巧 :尝试不同的角色!对于相同的数据,
数据科学家
可能会看到与营销策略师
不同的见解。而专门为世界500强公司进行客户洞察分析的数据科学家
可能会产生又一种不同的结果!
2.6.2 示例
示例1:法律合同分析
没有角色时,Claude可能会错过关键问题:
角色 | 内容 |
---|---|
User | 分析我们第二季度的财务数据: <data> {{FINANCIALS}} </data> 突出关键趋势并提出建议。 |
Assistant | 以下是您第二季度财务状况的总结: 1. 收入:1520万美元,同比增长22%。企业客户群增长30%。 2. 毛利率:72%,环比增长3%。 3. EBITDA利润率:18%,由于研发投资下降2%。 4. 现金流:运营现金流410万美元,储备2800万美元。 总的来说,财务状况良好,收入增长且利润率健康。增加的研发支出影响了盈利能力,但长期可能会带来回报。保持当前方向。 |
有了角色后,Claude能发现可能造成数百万损失的关键问题:
角色 | 内容 |
---|---|
User | 您是一家高增长B2B SaaS公司的CFO。我们正在董事会会议上讨论第二季度财务状况: <data> {{FINANCIALS}} </data> 分析关键趋势,标出问题,并提出战略行动建议。我们的投资者希望实现激进增长,但对我们的资金消耗率表示担忧。 |
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变现。有问题吗? |
2.7 预填充 Claude 的回复以获得更好的输出控制
在使用 Claude 时,您有独特的能力通过预填充 Assistant
消息来引导其回复。这种强大的技术允许您指导 Claude 的行动,跳过前言,强制使用特定格式如 JSON 或 XML,甚至帮助 Claude 在角色扮演场景中保持角色一致性。
在某些 Claude 表现不如预期的情况下,几句预填充的句子可以极大地改善 Claude 的表现。一点预填充就能产生很大的效果!
❗️预填充内容不能以尾随空格结束。像
"As an AI assistant, I "
这样的预填充(末尾有空格)将导致错误。
2.7.1 示例
示例 1:控制输出格式并跳过前言
高级用户提示 :预填充 {
强制 Claude 跳过前言并直接输出 JSON 对象。这样更简洁、更清晰,也更容易被程序解析而无需额外处理。
1.不使用预填充的结构化数据提取
角色 | 内容 |
---|---|
User | Extract the name, size, price, and color from this product description as a JSON object: <description> The SmartHome Mini is a compact smart home assistant available in black or white for only $49.99. At just 5 inches wide, it lets you control lights, thermostats, and other connected devices via voice or app---no matter where you place it in your home. This affordable little hub brings convenient hands-free control to your smart devices. </description> |
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! |
2.使用预填充的结构化数据提取
角色 | 内容 |
---|---|
User | Extract the name, size, price, and color from this product description as a JSON object: <description> The SmartHome Mini is a compact smart home assistant available in black or white for only $49.99. At just 5 inches wide, it lets you control lights, thermostats, and other connected devices via voice or app---no matter where you place it in your home. This affordable little hub brings convenient hands-free control to your smart devices. </description> |
Assistant (prefill) | { |
Assistant (Claude's response) | "name": "SmartHome Mini", "size": "5 inches wide", "price": "$49.99", "colors": [ "black", "white" ] } |
示例 2:在角色扮演场景中保持角色
角色扮演提示 :预填充一个带方括号的 [角色名称]
可以提醒 Claude 保持角色,即使在更长更复杂的对话中也是如此。当与 system
参数中的角色提示结合使用时,这种方法特别强大。
1.不使用角色提示保持角色
角色 | 内容 |
---|---|
User (与"夏洛克·福尔摩斯" Claude 的第50轮对话) | What do you deduce about the owner of this shoe? <image>muddy_shoe.jpg</image> |
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... |
2.使用角色提示保持角色
角色 | 内容 |
---|---|
User (与"夏洛克·福尔摩斯" Claude 的第50轮对话) | What do you deduce about the owner of this shoe? <image>muddy_shoe.jpg</image> |
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! |
2.8 链式复杂提示以获得更强的性能
在处理复杂任务时,如果你试图在单个提示中处理所有内容,Claude有时可能会出错。思维链(CoT)提示很好,但如果你的任务有多个不同的步骤,每个步骤都需要深入思考怎么办?
这就需要提示链:将复杂任务分解成更小、可管理的子任务。
2.8.1 为什么要链式提示?
-
准确性:每个子任务都能得到Claude的充分关注,减少错误。
-
清晰度:更简单的子任务意味着更清晰的指令和输出。
-
可追溯性:轻松定位和修复提示链中的问题。
2.8.2 何时使用链式提示
对于多步骤任务如研究综合、文档分析或迭代内容创作,使用链式提示。当任务涉及多个转换、引用或指令时,链式提示可以防止Claude遗漏或处理错误步骤。
**记住:**链条中的每个环节都能得到Claude的充分关注!
❗️调试提示:如果Claude遗漏了某个步骤或表现不佳,将该步骤单独放在一个提示中。这样你可以微调有问题的步骤,而无需重做整个任务。
2.8.3 如何链式提示
-
识别子任务:将任务分解为不同的、连续的步骤。
-
使用XML构建清晰的交接:使用XML标签在提示之间传递输出。
-
设定单一任务目标:每个子任务应该有一个明确的单一目标。
-
迭代:根据Claude的表现改进子任务。
2.8.3.1 链式工作流示例
-
多步骤分析:参见下面的法律和商业示例。
-
内容创作流程:研究 → 大纲 → 草稿 → 编辑 → 格式化。
-
数据处理:提取 → 转换 → 分析 → 可视化。
-
决策制定:收集信息 → 列出选项 → 分析每个选项 → 推荐。
-
验证循环:生成内容 → 审查 → 改进 → 重新审查。
❗️优化提示:对于具有独立子任务的任务(如分析多个文档),创建单独的提示并并行运行以提高速度。
2.8.3.2高级:自我纠正链
你可以链式提示让Claude审查自己的工作!这可以捕获错误并改进输出,特别是对于高风险任务。
1.示例:自我纠正研究摘要
提示1
角色 | 内容 |
---|---|
User | 总结这篇医学研究论文。 <paper>{{RESEARCH_PAPER}}</paper> 重点关注方法、发现和临床意义。 |
Assistant {{SUMMARY}} | 方法: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 | 你的任务是对一篇研究论文摘要提供反馈。这是一篇医学研究论文的摘要: <summary> {{SUMMARY}} </summary> 这是研究论文: <paper> {{RESEARCH_PAPER}} </paper> 按A-F等级评审这个摘要的准确性、清晰度和完整性。 |
Assistant {{FEEDBACK}} | 1. 准确性:A - 正确报告了关键数据:HbA1c降低、减重。 - 准确记录了安全性特征和无严重不良事件。 - "突破性进展"的说法由显著更好的结果支持。 2. 清晰度:A- - 简洁且结构良好,章节清晰。 - 很好地使用了比较语言(如"较Q1上升3%")提供背景。 - 小问题:未定义缩写"RCT"、"GLP-1"和"GIP"。考虑首次使用时拼写完整。 3. 完整性:B+ - 涵盖了所有要求的领域:方法、发现、临床意义。 - 缺失:组别的基线特征(是否匹配良好?)。 - 缺失:任何次要终点(如血压、血脂)。 - 考虑:长期影响或进一步研究的需求。 总的来说,摘要准确清晰,提供了快速把握研究的关键见解。要达到A+,需定义缩写,提及组别基线数据,注明任何次要结果,并简要提及长期研究的需求。 |
提示3
角色 | 内容 |
---|---|
User | 你的任务是根据反馈改进论文摘要。这是医学研究论文摘要的第一稿: <summary> {{SUMMARY}} </summary> 这是研究论文: <paper> {{RESEARCH_PAPER}} </paper> 这是反馈: <feedback> {{FEEDBACK}} </feedback> 根据反馈更新摘要。 |
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治疗显示出更好的血糖控制和减重效果。这些结果表明它可能是一个重要进展,特别是对肥胖糖尿病患者。然而,需要更长期的研究来确认持续的有效性和安全性,并研究潜在的心血管获益。 |
2.9 长文本提示的基本技巧
-
将长文本数据放在顶部:将您的长文档和输入(约20K+ tokens)放在提示的顶部,位于查询、指令和示例之上。这可以显著提高Claude在所有模型中的表现。
❗️测试表明,将查询放在末尾可以将响应质量提高多达30%,特别是在处理复杂的多文档输入时。
-
使用XML标签构建文档内容和元数据 :在使用多个文档时,用
<document>
标签包装每个文档,并使用<document_content>
和<source>
(以及其他元数据)子标签以提高清晰度。<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从文档内容的"噪音"中筛选出重要信息。
您是一位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>标签中。
3.Claude 4 提示工程最佳实践
下面提供了针对 Claude 4 模型(Opus 4.1、Opus 4 和 Sonnet 4)的具体快速工程技术,以帮助您在应用中取得最佳效果。这些模型经过训练,能够比前几代 Claude 模型更精确地遵循指令。
3.1 一般原则
1.明确你的指示
Claude 4 型号对清晰明确的指令反应良好。明确地描述您的期望输出有助于提升效果。如果客户希望获得之前 Claude 型号"超越"的性能,可能需要更明确地向 Claude 4 提出这些要求。
示例:创建分析仪表盘
效果较差:
"创建一个分析仪表板"
更有效:
"创建一个分析仪表板。包括尽可能多的相关功能和交互。超越基础,创建一个功能齐全的实现。"
2.添加上下文以提高性能
提供指令背后的背景或动机,例如向Claude解释为什么这种行为很重要,可以帮助Claude 4更好地理解您的目标并提供更有针对性的回应。
示例:格式首选项
效果较差:
"不要使用省略号"
更有效:
"你的回复会被文本转语音引擎大声朗读,所以不要使用省略号,因为文本转语音引擎不知道如何发音。"
3.对示例和细节保持警惕
Claude 4 模型注重细节和示例,并将其作为遵循指导的一部分。确保你的例子与你想要鼓励的行为相符,并尽量减少你想要避免的行为。
3.2 针对具体情况的指导
3.2.1 控制响应的格式
我们发现有几种方法对于控制 Claude 4 模型中的输出格式特别有效:
- 告诉Claude该做什么而不是不该做什么
不推荐:"不要在回复中使用 markdown"
试试这样说:"你的回答应该由流畅的散文段落组成。"
- 使用 XML 格式指示符
尝试:"在<smoothly_flowing_prose_paragraphs>标签中写下你回复的散文部分。"
-
将您的提示风格与所需的输出相匹配
提示中使用的格式样式可能会影响 Claude 的响应样式。如果您仍然遇到输出格式方面的可控性问题,我们建议您尽可能将提示样式与所需的输出样式相匹配。例如,从提示中移除 Markdown 可以减少输出中的 Markdown 数量。
3.2.2 利用思考和交叉思考能力
Claude 4 提供的思考能力尤其适用于涉及工具使用后反思或复杂的多步骤推理的任务。您可以引导其初始或交叉思考,以获得更好的结果。
示例提示:
在收到工正文具结果后,仔细反思其质量,并在继续之前确定最佳的下一步步骤。用你的思维来计划和迭代这些新信息,然后采取最好的下一步行动。
3.2.3 优化并行工具调用
Claude 4 模型在并行工具执行方面表现出色。它们在无需任何提示的情况下就能实现很高的并行工具调用成功率,但一些细微的提示可以将并行工具调用成功率提升至 100% 左右。我们发现以下提示最为有效:
为了获得最大的效率,无论何时需要执行多个独立的操作,都要同时调用所有相关的工具,而不是依次调用。
3.2.4 减少代理编码中的文件创建
Claude 4 模型有时会创建新文件用于测试和迭代,尤其是在处理代码时。这种方法允许 Claude 在保存最终输出之前将文件(尤其是 Python 脚本)用作"临时暂存器"。使用临时文件可以改善结果,尤其是在代理编码用例中。
如果您希望尽量减少新文件的创建,您可以指示 Claude 自行清理:
如果您为迭代创建了任何临时的新文件、脚本或辅助文件,请在任务结束时删除这些文件。
3.2.5 增强视觉和前端代码生成
对于前端代码生成,您可以通过提供明确的鼓励来引导 Claude 4 模型创建复杂、详细和交互式的设计:
不要退缩。全力以赴。
您还可以通过提供额外的修饰符和关注点细节来提高 Claude 在特定领域的前端性能:
- "包含尽可能多的相关功能和交互"
- "添加周到的细节,例如悬停状态、过渡和微交互"
- "创建一个令人印象深刻的演示来展示 Web 开发能力"
- "应用设计原则:层次、对比、平衡和动感"
3.2.6 避免专注于测试通过和硬编码
前沿语言模型有时会过于注重测试通过,而忽略了更通用的解决方案。为了避免这种情况并确保解决方案的稳健性和可推广性,请执行以下操作:
请写出一个高质量、通用的解决方案。实现对所有有效输入正确工作的解决方案,而不仅仅是测试用例。不要硬编码值或创建只适用于特定测试输入的解决方案。相反,实现解决问题的实际逻辑。
重点是理解问题需求并实现正确的算法。测试的作用是验证正确性,而不是定义解决方案。提供遵循最佳实践和软件设计原则的原则实现。
如果任务不合理或不可行,或者任何测试不正确,请告诉我。解决方案应该是健壮的、可维护的和可扩展的。
总结:
本文对Anthropic发布的Prompt Engineering做了全面的翻译和总结,对于想系统化提升自己提示工程能力的同学来有帮助,希望阅读本文能对你有所启发。