本节是对前面章节介绍的提示内容简要的总结,从而加深对ChatGPT工作机制的了解,并学习一些通用的提示设计技巧。
通过语言模型的预测能力,ChatGPT可以生成连贯的回复,从而使对话更加自然流畅。图6-2展示了ChatGPT的工作机制。
图6-2 ChatGPT工作机制
1.文本预处理
文本预处理是指使用句子分割、词令牌化、词干提取、停止词删除、拼写纠正等技术清理文本。预处理的目的是将粗糙文本转换为模型可直接消化的格式,高质量的预处理对于很多自然语言处理任务来说是至关重要的,可以显著提高模型的准确性与效果。
2.编码/嵌入
将文本中的词汇、短语与句子映射为实数向量,以便计算机可以处理。作为离散符号的语言元素需要被转化为模型可以识别的格式,常转换为向量或张量格式的数据。
3.输入模型
将编码后的输入传入模型进行处理,实际上就是将编码所得的向量或张量赋值给模型参数。
4.生成预测结果
语言模型的输出结果为“单词可能性概率分布”,提供了语言模型对下一单词的预测与判断。可以使用第5章中介绍的temperature、top_p、max_tokens等参数控制输出的结果。
5.解码及数据处理
解码是第2步中编码的逆过程,将模型输出的数字向量还原为人类可理解的语言格式。数据处理通过诸如拼写检查、语法检查、修改标点符号等手段来进一步提高模型生成语言的准确性和流畅性。
设计高质量的提示是一个迭代的过程,需要进行大量的实验和比较以发现最优的方案。可以从简单的提示开始,逐步丰富和扩展,这是一个逐渐权衡的过程。如果一开始就考虑太多复杂因素,容易迷失方向,无法做出明智的选择。因此,采用渐进的方式进行交互是一个良好的起点。以下将以简单修改的方式构建基于5.2.3节的提示内容,以实现从简单内容开始的提示方式。
提示的内容如下(使用GPT-3.5模型)。
指令:你是我的专家助手,职责是根据我的需求完成相关任务
上下文:
1.你和我进行交互对话,直到我发出<停止>命令,响应内容由以下三部分组成。
1.1提示:{根据我的需求生成3个解决思路}
1.2评论:{提供3个如何改进提示的简洁说明}
1.3问题:{提供改进提示的3个问题,特别是某些专业领域需要更多细节}
输入数据:无
输出指示:第一次对话只询问要完成什么任务
ChatGPT最开始只询问了要完成什么任务。
ChatGPT的回答如下。
好的,让我们开始吧。请告诉我你需要完成什么任务,我将尽力根据你的需求为你提供支持。
继续对话,告诉ChatGPT要对一份数据判断是否符合正态分布。
提示的内容如下(使用GPT-3.5模型)。
我没有统计学基础,但我需要判断一份数据是否符合正态分布。
ChatGPT给出了3个解题思路,并给出了3个可能存在的问题,可以以这些问题为基础拓展到下一次对话中。
ChatGPT的回答如下。
明白了,你需要判断一份数据是否符合正态分布,但是你没有统计学基础。以下是我为你准备的3个解题思路,帮助你完成任务。
使用直方图和Q-Q图:绘制数据的直方图并生成Q-Q图。如果数据分布呈正态分布,则直方图应该类似于钟形曲线,并且Q-Q图的点应该沿着对角线分布。如果数据分布不是正态分布,则直方图和Q-Q图的点可能会显示偏斜或偏离对角线。
使用正态概率图:正态概率图是一种将数据绘制在横坐标为标准正态分布的分位数上的图形。如果数据符合正态分布,则数据点应该沿着一条直线分布。如果数据分布不是正态分布,则数据点将偏离这条直线。
使用Shapiro-Wilk检验:Shapiro-Wilk检验是一种用于检验数据是否符合正态分布的统计方法。这个方法需要一定的统计学基础,但是你可以使用在线工具来进行计算。如果p值小于显著性水平(通常是0.05),则可以拒绝原假设(数据不符合正态分布)。
以下是3个问题,可帮助你更好地了解这些解决思路。
如何绘制直方图和Q-Q图,你需要哪些软件或工具?
如何理解正态概率图,如何绘制正态概率图?
什么是Shapiro-Wilk检验,如何进行Shapiro-Wilk检验?
继续对话中选择了上一步ChatGPT给出的一个解题思路,并向ChatGPT询问如何使用Excel实现这个思路。
提示的内容如下(使用GPT-3.5模型)。
如何使用Excel绘制Q-Q图?
在ChatGPT的回答中,详细说明了如何使用Excel绘制Q-Q图,以判断一份数据是否符合正态分布。如果还有不理解的地方可以继续提问,直到达到我们的要求。
ChatGPT的回答如下。
在Excel中,你可以使用散点图来绘制Q-Q图。以下是绘制Q-Q图的步骤。
打开Excel并导入数据。
选择数据列并计算每个数据点的正态分布分位数。
在Excel中打开“插入”选项卡并选择“散点图”。然后,选择“散点图与平滑线”。
将正态分布分位数作为横轴,将原始数据点作为纵轴,并绘制散点图。
在散点图上添加一条对角线,以帮助确定数据点的分布情况。你可以选择“设计”选项卡中的“添加图表元素”,然后选择“趋势线”并添加一条“线性趋势线”。
查看散点图,如果数据点沿着对角线分布,则说明数据符合正态分布。
请注意,你需要先计算每个数据点的正态分布分位数,然后才能绘制Q-Q图。Excel提供了一些函数,如“STANDARDIZE”和“QUARTILE.INV”函数,可以用于计算正态分布分位数。
设计出色的提示需要作者在知识储备、技术方法、语言表达方面都达到一定水准,这需要投入大量时间进行实践、总结和提升。因此,对于提示的设计和优化,需要不断学习和提升自己,不断探索和实践,以提供最佳的用户体验和交互效果。
1.建议
构建良好的提示内容需要考虑语境,避免模棱两可。为了表达清晰,建议如下。
(1)把握提示的目的和意图
为了保证一个好的提示内容,必须明确地为语言模型指明需要完成的目标或任务。如果意图不清晰,很容易产生理解偏差和歧义。
(2)采用清晰和具体的表达
为了确保语言模型能够准确理解提示内容,需要避免使用抽象、笼统或模糊的词汇和表达方式。这样的表达可能会给语言模型带来理解上的障碍,甚至导致误读或错误的生成结果。
(3)根据语境提供足够的信息
为了确保语言模型能够准确理解提示内容,需要提供足够的语境信息,以帮助模型理解当前的任务环境和所需完成的事项。缺乏语境信息可能会导致提示内容显得突兀或难以理解。
(4)避免否定式和复杂的表达
在设计提示内容时,最好采用肯定和简洁的表达方式。否定式表达容易引起理解上的歧义,而复杂的表达方式则增加了语言模型的理解难度。
2.例子
以下提示内容是基于一个关于歧义语境的笑话改写的,用于测试ChatGPT是否能够发现其中歧义的原因。
提示的内容如下(使用GPT-3.5模型)。
如何理解这句话:
甲让乙去买4个包子,看到西瓜就买2个。乙买回来2个包子,并且甲很满意。
要理解其中的歧义,就需要提供更完善的上下文以便ChatGPT理解。
ChatGPT的回答如下。
这句话可能存在一些歧义,但是根据字面理解,乙只买回来2个包子并不符合甲的要求。根据甲的指示,乙应该去买4个包子,如果看到西瓜,那就买2个。因此,如果乙只买回来了2个包子,那么他就没有完全满足甲的要求。但是,如果甲对乙只买回来2个包子表示满意,那么可能存在以下一些情况。
甲的指示中并没有强调必须买回4个包子,而只是强调了如果看到西瓜,就需要买2个西瓜。这种情况下,乙只买回来2个包子可能就是符合甲的要求的。
甲可能对乙只买回来2个包子感到满意,是因为乙同时还买回了2个西瓜,达成了甲的要求。如果乙买回了4个包子和2个西瓜,那么甲可能会更满意。
需要进一步澄清才能确定具体情况。
以下提示内容是另一个有歧义的例子,歧义点是作者被批评还是作者批评了很多人。
提示的内容如下(使用GPT-3.5模型)。
如何理解这句话:
他在某杂志生活栏目上发表的那篇关于饮食习惯与健康的文章,批评的人很多。
ChatGPT的回答中分析了歧义的原因,我们需要给出更明确的表述,以避免ChatGPT给出偏离目标的回答。
ChatGPT的回答如下。
这句话可以理解为:
1.他发表了一篇关于饮食习惯与健康的文章;
2.这篇文章发表在某杂志的生活栏目上;
3.很多人对这篇文章进行了批评。
从这句话中我们可以推测出,这篇文章可能存在一些有争议的观点或信息,引起了批评者的不满或反对。这句话的语境并没有具体指出文章的作者是否被批评或文章中存在什么具体问题,因此具体情况需要根据其他上下文来进一步理解。