General Tips for Designing Prompts

设计提示的通用技巧

在设计提示时,请记住以下一些技巧:

从简单开始

当你开始设计提示时,你应该记住这实际上是一个迭代过程,需要大量的实验才能获得最佳结果。使用OpenAI或Cohere的简单游乐场是一个很好的起点。

你可以从简单的提示开始,并在追求更好结果的过程中不断添加更多元素和上下文。因此,迭代你的提示至关重要。阅读本指南时,你会看到许多例子,其中具体性、简洁性和简明性通常会带来更好的结果。

当你有一个涉及许多不同子任务的大任务时,你可以尝试将任务分解为更简单的子任务,并在获得更好的结果时逐步构建。这样可以避免在提示设计过程的初期增加过多的复杂性。

指令

您可以通过使用命令来设计有效的提示,以完成各种简单任务,例如“编写”、“分类”、“总结”、“翻译”、“排序”等,以指示模型您想要实现的目标。

请记住,您还需要进行大量实验,以了解什么方法最有效。尝试使用不同的指令、关键词、上下文和数据,看看什么最适合您的特定用例和任务。通常,上下文与您尝试执行的任务越具体和相关,效果越好。我们将在接下来的指南中讨论采样和添加更多上下文的重要性。

其他人建议您在提示的开头放置指令。另一个建议是使用一些清晰的分隔符,如“###”来分隔指令和上下文。

例如:

提示:

### Instruction ###
Translate the text below to Spanish:

Text: "hello!"

输出:

¡Hola!

特异性

非常具体地描述你希望模型执行的指令和任务。提示越描述性和详细,结果就越好。当你有一个期望的结果或生成风格时,这一点尤为重要。没有特定的标记或关键词会导致更好的结果。更重要的是有一个好的格式和描述性的提示。事实上,在提示中提供示例对于以特定格式获得期望的输出非常有效。

在设计提示时,您还应考虑提示的长度,因为提示的长度是有限制的。思考您应该多么具体和详细。包含太多不必要的细节并不一定是一个好方法。细节应该是相关的,并且有助于手头的任务。这是您需要进行大量实验的地方。我们鼓励进行大量的实验和迭代,以优化您的应用程序的提示。

作为一个例子,让我们尝试一个简单的提示来从一段文本中提取特定信息。

提示:

Extract the name of places in the following text. 

Desired format:
Place: <comma_separated_list_of_places>

Input: "Although these developments are encouraging to researchers, much is still a mystery. “We often have a black box between the brain and the effect we see in the periphery,” says Henrique Veiga-Fernandes, a neuroimmunologist at the Champalimaud Centre for the Unknown in Lisbon. “If we want to use it in the therapeutic context, we actually need to understand the mechanism.“"

输出:

Place: Champalimaud Centre for the Unknown, Lisbon

输入文本取自这篇自然文章(在新标签页中打开)

避免不精确

鉴于上述关于详细和改进格式的建议,很容易陷入想要在提示上过于聪明并可能创建不精确描述的陷阱。通常最好是具体和直接。这里的类比与有效沟通非常相似——越直接,信息传达得越有效。

例如,您可能对学习提示工程的概念感兴趣。您可能会尝试类似以下内容:

Explain the concept prompt engineering. Keep the explanation short, only a few sentences, and don't be too descriptive.

从上面的提示中不清楚要使用多少句子以及使用什么风格。你可能仍然会得到一些不错的响应,但更好的提示应该是非常具体、简洁和切中要点的。例如:

Use 2-3 sentences to explain the concept of prompt engineering to a high school student.

做还是不做?

设计提示时的另一个常见技巧是避免说不要做什么,而是说要做什么。这鼓励更多的具体性,并专注于导致模型良好响应的细节。

这里有一个电影推荐聊天机器人的例子,它因为我的指令编写方式而失败,这正是我不希望它做的事情——专注于不该做的事情。

提示:

The following is an agent that recommends movies to a customer. DO NOT ASK FOR INTERESTS. DO NOT ASK FOR PERSONAL INFORMATION.

Customer: Please recommend a movie based on my interests.
Agent: 

输出:

Sure, I can recommend a movie based on your interests. What kind of movie would you like to watch? Do you prefer action, comedy, romance, or something else?

这是一个更好的提示:

提示:

The following is an agent that recommends movies to a customer. The agent is responsible to recommend a movie from the top global trending movies. It should refrain from asking users for their preferences and avoid asking for personal information. If the agent doesn't have a movie to recommend, it should respond "Sorry, couldn't find a movie to recommend today.".

Customer: Please recommend a movie based on my interests.
Agent:

输出:

Sorry, I don't have any information about your interests. However, here's a list of the top global trending movies right now: [list of movies]. I hope you find something you like!

上面的一些例子是从"使用OpenAI API进行提示工程的最佳实践"文章中采用的。 (在新标签页中打开)