8. 万字解读ChatGPT提示词最佳案例

👏

万字解读ChatGPT提示词最佳案例 👏 万字解读ChatGPT提示词最佳案例 Modified May 15, 2024 想象一下,我们有很多关于电影的文本,每个文本都可以被转换成一个向量并存储起来。当用户问一个关于电影的问题时,我们可以把这个问题也转换成一个向量,然后在向量空间中搜索最接近这个向量的文本向量,找到最相关的文本块,然后从中获取信息来回答用户的问题。 简单来说,就是模型可以借助外部信息来更好地回答问题,而文本嵌入是一种帮助我们在海量文本中迅速找到相关信息的聪明方法。这样一来,我们就能让模型变得更聪明,能够根据背景信息做出更准确的回应了。 解读 这里更加适合 程序开发人员 来实践该案例,这边我们来举个例子来理解: 假设,我们有一个关于电影的大型文本数据库,其中包含了各种电影的详细信息,如演员、导演、剧情等。现在,用户想知道关于某部特定电影的信息。通过将用户的查询嵌入到一个向量中,并与数据库中的电影信息进行向量搜索,我们可以迅速找到与用户查询最相关的电影信息。例如,如果用户询问“由莱昂纳多·迪卡普里奥主演的电影”,系统可以迅速检索到与这个查询最相关的电影信息,如《泰坦尼克号》、《盗梦空间》等。 要实现这个案例,需要结合几个关键技术和步骤: 1. 文本嵌入工具:首先,您需要一个能够将文本转化为向量的工具,例如Word2Vec、BERT、FastText等。这些工具可以将文本转化为高维空间中的向量。 2. 构建电影数据库:您需要一个包含各种电影详细信息的数据库。这个数据库可以是一个简单的文本文件,每行包含一个电影的信息,或者是一个更复杂的数据库系统。 3. 预处理和嵌入:将数据库中的每部电影的信息进行文本嵌入,得到每部电影的向量表示,并存储这些向量。 4. 查询处理:当用户提出查询时,例如“由莱昂纳多·迪卡普里奥主演的电影”,您需要将这个查询进行文本嵌入,得到一个查询向量。 5. 向量搜索:使用某种快速的向量搜索算法(例如余弦相似度、KNN搜索等)在电影数据库中找到与查询向量最接近的电影向量。 6. 返回结果:根据找到的最接近的电影向量,从数据库中检索相关的电影信息,并返回给用户。 7. 集成到ChatGPT:您可以将上述步骤封装成一个API或函数,并在ChatGPT的对话逻辑中调用它,以便当用户提出相关查询时,ChatGPT可以调用这个API或函数并返回相关的电影信息。 这只是一个高级的概述,实际实现可能会涉及更多的细节和技术挑战。但基本的思路是将文本嵌入技术与向量搜索结合起来,以实现高效的知识检索。 策略2:使用代码执行进行更精确的计算或调用外部API 适用人群:熟练者、程序开发人员 难度:🌟🌟🌟 备注:虽然这里的策略出现了 代码 的字眼,但是不仅仅只有 程序开发人员 才可以用,熟练者 即使不了解编程,我相信在掌握之前提及的知识后,也可以相对容易地使用该策略的。 我们不能依赖GPT自己精确地进行算术或长时间的计算。在需要的情况下,可以指导模型编写和运行代码,而不是自己进行计算。特别是,可以指导模型将要运行的代码放入特定格式,如三重反引号。在产生输出后,可以提取并运行代码。最后,如果必要,可以将代码执行引擎(如Python解释器)的输出作为模型下一次查询的输入。 Code block Bash Copy SYSTEM 你可以通过将代码包含在三重反引号中来编写和执行Python代码,例如 ` ` 警告:执行由模型产生的代码本质上并不安全,任何希望执行此操作的应用都应该采取预防措施。特别地,需要一个沙箱化的代码执行环境来限制不受信任的代码可能导致的危害。 解读 这个策略描述了在需要进行复杂计算时,如何正确地使用GPT模型。 GPT模型有以下几个特点: • GPT模型本身不能被完全依赖来准确地执行算术或长时间的计算。 • 在需要这样的计算时,可以指导模型编写并运行代码,而不是让模型自己进行计算。 • 特别地,可以指导模型将要运行的代码放入一个指定的格式中,例如使用三个反引号(backticks)。 • 代码产生的输出可以被提取并运行。 • 如果需要,代码执行引擎(例如Python解释器)的输出可以作为输入提供给模型,以供下一个查询使用。 我们再结合一个案例来理解: 假设你想知道1000以内的所有质数。直接询问GPT可能不会得到完整或准确的答案(当遇到不稳定的计算情况,都可以使用该策略)。但你可以这样做: 1、请GPT编写一段代码。 编写代码时,使用GPT 3.5 / GPT 4 都可以,GPT 4写复杂代码的能力更强。 2、开启新的对话,把代码作为输入给到模型。 在执行代码时,建议使用 GPT 4 的 代码解释器 来提问。 3、输入指定数字,让模型充当代码执行器来运行代码。并得出了完整且正确的答案。 大家看见没,即使我们不懂编程知识,但是我们可以利用该策略生成一段代码, 并且结合GPT 4提供的 代码解释器 来执行代码,就可以拿到更加准确的答案。毕竟规规矩矩的代码是比 偶尔犯傻 的GPT模型,在计算负责逻辑的场景时更加靠谱呀。 那对于 程序开发人员 的辅助作用就更大了。我相信优秀的程序员可以玩出花来! 效果一般,好吧,我承认我还不够优秀,哈哈。 最佳实践6 系统地测试变更 适用人群: 熟练者、程序开发人员 难度: 🌟🌟🌟🌟 如果您利用完整的用例场景来测试,这样模型就会更加健壮,也更能满足用户的需求。需要注意的是,有时改动一点点内容可能在某些单独的测试用例里表现得很好,但如果使用更多的例子来看,可能整体效果并不好。所以,为了确保改动真的有帮助,您可能需要一个 完整的测试案例 来评估。 想象一下,我们有很多关于电影的文本,每个文本都可以被转换成一个向量并存储起来。当用户问一个关于电影的问题时,我们可以把这个问题也转换成一个向量,然后在向量空间中搜索最接近这个向量的文本向量,找到最相关的文本块,然后从中获取信息来回答用户的问题。 简单来说,就是模型可以借助外部信息来更好地回答问题,而文本嵌入是一种帮助我们在海量文本中迅速找到相关信息的聪明方法。这样一来,我们就能让模型变得更聪明,能够根据背景信息做出更准确的回应了。 解读 这里更加适合 程序开发人员 来实践该案例,这边我们来举个例子来理解: 假设,我们有一个关于电影的大型文本数据库,其中包含了各种电影的详细信息,如演员、导演、剧情等。现在,用户想知道关于某部特定电影的信息。通过将用户的查询嵌入到一个向量中,并与数据库中的电影信息进行向量搜索,我们可以迅速找到与用户查询最相关的电影信息。例如,如果用户询问“由莱昂纳多·迪卡普里奥主演的电影”,系统可以迅速检索到与这个查询最相关的电影信息,如《泰坦尼克号》、《盗梦空间》等。 要实现这个案例,需要结合几个关键技术和步骤: 1. 文本嵌入工具:首先,您需要一个能够将文本转化为向量的工具,例如Word2Vec、BERT、FastText等。这些工具可以将文本转化为高维空间中的向量。 2. 构建电影数据库:您需要一个包含各种电影详细信息的数据库。这个数据库可以是一个简单的文本文件,每行包含一个电影的信息,或者是一个更复杂的数据库系统。 3. 预处理和嵌入:将数据库中的每部电影的信息进行文本嵌入,得到每部电影的向量表示,并存储这些向量。 4. 查询处理:当用户提出查询时,例如“由莱昂纳多·迪卡普里奥主演的电影”,您需要将这个查询进行文本嵌入,得到一个查询向量。 5. 向量搜索:使用某种快速的向量搜索算法(例如余弦相似度、KNN搜索等)在电影数据库中找到与查询向量最接近的电影向量。 6. 返回结果:根据找到的最接近的电影向量,从数据库中检索相关的电影信息,并返回给用户。 7. 集成到ChatGPT:您可以将上述步骤封装成一个API或函数,并在ChatGPT的对话逻辑中调用它,以便当用户提出相关查询时,ChatGPT可以调用这个API或函数并返回相关的电影信息。 这只是一个高级的概述,实际实现可能会涉及更多的细节和技术挑战。但基本的思路是将文本嵌入技术与向量搜索结合起来,以实现高效的知识检索。 策略2:使用代码执行进行更精确的计算或调用外部API 适用人群:熟练者、程序开发人员 难度:🌟🌟🌟 备注:虽然这里的策略出现了 代码 的字眼,但是不仅仅只有 程序开发人员 才可以用,熟练者 即使不了解编程,我相信在掌握之前提及的知识后,也可以相对容易地使用该策略的。 适用人群:熟练者、程序开发人员 难度:🌟🌟🌟 备注:虽然这里的策略出现了 代码 的字眼,但是不仅仅只有 程序开发人员 才可以用,熟练者 即使不了解编程,我相信在掌握之前提及的知识后,也可以相对容易地使用该策略的。 我们不能依赖GPT自己精确地进行算术或长时间的计算。在需要的情况下,可以指导模型编写和运行代码,而不是自己进行计算。特别是,可以指导模型将要运行的代码放入特定格式,如三重反引号。在产生输出后,可以提取并运行代码。最后,如果必要,可以将代码执行引擎(如Python解释器)的输出作为模型下一次查询的输入。 代码执行的另一个好用途是调用外部API。如果模型在API的正确使用上得到了指导,它就可以编写使用这个API的代码。可以通过向模型提供文档和/或代码示例来指导模型如何使用API。 警告:执行由模型产生的代码本质上并不安全,任何希望执行此操作的应用都应该采取预防措施。特别地,需要一个沙箱化的代码执行环境来限制不受信任的代码可能导致的危害。 解读 这个策略描述了在需要进行复杂计算时,如何正确地使用GPT模型。 GPT模型有以下几个特点: • GPT模型本身不能被完全依赖来准确地执行算术或长时间的计算。 • 在需要这样的计算时,可以指导模型编写并运行代码,而不是让模型自己进行计算。 • 特别地,可以指导模型将要运行的代码放入一个指定的格式中,例如使用三个反引号(backticks)。 • 代码产生的输出可以被提取并运行。 • 如果需要,代码执行引擎(例如Python解释器)的输出可以作为输入提供给模型,以供下一个查询使用。 我们再结合一个案例来理解: 假设你想知道1000以内的所有质数。直接询问GPT可能不会得到完整或准确的答案(当遇到不稳定的计算情况,都可以使用该策略)。但你可以这样做: 1、请GPT编写一段代码。 编写代码时,使用GPT 3.5 / GPT 4 都可以,GPT 4写复杂代码的能力更强。 编写代码时,使用GPT 3.5 / GPT 4 都可以,GPT 4写复杂代码的能力更强。 2、开启新的对话,把代码作为输入给到模型。 在执行代码时,建议使用 GPT 4 的 代码解释器 来提问。 在执行代码时,建议使用 GPT 4 的 代码解释器 来提问。 3、输入指定数字,让模型充当代码执行器来运行代码。并得出了完整且正确的答案。 大家看见没,即使我们不懂编程知识,但是我们可以利用该策略生成一段代码, 并且结合GPT 4提供的 代码解释器 来执行代码,就可以拿到更加准确的答案。毕竟规规矩矩的代码是比 偶尔犯傻 的GPT模型,在计算负责逻辑的场景时更加靠谱呀。 那对于 程序开发人员 的辅助作用就更大了。我相信优秀的程序员可以玩出花来! 效果一般,好吧,我承认我还不够优秀,哈哈。 最佳实践6 系统地测试变更 适用人群: 熟练者、程序开发人员 难度: 🌟🌟🌟🌟 适用人群: 熟练者、程序开发人员 难度: 🌟🌟🌟🌟 如果您利用完整的用例场景来测试,这样模型就会更加健壮,也更能满足用户的需求。需要注意的是,有时改动一点点内容可能在某些单独的测试用例里表现得很好,但如果使用更多的例子来看,可能整体效果并不好。所以,为了确保改动真的有帮助,您可能需要一个 完整的测试案例 来评估。 测试数据: 这是一个没有满足任何要点的输入示例: 下面是更深入的官方演示案例: 这种基于模型的评估方法有很多不同的变化。想象一下,我们在评估一个问题的候选答案时,会考虑很多不同的情况。比如,我们会看 候选答案与 专家标准答案 有多大程度的相似,还会考虑候选答案是否与 专家标准答案 的任何部分相矛盾。这些都是评估方法的不同方面。 测试数据如下: 这是一个输入例子,其中的答案质量较差: 这是一个有好答案的输入示例: 解读 官方提供了两种不同的场景,一种是与标题答案进行对比,另外一种则是考虑两者之间的重叠和矛盾,更加全面的评估模型的表现。 我个人认为,这两种方式可以帮助 程序开发人员 从以下几点中获益: 1. 深入的评估:不仅仅是简单地比较模型输出与专家标准答案,还要考虑两者之间的重叠和矛盾,从而更全面地评估模型的表现。 2. 发现细微差异:通过跟踪重叠和矛盾,可以更容易地发现模型输出中的细微差异和潜在问题。 3. 提高模型的准确性和可靠性:确保模型的输出不仅与专家标准答案相符,而且不与其矛盾,从而提高模型的准确性和可靠性。 通过这种评估方法,开发者可以更加深入地了解模型的表现,确保其输出既准确又可靠。进而可以考虑是否进行优化。这一种非常好的测试手段。 总结 在当下,掌握提示词的技巧,利用提示词帮助我们如何与机器互动,让AI给我们提供真正的业务价值,是每一个人都需要思考的问题。 接下来的课程里,我会介绍更加复杂的结构化提示词,用于解决复杂的业务场景,那如果我们了解提示词最佳实践的相关知识,将帮助我们更好地理解 结构化提示词 的价值。 欢迎大家与我沟通和讨论,相信AI学习之路我们可以成为朋友,如果这篇文章有帮助,帮忙点个赞,谢谢各位啦。 • 本文作者:群友 @熊猫Jay (公众号 熊猫Jay字节之旅) • 原文:万字解读ChatGPT提示词最佳案例 万字解读ChatGPT提示词最佳案例 • LangGPT 社区推荐语:关于 OpenAI 官方最佳实践指南中文翻译版本很多,本文可贵之处在于作者融入了自己的实践和思考,值得一读。同时需要指出,相比官方完整版内容,本文内容有所缺失,建议对照学习。 介绍 大家好,我是熊猫Jay,许多小伙伴向我反馈,虽然知道很多提示词模版,但关于提示词的基本最佳实践仍然不够清晰。令人惊讶的是,即使有一些小伙伴 使用GPT近半年,在与我交流后,我发现他们实际上并没有深入研究这些最佳实践,导致他们在提出问题和优化提示词的时候还是摸不着头脑。 这篇文章是写给对于提示词最佳实践了解一般的新手小伙伴们,大佬们可以忽略啦。 文章也被多位大佬们所鼓励和推荐,非常感谢他们: 其次,我会针对 不同的策略实际测试一些案例,帮助大家更快地理解这些最佳实践。大家不用担心自己无法理解官方的术语,或者长篇大论的内容,针对比较 难以理解的最佳实践,我会进行 解读和案例的说明。并且,我在每个最佳实践下,我都备注了 适用人群,大家可以看看自己是否适合,这样有助于节省大家的阅读时间。 那话不多说,我们开始吧。 角色 在每项最佳实践的案例中,会涉及到不同的三种角色 USER、ASSISTANT、SYSTEM,这边我先统一介绍下。我们来问下ChatGPT: SYSTEM 这个角色在ChatGPT官方页面的对话中,基本上是不会出现的,因为ChatGPT主要是为了与用户进行直接的交互。但是如果我们 利用ChatGPT的API开发 来自己的应用,那么 SYSTEM 角色是可以在一些场景中发挥作用的。 如下是一个在 音乐小助手 应用程序的对话场景,我们可以看到,SYSTEM 角色充当了后台角色的作用: 此外,如果有小伙伴不了解编程方式,但是想要在ChatGPT上尝试SYSTEM角色,则可以直接使用即可。 这里"当我请求帮助写东西时,你将在每个段落中至少加入一个笑话或俏皮话。" 在案例中就是 SYSTEM 角色,我们在聊天窗口用 USER 的角色直接发送即可。 这里"当我请求帮助写东西时,你将在每个段落中至少加入一个笑话或俏皮话。" 在案例中就是 SYSTEM 角色,我们在聊天窗口用 USER 的角色直接发送即可。 当我们对角色具备清晰的了解后,看下面官方提供的案例就不会迷惑啦。 最佳实践1 编写清晰的指令 GPT 无法读取您的思想。如果它们的输出过长,请要求简洁回复。如果它们的输出过于简单,请要求专业水平的写作。如果您不喜欢某种格式,请展示您想要看到的格式。GPT 越少猜测您想要的内容,您获得的可能性就越大。 策略: • 在查询中包含详细信息,以获得更相关的答案。 • 要求模型扮演某个角色。 • 使用分隔符清晰地表示输入的不同部分。 • 指定完成任务所需的步骤。 • 提供示例。 • 指定输出的期望长度。 • 提供参考文本。 策略1:在查询中包含细节以获得更相关的回答 适用人群:新手 难度:🌟 适用人群:新手 难度:🌟 为了获得高度相关的回复,请确保请求提供任何重要的细节或上下文。否则,这会让模型进行猜测您的意思,结果也会不尽人意。 解读 这个策略的价值在于,通过提供更多的详细信息,用户可以获得更准确、更具体的答案。这样可以减少模型的猜测和误解,从而提高交互的效率和满意度。GPT模型就像是您的男朋友,但它有时候是真的猜不出来呀(手动 狗头)。 策略2:要求模型扮演角色 适用人群:新手 难度:🌟 适用人群:新手 难度:🌟 系统消息可以用于指定模型在回复中扮演的角色。 解读 当我们指定一个角色,这样,模型的回答将会根据所采纳的角色特性来进行,使得回答更具特色和针对性。那么输出的质量也会随之提升。 策略3:使用分隔符清晰标示输入的不同部分 适用人群:新手 难度:🌟 适用人群:新手 难度:🌟 像三重引号、XML标记、节标题等分隔符可以帮助标示需要以不同方式处理的文本部分。 对于像这样的简单任务,使用分隔符可能不会对输出质量产生影响。然而,任务越复杂,将任务细节澄清变得越重要。不要让 GPTs 努力理解您究竟在要求什么。 解读 想象一下,您正在组装一款复杂的玩具,但所有的零件都混在一起,没有任何标签或说明。这会让组装过程变得非常困难,对吧? 同样,当模型处理一个复杂的输入时,如果没有清晰的分隔符来区分不同的部分,模型可能会混淆或误解某些内容。使用分隔符就像给玩具零件加上标签和说明,使组装过程变得更加流畅和准确。 策略4:指定完成任务所需的步骤 适用人群:新手 难度:🌟 适用人群:新手 难度:🌟 某些任务最好指定为一系列步骤。明确写出这些步骤可以让模型更容易跟随。 解读 当我们提供固定的步骤,要求模型提供输出,这样模型可以参考步骤更好地输出内容。如下为测试案例: 策略5:提供示例 适用人群:新手 难度:🌟 适用人群:新手 难度:🌟 通常情况下,提供适用于所有示例的一般说明比通过示例演示任务的所有变体更高效,但在某些情况下,提供示例可能更容易。例如,如果您打算让模型复制一种难以明确描述的用户查询响应风格。这被称为 "few shot" 提示。 策略6:指定所需的输出长度 适用人群:新手 难度:🌟 适用人群:新手 难度:🌟 您可以要求模型生成指定长度的输出。目标输出长度可以根据词数、句子数、段落数、项目符号数等来指定。但请注意,指示模型生成特定数量的单词并不具有高精确度。模型更可靠地生成具有特定段落或项目符号数量的输出。 解读 这里就不过多解读了,相信大家都能理解不同时间内(字段长度相当于一个人说话的时间),一个人思考的时间和回答的内容长度也是不一样。 额外需要注意的是,有些小伙伴反馈,明明指定了让GPT输出70字,但是很多时候并不是70个字。我们来看下模型的回复。 这里的思路和提问方式,源自小七姐的在线答疑,在此感谢小七姐。 这里的思路和提问方式,源自小七姐的在线答疑,在此感谢小七姐。 我反复提问了多次后,发现始终GPT不能给出正确的字数。最终请它分析后,理解了原因是什么。 那解决方案就是,我们可以指定相对宽泛一些的字数范围,如 70~90字。 最佳实践2 提供参考文本 GPT 可以自信地编造假答案,特别是当被询问奇特的话题、引用和网址时。就像一张笔记可以帮助学生在考试中取得更好的成绩一样,为 GPT 提供参考文本可以帮助它以较少的虚构进行回答。 策略: • 指示模型使用参考文本进行回答。 • 指示模型使用参考文本中的引用进行回答。 策略1:指示模型使用参考文本回答问题 适用人群:新手 难度:🌟 适用人群:新手 难度:🌟 如果我们能够为模型提供与当前查询相关的可信信息,那么我们可以指示模型使用提供的信息来组成其答案。 鉴于GPT有限的上下文窗口,为了应用此策略,我们需要某种方式动态查找与被提问的问题相关的信息。可以使用提供指定内容来实现高效的知识检索。 解读 我觉得最大的好处是 减少错误:因为模型可能会 幻想 从而发明答案,尤其是当被问及一些偏门的话题或需要引用和URL时。通过提供参考文本,我们可以减少模型发明答案的可能性。 如下为测试数据: 策略2:指示模型使用参考文本的引文进行回答 适用人群:新手 难度:🌟 适用人群:新手 难度:🌟 如果输入已经被相关知识补充,直接要求模型通过引用所提供文档的段落来添加引文到其回答中就很简单了。请注意,可以通过在所提供的文档中进行字符串匹配来编程验证输出中的引文。 测试数据: 最佳实践3 将复杂任务分解为简单子任务 就像在软件工程中将复杂系统分解为一组模块化组件一样,提交给 GPT 的任务也是如此。相比较而言,复杂任务的错误率往往较高。此外,复杂任务通常可以重新定义为一系列较简单任务的工作流程,其中早期任务的输出用于构建后续任务的输入。 策略: • 使用意图分类来识别用户查询的最相关指令。 • 对于需要非常长对话的对话应用程序,总结或过滤以前的对话。 • 逐段概括长文档并递归构建完整概要。 策略1:使用意图分类来识别用户查询最相关的指令 适用人群:新手、熟练者 难度:🌟🌟 适用人群:新手、熟练者 难度:🌟🌟 当处理不同情况的任务时,可以先将任务按类型分类,然后为每种类型设计特定的步骤,就像做菜一样有食谱。复杂任务可以分解成小阶段,每个阶段也有自己的指令,这样整个处理过程更有组织和效率。 这种方法的优点是每个查询只包含执行任务的下一阶段所需的那些指令,这可能导致比使用单个查询执行整个任务时的错误率更低。这也可能导致成本更低,因为更大的提示运行成本更高。 这里的成本针对使用API的小伙伴们。 这里的成本针对使用API的小伙伴们。 假设, 例如对于客户服务应用,查询可能被有用地分类如下: 基于客户查询的分类,可以向GPT模型提供一组更具体的指令来处理下一步。例如,假设客户需要帮助"故障排除"。 请注意,已经指示模型在会话状态改变时发出特殊的字符串。这使我们能够将我们的系统转变为状态机,其中状态决定哪些指令被注入。通过跟踪状态,什么指令在那个状态下是相关的,以及从那个状态允许什么状态转换,我们可以在用户体验周围设置保护,这在一种不太结构化的方法中很难实现。 解读 简单来说,就是先理解用户的真实需求,然后根据这个需求提供最合适的答案或操作。这种方法特别适用于那些需要多种独立指令来处理不同情况的任务。通过首先分类查询的类型,并使用该分类来确定所需的指令,可以更有效地为用户提供他们真正需要的信息或服务。 如下为测试过程的对话: 由于这次案例的内容较多,我分享在shareGPT上了,需要测试的小伙伴,可以通过链接来查看或者开启继续对话。 链接为:https://shareg.pt/Y6j83cX 由于这次案例的内容较多,我分享在shareGPT上了,需要测试的小伙伴,可以通过链接来查看或者开启继续对话。 链接为:https://shareg.pt/Y6j83cX 策略2:对于需要很长对话的对话应用程序,总结或过滤以前的对话 适用人群:熟练者、程序开发人员 难度:🌟🌟 适用人群:熟练者、程序开发人员 难度:🌟🌟 就好像我们在一个需要很长对话的聊天程序中进行对话,比如和一个虚拟助手聊天,由于GPT具有固定的上下文长度,用户和助手之间的对话不能无限地进行。 解决这个问题的方法有几种。一种方法是对前几轮对话进行总结,就像写篇小短文一样,把前面的对话内容概括一下。当输入的对话达到一定长度时,系统可能会自动触发一个查询,让模型对前面的对话进行总结,然后总结可以作为系统回复的一部分。或者,也可以在整个对话过程中,把前面的对话内容分批次地进行总结。 另一种方法是根据当前查询选择和当前问题最相关的前面对话部分。这就好比你在找书的目录一样,你会去寻找和你问题相关的章节。这里提到的"使用基于嵌入的搜索来实现高效的知识检索",是一种方法,可以让模型更有效地找到和当前问题相关的信息。 解读 我通过翻译和语言通俗化后,上面的介绍已经大致可以理解。那我这边继续列举一个案例来体现这个策略的意义: 想象一个案例: 在线医疗咨询应用,用户可能会描述他们的症状、过去的医疗历史、药物使用等。随着对话的进行,这些信息可能会 变得非常多。但是,当用户 提到一个新的症状或问题时,模型需要记住之前的所有相关信息来提供准确的建议。在这种情况下,对之前的对话进行 总结或筛选,只保留 与当前问题最相关的信息,可以帮助模型更好地理解和回应用户的需求。 如下为案例模拟对话数据: 这样,即使在长对话中,ChatGPT也能够准确地回应用户的问题,同时考虑到之前的对话内容。 策略3:分段汇总长文档并递归构造完整汇总 适用人群:熟练者 难度:🌟🌟 适用人群:熟练者 难度:🌟🌟 简单来说,就是GPT这样的模型在处理文本时有个限制,就是它们只能看到一定长度的文字,超过这个长度就看不到了。如果要总结一个超长的文档,比如一本书,就需要分段进行。每个段落可以作为一个查询来总结,然后这些段落的总结再连接在一起,形成整体的总结。这个过程可以重复进行,直到整本书都被总结完。 如果后面的内容需要前面的内容作为背景才能理解,那么在总结后面部分的时候,可以在查询中包含之前已经总结过的内容,这样可以帮助模型更好地理解整个文档。OpenAI之前也研究过使用GPT 3的变种来进行这种汇总长文档的方法,效果还不错。 解读 通过通俗化的翻译,已经将该策略解释的相对比较清晰,所以这里不再过多赘述。我们来看下一个案例,就可以理解它的应用场景: 假设你有一本关于人工智能历史的300页书,你想要一个简短的摘要。由于这本书的长度远远超过了 模型的上下文的token 限制,你可以首先将书分为章节,并为每一章生成一个摘要。接下来,你可以将这些章节摘要连接起来,并再次为它们生成一个摘要,得到整本书的总摘要。如果某些章节之间有 关联或依赖关系,你可以在总结后续章节时包括前面章节的摘要,以确保摘要的准确性和连贯性。 token是什么,是一个字的意思吗?有些小伙伴开始可能还不明白,由于篇幅限制,我简单解释下: Token是文本数据的基本单元,可能代表一个字、词、标点或句子,不同模型中token代表的内容会有细微区别。 如Claude 2 100k模型上限为100,000个Token。 ChatGPT 16 k 模型的上下文上限是 16k Tokens,也就是 16000 个token。 ChatGPT 4 32 k 模型的上下文上限是 32k Tokens,也就是 32000 个token。 达到上限后,模型会“遗忘”早期的对话内容。 在模型如Transformer中,文本首先被切分为Tokens,然后被转化为向量,供神经网络处理。说人话就是,我们输入的文字会被转化成一个一个token,大模型在词语接龙般处理后,输出的也是一个一个token。 这里关于GPT 3的token统计网站,大家可以试下:https://platform.openai.com/tokenizer 如果我们希望详细地了解token的含义,大家可以看看这边文章的章节 语言模型中的 token 来系统地了解token的原理: https://zhuanlan.zhihu.com/p/620426699 token是什么,是一个字的意思吗?有些小伙伴开始可能还不明白,由于篇幅限制,我简单解释下: Token是文本数据的基本单元,可能代表一个字、词、标点或句子,不同模型中token代表的内容会有细微区别。 如Claude 2 100k模型上限为100,000个Token。 ChatGPT 16 k 模型的上下文上限是 16k Tokens,也就是 16000 个token。 ChatGPT 4 32 k 模型的上下文上限是 32k Tokens,也就是 32000 个token。 达到上限后,模型会“遗忘”早期的对话内容。 在模型如Transformer中,文本首先被切分为Tokens,然后被转化为向量,供神经网络处理。说人话就是,我们输入的文字会被转化成一个一个token,大模型在词语接龙般处理后,输出的也是一个一个token。 这里关于GPT 3的token统计网站,大家可以试下:https://platform.openai.com/tokenizer 如果我们希望详细地了解token的含义,大家可以看看这边文章

在 小宇宙note 阅读完整内容