OpenAI官方提供的Prompt技巧,给OpenAI的模型提供更清晰有效的指令。
翻译 From : https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api
Rules of Thumb and Examples 经验法则和示例
注意:“ {此处输入文本} ”或 "{text input here}"是实际文本/上下文的占位符 placeholder
1. 使用最新型号的模型
最新的模型更容易被Prompt激发好的结果
2.将Instruction放在Prompt的开头,并使用 ###
或 """
将Instruction和上下文分开
效果较差❌
Summarize the text below as a bullet point list of the most important points.
{text input here}
将下面的文字总结为最重要的要点列表。
{在此处输入文本}
效果更好✅
Summarize the text below as a bullet point list of the most important points.
Text: """
{text input here}
"""
将下面的文字总结为最重要的要点列表。
文字:"""
{在此处输入文本}
"""
3. 尽可能具体、详细地描述所需的背景、结果、长度、格式、风格等
效果较差❌
Write a poem about OpenAI.
写一首关于 OpenAI 的诗。
效果更好✅
Write a short inspiring poem about OpenAI, focusing on the recent DALL-E product launch (DALL-E is a text to image ML model) in the style of a {famous poet}
以{著名诗人}的风格写一首关于 OpenAI 的简短励志诗,重点介绍最近的 DALL-E 产品发布(DALL-E 是一个文本到图像的 ML 模型)
4. 通过示例阐明所需的输出格式
效果较差❌
Extract the entities mentioned in the text below. Extract the following 4 entity types: company names, people names, specific topics and themes.
Text: {text}
提取以下文本中提到的实体。提取以下 4 种实体类型:公司名称、人名、特定主题和主题。
文本:{text}
展示并说明 - 当展示特定格式要求时,模型会做出更好的响应。这也使得以编程方式可靠地解析多个输出变得更加容易。
效果更好✅
Extract the important entities mentioned in the text below. First extract all company names, then extract all people names, then extract specific topics which fit the content and finally extract general overarching themes
Desired format:
Company names: <comma_separated_list_of_company_names>
People names: -||-
Specific topics: -||-
General themes: -||-
Text: {text}
提取下面文本中提到的重要实体。首先提取所有公司名称,然后提取所有人名,然后提取符合内容的特定主题,最后提取一般的总体主题
所需格式:
公司名称:<comma_separated_list_of_company_names>
人名:-||-
特定主题:-||-
一般主题:-||-
文本:{text}
5. 从零样本开始,然后是少样本,都不起作用,然后进行微调
Zero-Shot ✅
Extract keywords from the below text.
Text: {text}
Keywords:
从以下文本中提取关键字。
文本:{text}
关键字:
Few-Shot ✅
Extract keywords from the corresponding texts below.
Text 1: Stripe provides APIs that web developers can use to integrate payment processing into their websites and mobile applications.
Keywords 1: Stripe, payment processing, APIs, web developers, websites, mobile applications
##
Text 2: OpenAI has trained cutting-edge language models that are very good at understanding and generating text. Our API provides access to these models and can be used to solve virtually any task that involves processing language.
Keywords 2: OpenAI, language models, text processing, API.
##
Text 3: {text}
Keywords 3:
从下面相应的文本中提取关键词。
文本 1:Stripe 提供 API,Web 开发人员可以使用这些 API 将支付处理集成到他们的网站和移动应用程序中。
关键词 1:Stripe、支付处理、API、Web 开发人员、网站、移动应用程序
##
文本 2:OpenAI 训练了非常擅长理解和生成文本的尖端语言模型。我们的 API 提供对这些模型的访问,可用于解决几乎任何涉及处理语言的任务。
关键词 2:OpenAI、语言模型、文本处理、API。
##
文本 3:{text}
关键词 3:
微调✅ 微调的最佳实践
6. 减少“空洞”和不精确的描述
效果较差❌
The description for this product should be fairly short, a few sentences only, and not too much more.
该产品的描述应该比较简短,只有几句话,不要太多。
效果更好✅
Use a 3 to 5 sentence paragraph to describe this product.
使用3到5个句子的段落来描述该产品。
7. 不要只说不该做什么,而要说该做什么
效果较差❌
The following is a conversation between an Agent and a Customer. DO NOT ASK USERNAME OR PASSWORD. DO NOT REPEAT.
Customer: I can’t log in to my account.
Agent:
以下是代理与客户之间的对话。请勿询问用户名或密码。请勿重复。
客户:我无法登录我的帐户。
代理:
效果更好✅
The following is a conversation between an Agent and a Customer. The agent will attempt to diagnose the problem and suggest a solution, whilst refraining from asking any questions related to PII. Instead of asking for PII, such as username or password, refer the user to the help article www.samplewebsite.com/help/faq
Customer: I can’t log in to my account.
Agent:
以下是代理与客户之间的对话。代理将尝试诊断问题并提出解决方案,同时避免询问任何与 PII 相关的问题。不要询问 PII(例如用户名或密码),而是让用户参考帮助文章 www.samplewebsite.com/help/faq
客户:我无法登录我的帐户。
代理:
8. 代码生成专用 - 使用“引导词”推动模型向特定模式发展
效果较差❌
# Write a simple python function that
# 1. Ask me for a number in mile
# 2. It converts miles to kilometers
# 编写一个简单的 Python 函数,
# 1. 询问我一个英里数
# 2. 将英里转换为公里
效果更好✅
在下面的代码示例中,添加“ import ”提示模型应该开始用 Python 编写。(类似地,“ SELECT ”是 SQL 语句开头的一个很好的提示。)
Write a simple python function that
1. Ask me for a number in mile
2. It converts miles to kilometers
import
# 编写一个简单的 Python 函数,
# 1. 询问我一个英里数
# 2. 将英里转换为公里
import
参数
通常,我们发现model
和 temperature
是改变模型输出最常用的参数。
-
model
-性能更高的型号通常更昂贵,并且可能具有更高的延迟。 -
temperature
-衡量模型输出不太可能的标记的频率。 越高temperature
,输出越随机(通常越有创意)。 但是,这与“真实性”不同。 对于大多数事实用例(例如数据提取和真实的问答),temperature
0 是最好的。 -
max_tokens
(最大长度) - 不控制输出的长度,而是对 token 生成的硬性截止限制。理想情况下,您不会经常达到此限制,因为您的模型会在它认为完成时或达到您定义的停止序列时停止。 -
stop
(停止序列) - 一组字符(标记),当生成时,将导致文本生成停止。
其他参数说明请参见API参考。