OpenAI 官网实践:如何向智能对话清晰有效的提问

 行业资讯    |      2023-10-23

        在信息时代,人工智能正逐渐赋予我们更多的便利和可能性。作为其中的一种代表,智能对话是一种自然语言处理模型,能够生成准确、连贯的文本回复。

                                     交互
然而,
要从GPT获得满意的答案,我们必须学会向它提出清晰有效的问题。本文来自OpenAI 官网,列举了GPT清晰有效地提问的实操案例

- 注意:文档中的 “{此处输入文字}” 是实际文本/上下文的占位符
- 文章来源Best practices for prompt engineering with OpenAI API(https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api)
- 一些基础内容做了删减

01 将指令放在prompt(提示词)的开始位置,并使用 ### 或 """ 来分隔指令和上下文

❌ 不好的例子:
将下面的文本总结为最重要要点的项目符号列表。
{此处输入文字}
✅ 好的例子:
将下面的文本总结为最重要要点的项目符号列表。
文本: """{此处输入文字}"""

02 对于期望的上下文、结果、长度、格式、风格等尽可能具体、具有描述性的并尽可能详细

对于上下文、结果、长度、格式、风格等要尽量具体说明
❌ 不好的例子:
写一首关于OpenAI的诗。
✅ 好的例子:
以{famous poet}的风格,围绕最近的DALL-E产品发布(DALL-E是一个文本到图像的ML模型)写一首简短且鼓舞人心的关于OpenAI的诗。

03 通过例子(例子1,例子2)清晰明了地描述期望的输出格式

❌ 不好的例子:
从下面的文本中提取出现的实体。提取以下4种类型的实体:公司名、人名、特定主题和主题。
{此处输入文字}

展示和讲述:

- 当模型被展示具体格式要求时,反应会更好。

- 这也使得程序更容易可靠地解析多个输出。

✅ 好的例子:
从下面的文本中提取重要的实体。首先提取所有公司名,然后提取所有人名,接着提取符合内容的特定主题,最后提取总体主题。
期望格式:公司名:<逗号分隔的公司名列表>人名:-||-特定主题:-||-一般主题:-||-
{此处输入文字}

04 从 zero-shot 开始,然后是 few-shot(例子),如果都不行,再进行微调

✅ zero-shot
从下面的文本中提取关键词。
{此处输入文字}
关键词:
✅ few-shot: 提供几个例子
- 注意:在不同例子中间放了 ##
从下面对应的文本中提取关键词。
文本1:Stripe提供了API,网页开发者可以用来将支付处理集成到他们的网站和移动应用中。关键词1:Stripe,支付处理,API,网页开发者,网站,移动应用##文本2:OpenAI已经训练出了尖端的语言模型,这些模型擅长理解和生成文本。我们的API提供了访问这些模型的途径,可用于解决几乎任何涉及处理语言的任务。关键词2:OpenAI,语言模型,文本处理,API。##文本3:{此处输入文字}关键词3:
✅ 微调:查看微调最佳实践。访问:
https://docs.google.com/document/d/1h-GTjNDDKPKU_Rsd0t1lXCAnHltaXTAzQ8K2HRhQf9U/edit?pli=1#heading=h.rjosulmn5jpq

05 减少「缺乏实质、含糊不清或过于废话」(Fluffy)和不精确的描述

❌ 不好的例子:
这个产品的描述应该相当短,只有几句话,不要太多。
✅ 好的例子:
用 3 到 5 句话来描述这个产品。

06 不只说「不要做什么」,更要说「要做什么」

❌ 不好的例子:
下面是代理和客户之间的一段对话。不要询问用户名或密码。不要重复。
客户:我无法登录我的账户。
代理:
✅ 好的例子:
下面是代理和客户之间的一段对话。代理会试图诊断问题并提出解决方案,同时避免询问任何与个人身份信息相关的问题。代理不应询问像用户名或密码这样的个人身份信息,而是应该引导用户查看帮助文章 www.samplewebsite.com/help/faq。
客户:我无法登录我的账户。代理:

07 代码生成专用 - 使用“引导词”来引导模型往特定模式发展

❌ 不好的例子:
# 编写一个简单的 python 函数# 1. 向我询问一个以英里为单位的数字# 2. 将英里转换为公里

在下面的代码示例中,添加“import”是在暗示模型应该开始用Python编写。(类似地,“SELECT”是SQL语句开始的一个好的提示。)

✅ 好的例子:

# 编写一个简单的 python 函数# 1. 向我询问一个以英里为单位的数字# 2. 将英里转换为公里
import
参数说明
一般来说,我们发现用于改变模型的输出的时候,模型温度是最常用的参数。
1.模型:高性能模型更贵,延迟更高。
2.温度:一个衡量模型有多频繁输出不太可能出现的 token 的指标。换句话说,温度越高,输出越随机(通常也越有创意)。然而,这并不等同于“真实性”。对于大多数事实性用途,如数据提取和真实的问答,0的温度最好。
3.max_tokens最大长度):它不控制输出的长度,而是生成 token 的过程中会进行一个硬性切断。理想情况下,你不会经常达到这个限制,因为模型会在它认为完成时停止生成,或者当它到达你定义的完成标准时停止生成。
4.stop停止序列):一组字符(token),当它们被生成时,将会使文本生成停止。

0