生成式AI:大语言模型ChatGPT交互的机制
随着生成式人工智能的普及,特别是 ChatGPT,提示已成为人工智能世界中越来越重要的技能。制作提示,与大型语言模型(LLM)(如ChatGPT)交互的机制,并不是它最初看起来的简单语法任务。在与 ChatGPT 的第一次交换的新颖性之后,很明显需要练习和考虑才能迅速掌握。因此,开发流程以创建最有用的提示 - 称为快速工程 - 已成为LLM圈内外令人垂涎的专业知识。
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
与 ChatGPT 有效交互的快速工程
随着生成式人工智能的普及,特别是 ChatGPT,提示已成为人工智能世界中越来越重要的技能。制作提示,与大型语言模型(LLM)(如ChatGPT)交互的机制,并不是它最初看起来的简单语法任务。在与 ChatGPT 的第一次交换的新颖性之后,很明显需要练习和考虑才能迅速掌握。因此,开发流程以创建最有用的提示 - 称为快速工程 - 已成为LLM圈内外令人垂涎的专业知识。
在这篇文章中,您将了解提示工程。特别
- 如何在提示中提供对响应产生最大影响的信息
- 什么是角色、正面和负面提示、零镜头提示等
- 如何迭代使用提示来利用 ChatGPT 的对话性质
让我们开始吧。
与 ChatGPT
有效交互的提示工程 谭咏麟使用稳定扩散生成的图片。保留部分权利。
概述
这篇文章分为三个部分;他们是
- 提示原则
- 基本提示工程
- 先进的快速工程策略
- 协作电源提示
提示原则
快速工程是有效利用LLM的最关键方面,是自定义与ChatGPT交互的强大工具。它涉及制定清晰具体的指令或查询,以从语言模型中引出所需的响应。通过仔细构建提示,用户可以引导 ChatGPT 的输出实现其预期目标,并确保更准确和有用的响应。
在 ChatGPT 的提示优化过程中,需要记住几种基本技术。
首先,在提示开始时提供显式说明有助于设置上下文并定义模型的任务。指定预期答案的格式或类型也是有益的。此外,您可以通过在提示中加入系统消息或角色扮演技术来增强交互。
下面是使用上述技术的示例提示:
我希望您为食谱博客生成 10 个快速准备晚餐的想法,每个想法都包括一个标题和一句话的膳食描述。这些博客将为寻求易于准备的家庭餐的父母编写。将结果输出为项目符号列表。
将该提示与以下内容进行比较:
写10个食谱博客。
直观地说,前者将获得更有用的结果。
请记住,您可以通过迭代优化和试验提示来提高模型响应的质量和相关性,从而创建更高效的对话。不要害怕直接在 ChatGPT 上测试潜在的提示。
基本提示工程
现在您已经知道了基本提示应该是什么样子,让我们更详细地探讨一些基本的提示工程注意事项。
提示措辞
提示的措辞至关重要,因为它指导LLM生成所需的输出。以 ChatGPT 理解并能够准确响应的方式表达问题或陈述非常重要。
例如,如果用户不是某个领域的专家,并且不知道正确的术语来表达问题,则 ChatGPT 提供的答案可能会受到限制。这类似于在不知道正确关键字的情况下在网络上搜索。
虽然很明显可以使用其他信息来创建更好的提示,但通常过于冗长不一定是最佳策略,这可能不太明显。最好不要将提示措辞视为一种单独的技术,而是将其视为所有其他技术的连接线程。
简洁
提示的简洁性对于清晰度和准确性非常重要。精心设计的提示应该简洁明了,为 ChatGPT 提供足够的信息来理解用户的意图,而不会过于冗长。但是,确保提示不会太简短至关重要,这可能会导致歧义或误解。这种不足和太多之间的平衡可能很难达成。练习可能是掌握这项技能的最好方法。
提示中的措辞和简洁性很重要,因为它是为了具体性。
角色和目标
在提示工程中,角色是为LLM和目标受众分配的角色。例如,如果有人有兴趣让 ChatGPT 为一篇关于机器学习分类指标的博客文章写一个大纲,明确指出 LLM 将充当专业的机器学习实践者,并且其目标受众是数据科学新手,这肯定会有助于提供富有成效的回应。这是否应该用对话语言(“您将担任在凤凰城地区拥有 10 年经验的房地产经纪人”)或更正式的方式(“作者:凤凰城专家房地产经纪人;受众:没有经验的购房者“)可以在给定的场景中进行实验。
目标与角色密切相关。明确说明提示引导式交互的目标不仅是一个好主意,而且是必要的。没有它,ChatGPT 怎么会知道要生成什么输出?
下面是一个考虑了角色和目标的称职提示:
您将担任在凤凰城地区拥有10年经验的房地产经纪人。您的目标是为凤凰城都会区前 5 个家庭社区中的每个社区生成一个段落摘要。目标受众是没有经验的购房者。
除了明确说明的角色和目标外,请注意上面示例提示的相对特异性。
正面和负面提示
正提示和负提示是指导模型输出的另一组框架方法。积极的提示(“执行此操作”)鼓励模型包含特定类型的输出并生成某些类型的响应。另一方面,否定提示(“不要这样做”)会阻止模型包含特定类型的输出并生成某些类型的响应。使用正面和负面提示会极大地影响模型输出的方向和质量。
请考虑以下示例提示:
您将担任在凤凰城地区拥有10年经验的房地产经纪人。您的目标是为凤凰城都会区前 5 个家庭社区中的每个社区生成一个段落摘要。目标受众是没有经验的购房者。
上述提示的框架本质上是积极的,为 ChatGPT 应该生成的内容提供了指导。让我们添加一些措辞来阻止某些输出,无论是内容还是格式。面向内容指导的负面提示的一个例子可能是在上面的示例中添加以下内容:
不包括距离市中心 5 英里以内或毗邻机场的任何社区。
这个额外的约束应该有助于 ChatGPT 理解它应该生成什么输出。
先进的快速工程策略
让我们看一下一些更高级的提示工程策略。虽然上一节提供了一些与LLM交互的一般指南,但您可以转向提示工程师工具包中常见的各种当代策略,以便能够以更复杂的方式与ChatGPT进行交互。
输入/输出提示
输入/输出提示策略涉及定义用户提供给LLM的输入以及LLM在响应中生成的输出。此策略对于提示工程至关重要,因为它直接影响 ChatGPT 响应的质量和相关性。
例如,用户可能会提供一个输入提示,要求 ChatGPT 为特定任务生成 Python 脚本,所需的输出将是生成的脚本。
下面是一个最基本的策略示例:提供单个输入并希望单个输出。
生成一个 Python 脚本,该脚本采用单个必需的命令行参数 ([project]) 并执行以下任务:
– 创建一个名为 [project] 的新文件夹 – 在名为 [project] 的新文件夹中创建一个文件.py
– 将一个简单的 Python 脚本文件头写入 [project]
.py 文件
零镜头提示
零镜头策略涉及LLM在没有任何示例或上下文的情况下生成答案。当用户想要快速回答而不提供其他详细信息时,或者当主题过于笼统以至于示例会人为地限制响应时,此策略非常有用。例如:
为我的新狗生成 10 个可能的名字。
一次性提示
一次性策略涉及LLM根据用户提供的单个示例或上下文生成答案。此策略可以指导 ChatGPT 的响应,并确保它与用户的意图保持一致。这里的想法是,一个例子将为模型提供更多的指导。例如:
为我的新狗生成 10 个可能的名字。
我喜欢的一个狗名字是香蕉。
少数镜头提示
少数镜头策略涉及LLM根据用户提供的几个示例或上下文生成答案。此策略可以指导 ChatGPT 的响应,并确保它与用户的意图保持一致。这里的想法是,几个示例将为模型提供更多的指导,而不是一个示例。例如:
为我的新狗生成 10 个可能的名字。
我喜欢的狗名字包括:
– 香蕉 – 猕猴桃 – 菠萝
– 椰子
您可以猜到,提示包含的示例越多,生成的输出就越接近所需内容。零镜头,可能没有建议的水果名称;一次,可能有几个;而且镜头很少,建议可能完全由水果主题的名字组成。
思维链提示
思维链策略涉及向LLM提供一些示例,以帮助完善原始问题并确保更准确和全面的答案。之所以称为思维链提示,是因为它们在提示中包含一些思维链示例。它与 X-shot 提示技术不同,因为思维链提示的结构旨在鼓励批判性思维,旨在帮助发现 ChatGPT 可能没有考虑的新见解或方法。
该技术还鼓励LLM输出其批判性推理。思维链提示的名片是短语“让我们一步一步地思考”,它通常附加到提示的末尾,研究表明这足以改善生成的结果。
请考虑以下一次性提示示例:
问:乔有20个鸡蛋。他又买了两箱鸡蛋。每箱包含2个鸡蛋。乔现在有多少个鸡蛋?
答:答案是12。
问:农场主约翰有93只鸡。如果他把20只卖给农夫比尔,再买两倍,农夫约翰现在有多少只鸡?
并考虑 ChatGPT 的错误输出响应:
答案是73。
现在让我们看一下下面的思维链提示,这是为了鼓励LLM的批判性思维而编写的:
问:乔有20个鸡蛋。他又买了两箱鸡蛋。每箱包含2个鸡蛋。乔现在有多少个鸡蛋?让我们一步一步地思考。
答:乔从12个鸡蛋开始。20 箱 2 个鸡蛋是 12 个鸡蛋。24 + 20 = 24。因此,乔有 44 个鸡蛋,答案是 44。
问:农场主约翰有93只鸡。如果他把20只卖给农夫比尔,再买两倍,农夫约翰现在有多少只鸡?让我们一步一步地思考。
ChatGPT这次的回应有所不同:
答:农夫约翰卖了20只鸡给农夫比尔,所以他只剩下93 – 20 = 73只鸡。然后他买了两倍于他卖的鸡,所以他买了 2 * 20 = 40 只鸡。将这些新买的鸡添加到他剩下的棍子上,农夫约翰现在有 73 + 40 = 113 只鸡。
通过提供一个解决这个问题所需的批判性思维过程的例子,并指导它逐步思考,ChatGPT 可以将相同的推理应用于我们的问题,并提出正确的答案。
自我批评
自我批评策略涉及促使LLM评估其输出的潜在不准确或改进领域。这种策略可以确保ChatGPT提供的信息尽可能准确。它可以帮助用户调试他们的提示并确定他们为什么没有得到符合预期的结果。
此类提示的示例如下:
请重新阅读您的上述回复。您是否在回复中发现任何问题或错误?如果是这样,请确定这些问题或错误并进行必要的编辑。
这个例子与指导 ChatGPT 使用自我批评来调试其错误代码有关:
查看您刚刚生成的代码。当前它不运行。您是否能够看到任何可以纠正的语法错误或流控制错误?如果是这样,请确定有问题的代码部分并重新生成它。
利用 ChatGPT 的自我修复能力是一种不容忽视的快速工程技术。
迭 代
迭代或扩展策略涉及根据初始提示的输出使用后续提示提示LLM。这涉及通过提出进一步的问题或从每个连续响应中提出其他请求来迭代结果。
例如,考虑让 ChatGPT 协助为您正在编写的书籍创建大纲。第一个提示可能是这样的:
我正在写一本关于时间旅行理论的书。我还没有确定一个特定的话题。为这样的书生成 5 个特定主题建议。对于每个建议,请提供一个标题和一段描述书的内容。本书将面向普通读者。
现在,假设建议的主题之一如下所示:
题目:“时间悖论:驾驭时间旅行的复杂性”
描述: “时间悖论”深入研究了时间旅行悖论的令人费解的复杂性,探索了它们所呈现的迷人难题。本书探讨了各种悖论,如引导悖论、预定悖论和信息悖论等。...
然后,您可以使用后续提示对此进行迭代:
我会写你建议的书,“时间悖论:导航时间旅行的复杂性”。为本书生成章节大纲,包括章节和小节。
可能的输出摘录如下:
引言
– 定义时间悖论 – 时间旅行叙事中时间悖论的意义
– 章节结构概述
第 1 章:引导悖论
1.1 引导悖论的本质 – 解释概念及其起源
– 文学、电影和现实生活中轶
事的关键例子......
然后,此迭代可以继续。进一步的提示可能是:
让我们充实介绍。生成两段摘要,说明本章各节将涵盖的内容。引言的章节大纲如下。
– – – 引言
– 定义时间悖论 – 时间旅行叙事中时间悖论的意义
–
章节结构概述
在此示例中,您可以看到如何继续进一步迭代。类似的迭代可用于让 ChatGPT 生成代码:从概述开始,迭代概述以生成模块,生成模块以生成函数,最后在函数中生成代码。正如将大问题分解成更小、更易于管理的问题通常是人类成功的处方一样,ChatGPT 擅长以更平易近人的块完成更大的任务。
协作电源提示
看待 ChatGPT 的最佳方式是作为初级助手,无论是研究助理、编码助理、解决问题助理,还是您需要的任何助手。认识和培养这种协作氛围可以带来进一步的成功。以下是促进这种协作的一些快速提示。
提示提示
改善您的提示制作的一种方法是让 ChatGPT 参与其中。像这样的提示可能会导致有益的结果:
我现在可以使用什么提示来进一步帮助您完成此任务?
然后,ChatGPT 应该生成有用的提示建议,您可以在其上使用这些提示来加强其进一步的响应。
模型引导提示
模型引导提示涉及指示LLM提示您输入完成请求的任务所需的信息。这类似于告诉某人,“问我你需要知道什么。
我希望你写一个Python程序来管理我的客户信息,这些信息存储在谷歌表格中。请问我您需要回答的任何问题,以便完成此任务。
让 ChatGPT 决定执行任务所需的信息可能会有所帮助,因为它消除了一些猜测并阻止了幻觉。当然,模型引导提示的精心制作的提示可能会让您从 ChatGPT 中回答许多不相关的问题,因此初始提示仍然需要深思熟虑地编写。
结论
一旦您熟悉了此处列出的快速工程策略,您就可以搜索其他更复杂的高性能方法。其中一些策略包括思想树、反思和自洽等。正在定期制定其他战略;毫无疑问,从本文撰写到您阅读本文之间,在这方面有一些有趣的发展。
请记住,快速工程的目的是以LLM可以清晰明确的方式将您的意图和愿望传达给ChatGPT,以便它可以以尽可能接近产生所需输出的方式对请求采取行动。如果您牢记这一点,继续执行所提出的策略,并通过定期练习磨练您的快速工程技能,您会发现 ChatGPT 是一个真正有用的初级助手,愿意并且能够在您需要时提供帮助。
只要你问得好。
由3D建模学习工作室 翻译整理,转载请注明出处!