掘金 人工智能 20小时前
Claude 提示词最佳实践
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

Anthropic 官方提供了一系列提示词优化建议,旨在帮助用户更有效地与 Claude 交互。核心在于清晰、直接地传达指令,并提供充足的上下文信息,如任务目标、受众及工作流程。建议使用多示例(multishot)和思维链(chain of thought)技术,通过精心设计的示例和逐步分解问题来提高 Claude 输出的准确性和质量。此外,利用 XML 标签结构化提示词、预填充 Claude 的回复以及进行 Prompt Chaining(提示链)等方法,都能显著优化 Claude 的理解和响应能力。这些技巧涵盖了从基础的清晰指令到高级的复杂任务分解,全方位提升了与 AI 协作的效率和效果。

💡 **清晰直接的指令与上下文信息**:与 Claude 沟通时,应明确具体地说明任务要求,并提供必要的上下文,如任务的最终目标、目标受众以及任务在整体工作流程中的位置,这能帮助 Claude 更准确地理解并执行任务。

🌟 **利用示例与思维链提升输出质量**:通过提供精心设计的示例(multishot prompting)可以显著提高 Claude 输出的准确性和一致性。对于复杂任务,鼓励 Claude 使用思维链(chain of thought)进行逐步分析,能获得更细致和准确的输出。

XML **标签结构化提示词**:当提示词包含上下文、说明和示例等多种类型信息时,使用 XML 标签进行结构化,可以帮助 Claude 更准确地解析信息,提高输出质量,并保持信息的一致性。

✍️ **预填充回复与提示链优化交互**:预填充 Claude 的回复可以引导其直接进入核心内容,或强制特定格式输出。而提示链(Prompt Chaining)则通过将复杂任务分解为一系列更小的子任务,并以前一个任务的输出作为下一个任务的输入,确保每个环节得到充分处理,尤其适用于代码重构等复杂场景。

🚀 **长提示词与模型自省技巧**:对于长提示词,将关键信息置于顶部并使用 XML 标签进行分块处理。同时,要求 Claude 在完成任务前进行自省和验证,有助于减少错误并确保输出符合预期。

来自 Anthropic 官方的提示词优化建议

    Be clear and directUse examples (multishot) Let Claude think (chain of thought)Use XML tagsPrefill Claude’s responseChain complex promptsLong context tips

保持清晰直接

把 Claude 当做一个才华横溢的新同事,它没有关于团队项目的规范、风格、准则或团队偏好的工作方式等信息,因此我们越准确地解释你想要什么,Claude 的回应就越好

模糊的 Prompt为我们新的 AcmeCloud 功能撰写一封营销邮件。
清晰的 Prompt你的任务是为我们第三季度 AcmeCloud 功能发布制作一封有针对性的营销邮件。
指示:
1. 针对目标受众:从本地部署升级到云端的中型科技公司(100-500名员工)
2. 突出3个关键新功能:高级数据加密、跨平台同步和实时协作
3. 语气:专业但平易近人。强调安全性、效率和团队协作
4. 包含明确的行动号召:30天免费试用,优先获得入门培训
5. 主题行:少于50个字符,提到”安全”和”协作”
6. 个性化:使用{{COMPANY_NAME}}和{{CONTACT_NAME}}变量
结构:
1. 主题行
2. 邮件正文(150-200字)
3. CTA按钮文本

使用示例

multishot Prompting 是 few-shot Learning 在大模型上的一个具体实现方式,两者不是反义词。

通过在提示中提供一些精心设计的示例,可以显着提高 Claude 输出的准确性、一致性和质量,这种技术称为multishot,对于需要结构化输出或遵守特定格式的任务特别有效。

触发 Claude CoT

当面对复杂任务时,触发 Claude 思维链(CoT),鼓励 Claude 逐步分解问题,可以获得更准确、更细致的输出。

提示词建议提示词示例
在提示词中加入 “Think step-by-step”起草向捐助者发送个性化电子邮件,要求为今年的“关爱儿童”计划捐款。 项目详情: {{PROGRAM_DETAILS}} 捐赠者信息: {{DONOR_DETAILS}} 在写邮件之前,请逐步思考。
概述 Claude 在思考过程中要遵循的具体步骤起草向捐助者发送个性化电子邮件,要求为今年的“关爱儿童”计划捐款。 项目详情: {{PROGRAM_DETAILS}} 捐赠者信息: {{DONOR_DETAILS}} 在写邮件之前请逐步思考。
1. 首先,参考该捐赠者的捐赠历史以及他们过去支持过哪些活动,考虑哪些信息可能会吸引他们。
2. 然后,参考到他们的历史,考虑一下 Care for Kids 计划的哪些方面会吸引他们。
3. 最后,使用你的分析撰写个性化的捐赠者电子邮件。
使用 xml 标签结构化提示词起草向捐助者发送个性化电子邮件,要求为今年的“关爱儿童”计划捐款。 项目详情: {{PROGRAM_DETAILS}} 捐赠者信息: {{DONOR_DETAILS}} 写邮件之前在 标签中思考。
1. 首先,参考该捐赠者的捐赠历史以及他们过去支持过哪些活动,考虑哪些信息可能会吸引他们。
2. 然后,参考到他们的历史,考虑一下 Care for Kids 计划的哪些方面会吸引他们。
3. 最后,使用你的分析在 标签内撰写个性化的捐赠者邮件。

使用 XML 标签结构化提示词

当提示词涉及上下文、说明和示例等多类型时,使用 XML 标签结构化提示词,可以帮助 Claude 更准确地解析提示词,从而获得更高质量的输出。

    保持一致性: 在整个提示词中使用相同的标签名称,并在涉及相关内容时引用这些标签名称(例如,使用标签中的合同...)。嵌套标签: 对于层次结构内容,你应该嵌套标签 。
分析这份软件许可协议的法律风险和责任。我们是一家考虑将此协议用于核心数据基础设施的跨国企业。<agreement>{{CONTRACT}}</agreement>这是我们的标准合同供参考:<standard_contract>{{STANDARD_CONTRACT}}</standard_contract><instructions>1. 分析以下条款:- 赔偿- 责任限制- 知识产权所有权2. 注意不寻常或令人担忧的条款。3. 与我们的标准合同进行比较。4. 在<findings>标签中总结调查结果。5. 在<recommendations>标签中列出可行的建议。</instructions>

预填充 Claude 的回复

可以在提示词中设定一个开头,让 Claude 接着您的思路继续生成,这样有几个好处

只需在发送给 Claude 的 Assistant message 中包含希望 Claude 开始的文本,Claude 就会从预填充的文本之后继续生成其响应

{  "model": "claude-sonnet-4-20250514"",  "max_tokens": 1024,  "messages": [    {      "role": "user",      "content": "请帮我写一封感谢信,感谢对方在最近的项目中提供的帮助。信中要提到项目的成功和我们团队的合作。"    },    {      "role": "assistant",      "content": "Dear [Name],\n\n我希望这封邮件能找到你。"    }  ]}

Prompt Chaining 提示链

当一次性将复杂任务完全交给模型处理时,模型很可能会遗漏许多关键内容,在这种情况下提示链就能发挥作用。它的核心思想是:将一个复杂的任务拆解成一系列更小、更简单的子任务。随后引导模型逐步完成,其中上一个子任务的输出将作为下一个子任务的输入,从而确保每个环节都能得到模型的充分关注。

如何实施:

    分解任务: 将复杂任务拆分成清晰、有顺序的子任务。明确目标: 确保每个子任务只有一个明确、单一的目标。使用 XML 标签: 利用 XML 标签来清晰地标记和传递每个子任务的输出,作为下一个子任务的输入。迭代优化: 根据 Claude 的表现,不断调整和优化每个子任务的指令。

比如我们希望重构一个项目代码,可以按照以下步骤和模型交互

第一步:分析现有代码并识别重构点

发给 Claude 第一个提示词:

我有一个 Python 应用,其中包含一个名为 `payment_processor.py` 的文件,负责处理支付逻辑。我需要对其中的 `process_payment` 函数进行重构。你可以通过以下路径访问该文件的内容:`/app/src/payment_processor.py`请分析该文件内容,并列出所有你可以识别的重构点。对于每个重构点,请简要说明为什么需要重构,以及你计划如何改进。请使用 XML 标签 `<refactoring_points>` 和 `<point>` 来结构化你的输出。

Claude 会返回一个类似这样的响应:

<refactoring_points>  <point>    <description>函数职责单一原则违反</description>    <reason>当前的 `process_payment` 函数承担了过多的职责,包括输入验证、支付网关通信、交易记录等。这导致函数过长、难以理解和测试。</reason>    <improvement>将这些职责拆分到独立的、专注的函数中,例如 `validate_payment_data`、`communicate_with_gateway`、`record_transaction` 等。</improvement>  </point>  <point>    <description>硬编码的验证逻辑</description>    <reason>支付类型、货币、卡号长度等验证逻辑直接嵌入函数内部,不易扩展和维护。</reason>    <improvement>将验证规则外部化,可能通过配置文件或独立的数据结构管理,并引入更健壮的验证库。</improvement>  </point>  </refactoring_points>

第二步:生成重构后的代码结构和函数签名

在收到 Claude 的第一步输出后,发送的第二个提示词:

根据你之前识别的重构点(例如:函数职责单一原则、硬编码验证等),为 `payment_processor.py` 文件设计一个新的、更模块化的代码结构。请为每个新函数或修改后的现有函数提供函数签名(包括参数和返回类型建议),并简要说明其职责。不需要提供完整的函数实现。请使用 XML 标签 `<new_structure>` 和 `<function_signature>` 来结构化你的输出。

Claude 会返回一个类似这样的响应:

<new_structure>  <function_signature>    <name>validate_payment_data</name>    <parameters>amount: float, currency: str, card_number: str, expiry_date: str, cvv: str</parameters>    <returns>tuple[bool, str]</returns>    <responsibility>负责所有支付相关输入的验证。如果验证失败,返回 False 和错误信息。</responsibility>  </function_signature>  <function_signature>    <name>_call_payment_gateway</name>    <parameters>amount: float, currency: str, card_number: str</parameters>    <returns>dict</returns>    <responsibility>模拟与第三方支付网关的通信,返回网关的原始响应。</responsibility>  </function_signature>  <function_signature>    <name>_process_gateway_response</name>    <parameters>gateway_response: dict</parameters>    <returns>dict</returns>    <responsibility>解析支付网关的响应,并标准化处理结果(成功/失败)。</responsibility>  </function_signature>  <function_signature>    <name>record_transaction</name>    <parameters>customer_id: str, transaction_id: Optional[str], amount: float, currency: str, status: str, transaction_type: str, error_message: Optional[str] = None</parameters>    <returns>None</returns>    <responsibility>负责将支付交易记录到持久化存储(如数据库)。</responsibility>  </function_signature>  <function_signature>    <name>process_payment</name>    <parameters>amount: float, currency: str, card_number: str, expiry_date: str, cvv: str, customer_id: str, transaction_type: str = 'sale'</parameters>    <returns>dict</returns>    <responsibility>作为支付流程的入口点,协调调用其他模块化函数完成整个支付流程。</responsibility>  </function_signature></new_structure>

第三步:逐步实现重构后的功能

在收到 Claude 的第二步输出后,发送的第三个提示词:

现在,请你为 `validate_payment_data` 函数提供具体的 Python 实现。这个函数应该接收 `amount, currency, card_number, expiry_date, cvv` 作为输入,并返回一个元组,如果所有验证通过则包含 `(True, "")`,否则包含 `(False, "错误信息")`。请提供完整的函数实现,包括必要的导入。

Claude 就会开始改代码了

长提示词技巧

Claude 4 有 200k 的 context,当提示词是长文本时有几个技巧

<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>分析年度报告和竞争对手分析。识别战略优势并推荐第三季度重点关注领域。
您是一位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>标签中。

extended thinking 技巧

extended thinking 为 Claude 提供了增强的推理能力,用于处理复杂任务,同时在提供最终答案之前,以不同程度的透明度展示其逐步思考过程

启用 extended thinking

response = client.messages.create(    model="claude-sonnet-4-20250514",    max_tokens=16000,    thinking={        "type": "enabled",        "budget_tokens": 10000    },    messages=[{        "role": "user",        "content": "Are there an infinite number of prime numbers such that n mod 4 == 3?"    }])

API 响应将包含thinking内容块,随后是text内容块

{  "content": [    {      "type": "thinking",      "thinking": "让我逐步分析一下...",      "signature": "...."    },    {      "type": "text",      "text": "基于我的分析..."    }  ]}

使用高层次指令

Claude 通常在高层次指令下表现更好,只需要深入思考任务,而不是提供规定性的逐步指导。模型在解决问题时的创造力可能超过人类规定最佳思考过程的能力。

标准 Prompt增强 Prompt
逐步思考这个数学问题:
1. 首先,确定变量
2. 然后,建立方程
3. 接下来,求解x
请彻底且详细地思考这个数学问题。考虑多种方法并展示您完整的推理过程。如果第一种方法不起作用,请尝试不同的方法。

mutishot

mutishot 与 extended thingking 配合良好,可以 Prompt 中通过 XML 标签包含少量示例,如<thinking><scratchpad>

我将向你展示如何解决一个数学问题,然后我希望你解决一个类似的问题。问题1:80的15%是多少?<thinking>要找到 80 的 15%:1. 将 15% 转换为小数:15% = 0.152. 相乘:0.15 × 80 = 12</thinking>答案是12。现在解决这个问题:问题2:240 的 35% 是多少?

充分利用长输出和长形式思考

对于非常长的输出,可以要求提供详细的大纲,包括段落级别的字数,然后要求 Claude 将其段落索引到大纲中并保持指定的字数。

标准 Prompt增强 Prompt
编写一个Python脚本,实现一个在正方形内弹跳的黄色球,确保正确处理碰撞检测。让正方形缓慢旋转。编写一个Python脚本,实现一个在四维超立方体内弹跳的黄色球,确保正确处理碰撞检测。让四维超立方体缓慢旋转。确保球始终保持在四维超立方体内。
计划一个为期一周的日本度假。计划一个7天的日本之旅,满足以下约束条件:
+ 预算2,500美元
+ 必须包括东京和京都
+ 需要适应素食饮食
+ 偏好文化体验而非购物
+ 必须包括一天徒步旅行
+ 每天在不同地点之间的旅行时间不超过2小时
+ 每天下午需要空闲时间打电话回家
+ 必须尽可能避开人群
为微软在2027年前进入个性化医疗市场制定一个全面战略。为微软在2027年前进入个性化医疗市场制定一个全面战略。
首先进行:
1. 蓝海战略画布分析
2. 应用波特五力模型识别竞争压力
接下来,基于监管和技术变量进行四种不同未来的情景规划练习。
对于每个情景:
+ 使用安索夫矩阵开发战略响应
最后,应用三地平线框架来:
+ 绘制过渡路径
+ 识别每个阶段的潜在颠覆性创新

让 Claude 自省

可以使用简单的自然语言提示 Claude 来提高一致性并减少错误:

    在宣布任务完成之前,要求 Claude 通过简单的测试验证其工作指导模型分析其前一步骤是否达到了预期结果对于编码任务,要求 Claude 在其 extended thinking 中运行测试用例
编写一个计算数字阶乘的函数。在完成之前,请使用以下测试用例验证你的解决方案:- n=0- n=1- n=5- n=10并修复你发现的任何问题。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

提示词优化 Claude AI交互 大型语言模型 Anthropic
相关文章