从零开始:提示词设计的迭代艺术
设计提示词本质上是一个迭代过程。你需要通过大量的实验才能获得最佳结果。使用 OpenAI 或 Cohere 的 Playground 是一个很好的起点。
- 循序渐进:从简单的提示词开始,随着对结果要求的提高,逐渐添加更多元素和上下文。
- 任务分解:当面对涉及许多子任务的大任务时,尝试将其分解为更简单的子任务,随着结果的改善逐步构建。这能避免在初期引入过多的复杂性。
- 核心原则:具体性、简洁性和简明性通常能带来更好的结果。
指令的艺术
你可以使用"写入"、"分类"、"总结"、"翻译"、"排序"等命令来指示模型执行任务。
关键技巧:
- 大量实验:尝试不同的关键词、上下文和数据组合,找出最适合你特定用例的方法。通常,上下文越具体、与任务越相关,效果越好。
- 使用分隔符 :有些人建议将指令放在提示词开头,或使用像
###这样的清晰分隔符来区分指令和上下文。
示例:
提示词:
指令
将以下文本翻译成西班牙语:
文本:"hello!"
输出:
¡Hola!
具体性:细节决定成败
要非常具体地说明你希望模型执行的任务。提示词越具描述性和详细,结果越好。特别是当你对生成的结果或风格有特定要求时,这一点尤为重要。
- 格式与描述:不存在某种特定的词元能确保更好的结果。更重要的是拥有一个格式良好且描述性的提示词。提供示例对于获得特定格式的期望输出非常有效。
- 长度控制:在设计提示词时,应注意提示词的长度限制。包含太多不必要的细节并不一定是好方法,细节应当是相关的,并有助于完成手头的任务。
示例:提取特定信息
让我们尝试从一段文本中提取地名。
提示词:
提取以下文本中的地名。
所需格式:
地点:<逗号分隔的公司名称列表>
输入:"虽然这些发展对研究人员来说是令人鼓舞的,但仍有许多谜团。里斯本未知的香帕利莫德中心的神经免疫学家 Henrique Veiga-Fernandes 说:"我们经常在大脑和我们在周围看到的效果之间有一个黑匣子。""如果我们想在治疗背景下使用它,我们实际上需要了解机制。""
输出:
地点:<里斯本,香帕利莫德中心>
避免不明确
尽管我们建议详细描述,但也容易陷入"过于聪明"的陷阱,创造出不明确的描述。通常来说,具体和直接会更好。这里的类比非常类似于有效沟通------越直接,信息传达得越有效。
对比示例:解释概念
- 不明确的提示:
解释提示工程的概念。保持解释简短,只有几句话,不要过于描述。
(分析:不清楚要使用多少句子以及什么风格。)
- 更好的提示:
使用 2-3 句话向高中学生解释提示工程的概念。
(分析:非常具体、简洁并且切中要点。)
做什么,还是不做什么?
设计提示词时的另一个常见技巧是:避免说"不要做什么",而应该说"要做什么"。 正向指令更加具体,并且聚焦于有利于模型生成良好回复的细节上。
以下是一个电影推荐聊天机器人的示例,展示了如何通过改变指令来修复失败的场景。
失败的示例(关注"不要做什么"):
提示词:
以下是向客户推荐电影的代理程序。不要询问兴趣。不要询问个人信息。
客户:请根据我的兴趣推荐电影。
代理:
输出:
当然,我可以根据你的兴趣推荐电影。你想看什么类型的电影?你喜欢动作片、喜剧片、爱情片还是其他类型的电影?
(分析:模型忽略了否定指令,仍然询问了兴趣。)
成功的示例(关注"要做什么"):
提示词:
以下是向客户推荐电影的代理程序。代理负责从全球热门电影中推荐电影。它应该避免询问用户的偏好并避免询问个人信息。如果代理没有电影推荐,它应该回答"抱歉,今天找不到电影推荐。"。
顾客:请根据我的兴趣推荐一部电影。
客服:
输出:
抱歉,我没有关于你兴趣的任何信息。不过,这是目前全球热门的电影列表:[电影列表]。希望你能找到喜欢的电影!
(分析:模型遵循了正向指令,直接提供了推荐列表。)