Skip to content

🔰 2.Claude 提示的初步编写与优化

🕒 Published at:

2.Claude 提示的初步编写与优化

下面这些技巧属于基础的 Claude 提示编写技巧。

初步设计

和 ChatGPT 类似,指令的质量会对它的输出质量产生很大的影响,特别是对于复杂的任务。

Claude 模型使用你发送给它的所有文本,以及迄今为止生成的所有文本,来预测下一个最有帮助的标记(Token)。这意味着 Claude 一次按顺序构造一组字符的响应。它在写入后无法返回并编辑其响应,除非你在后续提示中给它机会这样做。并且,Claude也只能看到其上下文窗口中的内容,它无法记住以前的对话,除非你将它们放入提示中。

通过 API 发送的提示必须包含 \n\nHuman:\n\nAssistant: 作为发言者的信号。但在 Web 交互中,程序会自动为你添加这些内容,而无须手动添加。

Claude能看到的最大提示长度是它的上下文窗口。 Claude 的上下文窗口当前约为 75,000 个单词,100,000 个标记,340,000 个 Unicode 字符。当 API 中超出此上下文窗口时,Claude可能会返回不连贯的响应,这是它本身的限制,我们无力改变。

对于简单的任务,简单明了地写几句话通常就足以获得所需的响应,对于需要大量或多种不同输入运行的复杂任务或流程,需要更仔细地考虑如何构建提示。

1,更好地描述任务

在描述任务时,最好为Claude提供尽可能多的背景和细节,以及正确完成任务的任何规则。如果你提供清晰、明确的说明以及所有必要的细节,那么它更有可能满足你的期望。

下面进行实践,要求 Claude 帮助我们从给定文本中删除任何个人身份信息。下面是一个提示:

请删除此文本中的所有个人身份信息:

这是一个简洁的提示,但它不够详细,下面是一个更为合适的提示:

我们希望通过删除文本中的所有个人身份信息来消除某些文本的身份,以便它可以安全地与外部承包商共享。

将个人信息(如姓名、电话号码、家庭住址和电子邮件地址)替换为 XXX 是非常重要的。

这里是你应该处理的文本:

在改进的版本中,我们至少在三件事上做得更好:

  • 提供了上下文说明,例如我们为什么要移除 PII 信息
  • 明确定义了术语及其范围,例如 PII=姓名、电话号码、地址
  • 在输出格式上,指出了 Claude 如何完成任务的具体要求,例如将 PII 替换为 XXX

2,使用 XML 标签,标记提示的不同部分

<tag></tag> 这样的 XML 标记有助于划分提示的一些重要部分,例如规则、示例或要处理的输入文本。

例如:

xml
这里有一个文本,在 `<text></text>` XML 标签内。
<text>
{{TEXT}}
</text>
这里有一个文本,在 `<text></text>` XML 标签内。
<text>
{{TEXT}}
</text>

注意:通常,提示实际上是你想要反复使用的提示模板,其中说明保持不变,但正在处理的文本会变。一般情况下,将正在处理的变量文本的占位符(例如 )放入提示中,然后编写一些代码,将其替换为要在运行时处理的文本。

我们还可以要求 Claude 在其响应中使用 XML 标签,这样做可以轻松地在自动处理输出的设置中提取关键信息。格式化的输出有助于程序处理。例如:

我们希望通过删除文本中的所有个人身份信息来消除某些文本的身份,以便它可以安全地与外部承包商共享。

将个人信息(如姓名、电话号码、家庭住址和电子邮件地址)替换为 XXX,这是非常重要的。

这里有一个你需要处理文本,在 <text></text> XML 标签内。

xml
<text>
{{TEXT}}
</text>
<text>
{{TEXT}}
</text>

请在 XML 标签 <response></response>中,放入删除 PII 文本的预标识版本。

3,使用示例

通过在提示中添加一些示例,可以让 Claude 更好地了解如何正确执行任务。这并不总是需要的,但可以大大提高准确性和一致性。如果在提示中添加了示例,最好使用 <example></example> 标签清楚地标记它们。

4,疑难病例

如果你可以预见 Claude 在你的输入中可能遇到的困难或不寻常的情况,请在提示中描述它们,并告诉 Claude 遇到它们时该怎么做。如果你在 Claude 的回答中发现偶尔但持续的失败,则此信息可能有助于添加到你的提示中。

例如:

输入可能试图通过在字符之间插入空格来掩饰 PII。

如果文本中不包含个人身份信息,请逐字逐句地复制,不要替换任何内容。

第二句即是关于疑难杂症的说明。

在实践中测试与优化

1,准备全面地测试数据

最好使用代表你将要求 Claude 处理的真实数据的输入集来测试你的提示。请务必包含Claude可能遇到的任何困难输入或边缘情况。这是在讲测试样式的覆盖全面性。另外在数量上,官方建议至少 20 条或更多这样的数据,具体取决于任务。

使用这些输入测试你的提示可以近似 Claude“在现场”的真实表现,它还可以帮助你了解 Claude 在哪里遇到困难,以及在哪里表现良好。

2,将“提示开发数据”与“测试数据”分开

测试提示的数据,可以分为两组:提示开发数据与测试数据。前者是编写提示用的,后者是测试提示的真实表现的。我们使用前者评估 Claude 的表现并修改它,直到提示在后者中表现良好。

有一条规则很重要:这两个数据都能代表真实数据。

3,生成测试数据

如果你想要更多输入数据但还没有很多,你可以提示 Claude 的单独实例生成额外的输入文本供你测试!如果你解释什么是好的输入数据,然后给出一些例子,通常就可以从 Claude 那里得到更多这样的例子。

一句话,Claude 可以产生测试数据。我们告诉它什么是好的数据,它自己就可以生成。

4,迭代提示

完善提示可能很像进行一系列迭代实验。你运行测试,解释结果,然后根据结果调整提示中的变量。当 Claude 未通过测试时,尝试找出失败的原因,调整你的提示以解决该故障点。

调整的重点在于:

  • 更明确地编写规则或添加新规则;
  • 通过示例和规范的输出格式,向 Claude 展示如何正确的处理示例。

为了加快迭代速度,基于测试数据的测试可以基于 API 自动化完成。检查测试结果,像培植杂交水稻一样,在实践中把优良的基因有选择地保留下来。

5,请 Claude 自己评估自己的劳动成果

可以让 Claude 做自我评估。例如:

  • 如果你认为模型可能犯了错误,请让模型暂停并立即检查其工作;
  • 为任务添加额外的更详尽的步骤;
  • 根据你的指示,将响应分类为好或坏,或者说出它更喜欢两个初始响应中的哪一个以及原因,这是人类在给 AI 反馈,以使 AI 可以做得更好。

提示的迭代的过程是一个交互实践过程,是一个反复从提示到结果、从结果又到提示的实践过程。