让ChatGPT更智能的Prompt Engineering

学会提问 5个月前 lida
14 0 0

随着LLMs的不断发展和聊天机器人的普及,Prompt Engineering(提示工程)变得越来越重要。特别是,ChatGPT,作为最先进的聊天机器人之一,被广泛应用于各种场景中。本文将介绍Prompt Engineering,以及它对LLMs的重要性和相关应用,有助于大家应用提示工程更高效地利用LLMs解决问题。

一、什么是提示工程

提示工程(Prompt Engineering)是一门最近比较新兴的学科,目标在于开发和优化提示词(Prompt),帮助用户有效地将LMs应用于各种场景和研究领域中。握了提示工程相关技能有助于我们更好地了解LLMs的能力和局限性。

让ChatGPT更智能的Prompt Engineering

研究人员可以利用提示工程来大大提高LLMs处理复杂任务场景的能力,如QA和算术推理等。开发人员可以通过提示工程设计和研发强大的技术,实现与LLMs或其他生态工具的高效连接。

在使用提示时,我们会通过 UI 或 API 与LLMs进行交互,可以通过配置一些参数来获得不同的提示结果。以ChatGPT为例,可以通过配置下面两个参数:

让ChatGPT更智能的Prompt Engineering

Temperature:参数值越小,模型返回越确定的结果。调高该参数值,则LLMs会返回更随机的结果,会带来更多样化或更具创造性的结果。在实际应用方面,为了保障输出的质量,可以设置更低的temperature值,以促使模型基于事实返回更真实和简洁的结果。对于创作类任务,如诗歌生成,可以适当调高 temperature 参数值,使结果更具有多样性。

让ChatGPT更智能的Prompt Engineering

Top p:用来控制模型返回结果的真实性。如果需要准确和事实的答案,可以把该参数值调低。如果想要更多样化的答案,可以把参数值调高一些。

让ChatGPT更智能的Prompt Engineering

实际应用中建议只改变其中一个参数,不用两个都调整。

二、基本概念

2.1 基础提示

我们可以通过简单的提示来获得结果,但结果的质量往往与我们提供信息数量和完善程度有密切关系。

提示可以包含要传递给模型的指令(instruction)或问题(question)等信息,也可以包含其他详细信息,如上下文(context)、输入(inputs)或示例(examples)等。

让ChatGPT更智能的Prompt Engineering

我们可以通过这些元素来更好地指导模型,从而获得更好的结果。

看下面一个简单的示例:

提示:

The sky is

输出:

blue.

The sky is blue on a clear day. On a cloudy day, the sky may be gray or white.

LMs能基于我们给出的上下文内容 The sky is 进行续写。但具有比较强的随机性,可能会得到出乎意料的结果。

我们可以提供更多背景信息或说明来使模型输出更具体的结果。如下所示多提供些信息:

提示:

完善以下句子: The sky is

输出:

The sky is a beautiful and ever-changing canvas above us, with its colors and patterns constantly shifting throughout the day. It can be an endless source of inspiration and wonder, providing us with breathtaking sunsets, majestic clouds, and stunning celestial displays. Whether clear and blue or filled with rain clouds, the sky is an integral part of our environment and a reminder of the vastness and beauty of the world around us.

在明确告诉模型去完善句子后,输出结果的结果就跟我们期望的比较符合了。

提示工程 就是探讨如何设计最佳提示,用于指导LMs帮助我们高效完成某项任务,如文本概括、数学推理、代码生成等。

2.2 提示格式

前面示例中采用的是比较简单的提示。提示可以根据提供信息的类型分为零样本提示(zero-shot prompting)和小样本提示(Few-shot Prompting)。

A) 零样本提示

零样本提示用户不提供任务结果相关的示范,直接提示LMs给出任务相关的回答。其标准格式为:

<问题> ?

<指令>

可以将它们格式化为标准的问答格式:

Q: <问题> ?

A:

需要注意的是:某些LLMs有能力实现零样本提示,但结果取决于任务的复杂度模型已有的知识范围

让ChatGPT更智能的Prompt Engineering

B) 小样本提示

小样本提示是指用户提供少量的提示范例,如任务说明等,然后模型根据这些范例进行输出结果。

让ChatGPT更智能的Prompt Engineering

LMs可以通过一些说明来了解和学习某些任务,小样本提示正好可以利用LMs的上下文学习能力,帮助我们更好地利用LMs的强大能力。其格式如下:

<问题> ?

<答案>

<问题> ?

<答案>

<问题> ?

问答模式即如下:

Q: <问题> ?

A: <答案>

Q: <问题> ?

A: <答案>

Q: <问题> ?

A:

需要说明的是,使用问答模式的提示格式并不是必须的。我们可以根据任务需求调整提示范式。可以按如下示例执行一个简单的分类任务,并对任务做简单说明:

提示:

This is awesome! // Positive

This is bad! // Negative

Wow that movie was rad! // Positive

What a horrible show! //

输出:

Negative

2.3 提示要素

提示可以包含以下任意要素:

指令:想要模型执行的特定任务或指令;上下文:包含外部信息或额外的上下文信息,引导模型更好地响应;输入数据:用户输入的内容或问题;输出指示:指定输出的类型或格式。

最终提示格式取决于我们想要LMs完成的任务类型,无需包含以上所有要素。

三、提示设计技巧

3.1 从简单开始

提示的设计是一个迭代的过程,需要大量尝试中获得最佳结果。因此,我们可以从简单的提示开始,通过不断基于返回的结果逐步优化提示词,不断添加更多的元素和上下文,最终得到满意的结果。

当我们的任务比较复杂时,可以先将任务拆解成多个简单的子任务,然后根据获得的结果不断构建提示词。从而避免了在提示设计过程中一开始就引入过多的复杂性。

3.2 指令

可以使用命令来指示模型执行各种简单任务,如写入分类总结翻译排序等,为简单任务设计有效的提示。

我们还需要进行多次尝试,来选择效果较好的方法。如使用不同的关键字、上下文和数据,配合不同的指令,看看哪种方法最符合我们的目标。

通常,上下文与我们要执行的任务越具体和相关,得到的效果就越好。

这里建议将指令放在提示的开头,并使用较为清晰的分隔符,如###,来分隔指令和上下文。

例如:

提示:

### 指令 ### 将以下文本翻译成西班牙语:文本:“hello!”

输出:

¡Hola!

3.3 具体

通常提示越具体和详细,模型给出的结果就越好。特别是当我们想要输出的结果局按照某种格式输出时,就需要提供更具体的信息。在提示中提供示例,能有效指导模型以特定格式输出结果。

此外,由于各平台对提示有长度限制,因此还需要考虑提示的长度。没必要包含太多不必要的细节。最终,通过大量尝试和迭代,来优化最终结果。

提示:

提取以下文本中的地名。所需格式:地点:<逗号分隔的公司名称列表>输入:“虽然这些发展对研究人员来说是令人鼓舞的,但仍有许多谜团。里斯本未知的香帕利莫德中心的神经免疫学家Henrique Veiga-Fernandes说:“我们经常在大脑和我们在周围看到的效果之间有一个黑匣子。”“如果我们想在治疗背景下使用它,我们实际上需要了解机制。””

输出:

地点:里斯本,香帕利莫德中心

3.4 精确

我们很容易陷入想要过于聪明的提示陷阱,从而设计不太精确的描述。较好的提示是具体和直接的,如同我们人之间沟通时越直接,信息传递就越有效

如下面所示:

提示:

解释提示工程的概念。保持解释简短,只有几句话,不要过于描述。

输出:

提示工程是指利用不同的方法和技巧来设计和改进用户提示,以帮助用户更好地理解和使用软件、应用程序或系统。提示可以是文本、图像、音频或视频等形式,通常用于引导用户完成特定任务或提供关键信息。通过优化提示,可以提高用户体验和产品质量,减少用户的困惑和错误。

从上面的提示中不清楚要使用多少句话、什么样的风格来回答,模型只能给出比较简短的回答。

我们可以通过提供更具体的提示,来让模型给出非常具体、简洁和直接的回答。如:

提示:

使用2~3句话向高中学生解释提示工程的概念。

输出:

提示工程是指在软件、应用程序或系统中使用各种提示来帮助用户更好地理解和使用。这些提示可以是文字、图像、声音或视频等形式,它们通常用于指导用户完成任务或提供关键信息,以提高用户体验和产品质量。

3.5 别说不

设计提示的另一个常见技巧是避免说不要做什么,而是说要做什么

如下是模拟一个电影推荐聊天机器人,因为给的指令是关注于不要做什么,而失败了。

提示:

以下是向客户推荐电影的代理程序。不要询问兴趣。不要询问个人信息。

客户:请根据我的兴趣推荐电影。

代理:

输出:

当然,我很乐意为您推荐电影。您可以告诉我更多关于您兴趣的信息吗,这样我可以更加个性化地为您推荐电影?

以下是更好的提示:

提示:

以下是向客户推荐电影的代理程序。代理负责从全球热门电影中推荐电影。它应该避免询问用户的偏好并避免询问个人信息。如果代理没有电影推荐,它应该回答“抱歉,今天找不到电影推荐。”。顾客:请根据我的兴趣推荐一部电影。客服:

输出:

对不起,我没有任何关于您兴趣的信息。不过,我可以推荐一部全球热门的电影。您可以看看《沙丘》、《尚气与十环传奇》或《007:无暇赴死》。

总结

本文简要介绍了Prompt Engineering技术的基本概念、prompt类型、及其设计技巧和。可以帮助我们更好地利用这种技术来提高对LLMs(如ChatGPT、Sage、Bard等)模型的使用效率,实现更好的结果。

参考文献

[1] George Lawton. prompt engineering. www.techtarget.com/searchenterpriseai/definition/prompt-engineering

[2] OpenAI. ChatGPT Prompt Engineering for Developers. https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers

[3] Cohere AI. Prompt Engineering. https://docs.cohere.com/docs/prompt-engineering

[4] Prompts Lab. Awesome Prompt Engineering. https://github.com/promptslab/Awesome-Prompt-Engineering.git

往期精彩回顾

「AIGC」未来的拍照方式「必看」大佬的学术研究经验指南「刷论文」必读:本周机器学习领域五篇重磅论文「刷论文」推荐系统中的自监督学习(SSR)「刷论文」Yann LeCun:关于自监督学习想知道又不好意思问的知识点都在这里了「系统」推荐系统设计模式:大厂框架解析「刷论文」Large Language Models性能关键因素分析12种机器学习论文「刷论文」小白机器学习避坑指南这就是Transformers结构

版权声明:lida 发表于 2023年7月11日 pm9:37。
转载请注明:让ChatGPT更智能的Prompt Engineering | 666ChatGPT资源导航

相关文章