GPT提示工程
GPT最佳实践六个策略
编写清晰的提示

《GPT最佳实践 - 提升Prompt效果的六个策略》 (opens in a new tab)中,我们介绍了OpenAI官方发布的"GPT 最佳实践"指南的六个策略,其中第一个策略是编写清晰的提示。
关于编写清晰的提示,具体包含了6个方法,下面逐一介绍。

1.在查询中包含详细信息以获得更相关的答案

为了获得高度相关的响应,请确保请求中提供了所有重要的详细信息或上下文。否则,模型将会猜测你的意思,结果的相关度也会降低。

在下面的表格中,右边是推荐的写法,效果会比左边的更好,因为提供了更多具体的细节信息。

更差的更好的
如何在 Excel 中添加数字?如何在 Excel 中添加一行美元金额?我想对整张行自动执行此操作,所有总计都在右侧名为“总计”的列中结束。
谁是总统?谁是 2021 年墨西哥总统?选举频率如何?
编写代码来计算斐波那契数列。编写一个 TypeScript 函数来高效计算斐波那契数列。自由地注释代码以解释每部分的作用以及为什么这样编写。
总结会议记录。用一个段落总结会议记录。然后写下演讲者的 Markdown 列表以及他们的每个要点。最后,列出发言人建议的后续步骤或行动项目(如果有)。

2.要求模型采用特定的角色

GPT的系统消息(system)可用于指定模型在其回复中使用的角色(GPT扮演的角色或行为表现的描述)。

GPT角色角色内容
SYSTEM当我请求帮助写一些东西时,你会回复一份文档,其中每个段落至少包含一个笑话或有趣的评论。
USER给我的钢螺栓供应商写一封感谢信,感谢他们在短时间内准时交货。这使我们能够交付一份重要的订单。

没有系统角色的回复效果:

提供了系统角色的回复效果:

很明显,指定了系统角色信息之后,回复的内容的确是更有趣了。

3.使用分隔符清楚地指示输入的不同部分

使用分隔符,如三重引号、XML 标签、章节标题等,可以帮助区分文本的不同部分。

示例1:

GPT角色角色内容
USER用俳句来总结由三重引号分隔的文本。
"""在此插入文本"""

示例2:

GPT角色角色内容
SYSTEM您将获得一对关于同一主题的文章(用 XML 标记分隔)。先总结一下每篇文章的论点。然后指出他们中的哪一个提出了更好的论点并解释原因。
USER<article> 在此插入第一篇文章 </article>
<article> 在此插入第二篇文章 </article>

示例3:

GPT角色角色内容
SYSTEM您将获得论文摘要和建议的标题。论文标题应该让读者清楚地了解论文的主题,但也应该引人注目。如果标题不符合这些标准,请提出 5 个替代方案。
USER摘要:在此插入摘要
标题:在此插入标题

对于像这样的简单任务,使用分隔符可能不会影响输出质量。然而,任务越复杂,消除歧义就越重要。不要让 GPT 为了理解你所要求的内容而费力。

4.指定完成任务所需的步骤

对于某一些任务,最好提供一系列的步骤来提示模型。
也就是说,进行任务分解,将一个大的任务分成多个小的步骤来完成。
将这些步骤明确地写出来,可以帮助模型更好地理解和执行任务。

GPT角色角色内容
SYSTEM使用以下分步说明来响应用户输入。
步骤 1 - 用户将为您提供三引号中的文本。用一个句子总结这段文字,并加上前缀“摘要:”。
步骤 2 - 将步骤 1 中的摘要翻译成西班牙语,并添加前缀“翻译:”。
USER"""在此插入文本"""

5.提供例子

提供适用于所有示例的“通用说明(general instructions)”,通常比"通过示例"演示"任务的所有排列"更有效,但在某些情况下,提供示例可能更容易。例如,如果您打算让模型复制"响应用户查询的特定风格",而这种风格又很难明确的进行描述。这种提供示例的方式被称为“少样本”提示。

GPT角色角色内容
SYSTEM以一致的风格回答。
USER教我关于耐心的知识。
ASSISTANT凿出最深山谷的河流,发源于一个不起眼的泉水;最伟大的交响乐源自一个音符;最复杂的挂毯都是从一根单独的线开始的。
USER教我关于海洋的知识。

6.指定所需的输出长度

您可以要求模型生成给定目标长度的输出。目标输出长度可以根据单词、句子、段落、要点等的计数来指定。需要注意的是,指定生成特定数量的单词并不能保证高精度的结果。相比之下,该模型更可靠地生成具有特定数量的段落或要点的输出。

GPT角色角色内容
USER用大约 50 个单词概括由三引号分隔的文本。
"""在此插入文本"""
GPT角色角色内容
USER将由三个引号括起来的文本总结为两个段落。
"""在此插入文本"""
GPT角色角色内容
USER将由三引号分隔的文本总结为 3 个要点。
"""在此插入文本"""

小结

编写清晰的提示,包含了6个具体的方法:

  • 在查询中提供更多细节可以获得更相关的答案
  • 可以要求模型采用特定的人设
  • 使用分隔符清楚地指示输入的不同部分
  • 指定完成任务所需的步骤
  • 提供例子
  • 指定所需的输出长度

参考

https://platform.openai.com/docs/guides/prompt-engineering/strategy-write-clear-instructions (opens in a new tab)