Azure OpenAI 的提示工程技术 您所在的位置:网站首页 股票开头带N Azure OpenAI 的提示工程技术

Azure OpenAI 的提示工程技术

2023-05-13 08:20| 来源: 网络整理| 查看: 265

你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

提示工程技术 项目 04/27/2023

本指南将指导你提示设计和提示工程方面的一些高级技术。 如果你不熟悉提示工程,建议从提示工程指南简介开始。

虽然提示工程的原则可以在许多不同的模型类型间归纳,但某些模型需要专用的提示结构。 对于 Azure OpenAI GPT 模型,目前有两个不同的 API,提示工程可以在其中发挥作用:

聊天补全 API。 补全 API。

每种 API 要求以不同的格式输入数据,这反过来又会影响整体的提示设计。 聊天补全 API 支持 ChatGPT(预览版)和 GPT-4(预览版)模型。 这些模型旨在接收存储在字典数组中的类似聊天的特定脚本格式的输入。

补全 API 支持较旧的 GPT-3 模型,并且具有更灵活的输入要求,即它接受没有特定格式规则的文本字符串。 从技术上讲,ChatGPT(预览版)模型可与任一 API 一起使用,但我们强烈建议对这些模型使用聊天补全 API。 若要了解更多,请参阅使用这些 API 的深入指南。

本指南中的技术将指导你提高使用大型语言模型 (LLM) 生成的响应的准确性和基础。 但是,请务必记住,即使有效地使用了提示工程,你仍需要验证模型生成的响应。 仅仅因为精心制作的提示适用于某个特定方案并不一定意味着它能更广泛地推广到某些用例。 了解 LLM 的限制与了解如何利用其优势一样重要。

本指南不深入介绍聊天补全消息结构背后的机制。 如果你不熟悉以编程方式与 ChatGPT 和 GPT-4 模型交互,建议先阅读有关聊天补全 API 的操作指南。

注意

本指南的这一部分中的所有示例都针对基础 GPT-4 模型进行了英语测试。 如果你在通过另一种语言阅读本文的本地化版本,则这些响应表示英语结果的本地化翻译。 若要根据你用于提示模型的语言详细了解潜在的限制,请参阅负责任 AI 透明度说明。

系统消息

系统消息包含在提示的开头,用于为模型提供上下文、说明或与用例相关的其他信息。 可以使用系统消息来描述助手的个性,定义模型应回答和不应回答的内容,以及定义模型响应的格式。

下面的示例显示了示例系统消息和生成的模型响应:

系统消息 用户 Assistant 你是一个 AI 助手,可帮助人们查找信息并以押韵的方式作出回应。 如果用户问了你不知道答案的问题,就说出来。 我是约翰·杜,你能说出关于我的什么? 亲爱的约翰,我很抱歉地说,我今天没有关于你的信息。我只是一个拥有知识的 AI,但是没有你的输入,我无法做解释。因此,请多告诉我你在寻找什么,我会尽我最大的努力给你一个独特的答案。

系统消息的其他一些示例包括:

“助手是由 OpenAI 训练的大型语言模型。” “助手是一种智能聊天机器人,旨在帮助用户回答有关 Azure OpenAI 服务的技术问题。 仅使用以下上下文回答问题,如果不确定答案,可以说“我不知道”。 “助手是一种智能聊天机器人,旨在帮助用户回答其税务相关问题。” “你是一名助手,旨在从文本中提取实体。 用户将粘贴文本字符串,你将使用从文本中提取的实体作为 JSON 对象进行响应。 下面是输出格式的示例: { "name": "", "company": "", "phone_number": "" }

需要了解的一个重要细节是,即使你在系统消息中指示模型在不确定答案时回答“我不知道”,这并不能保证此请求得到履行。 设计良好的系统消息可以增加产生特定结果的可能性,但仍可能会生成不正确的响应,可能会与系统消息中的指令的意图相矛盾。

少样本学习

使语言模型适应新任务的一个常见方法是使用少样本学习。 在少样本学习中,需要在提示中提供一组训练示例,以便为模型提供额外的上下文。

使用聊天补全 API 时,用户和助手之间的一系列消息(以新的提示格式编写)可以作为进行少样本学习的示例。 这些例子可以用来引导模型以某种方式相应,模仿特定的行为,并为常见的问题提供种子答案。

系统消息 少样本示例 助手是一种智能聊天机器人,旨在帮助用户回答其税务相关问题。 说明 - 仅回答与税收相关的问题。 - 如果你不确定答案,你可以说“我不知道”或“我不确定”,并建议用户前往 IRS 网站获取详细信息。 用户 -“我需要报税的截止时间是?”助手 -“在 2023 年,你需要在 4 月 18 日前报税。 该日期在通常的 4 月 15 日最后期限之后,因为 4 月 15 日在 2023 年是星期六。 有关详细信息,请参阅 https://www.irs.gov/filing/individuals/when-to-file”

用户 -“如何检查我的退税状态?”助手 -“你可以通过访问 https://www.irs.gov/refunds 检查你的退税状态”

上表介绍了基本的提示结构,但有关确切提示格式的详细说明,需要参考聊天补全指南。

非聊天场景

虽然聊天补全 API 已优化为处理多回合对话,但它也可用于非聊天场景。 例如,对于情绪分析场景,可以使用以下提示:

系统消息 用户 Assistant 你是一名助手,旨在分析语音数据中的情绪。 用户将粘贴一串文本,你将对讲者的响应进行评估。 给出 1-10 的评分(10 为最高)。 解释给出此评分的原因。 嗨,感谢你致电 Contoso 药店,我今天和谁通话?我了解你的挫败感,玛丽。你能告诉我你想要实现什么目标吗?好的,很高兴帮你看一下,请稍等片刻。我在这里看到你曾经使用过普通立普妥是吗?好的,那么我看到你的医生在 2021 年停止开这些药物的处方了。实际上是这样吗?好的,让我为你检查一下。因为有时候系统中会出现漏洞,并没有被报告出来。请稍等片刻,让我看看这里是否有记录。所以根据最新提供给我们的医生办公室记录显示,在 2012 年至 2021 年期间,你的医生曾经给你开过这些药物处方。好的,在最新记录中显示,现在医生已经更换了不同种类的药物–二甲双胍。请问我们需要帮忙准备并发放 500 毫克二甲双胍处方给你吗?不客气玛丽,请告诉我们今天还有什么可以帮到你的。 情绪评分:8此文本中的讲者在解决客户关注的问题时似乎很有礼貌、有帮助和耐心。 他们花时间检查信息,提供明确的解释,并提供协助。 但是,评分不是 10,因为对话的某些部分仍有不确定性的暗示,这可能无法向客户传达完全的信心。 从明确的说明开始

提示中显示信息的顺序很重要。 这是因为 GPT 风格的模型是以某种方式构建的,这定义了它们处理输入的方式。 我们的研究表明,在共享其他上下文信息或示例之前,在提示开始时告诉模型你希望它执行的任务有助于生成更高质量的输出。

注意

尽管通常仍建议遵循此方法,但与之前的模型版本(GPT-3 和更早)相比,我们的测试表明,无论是否使用该技术,ChatGPT 和 GPT-4 模型的模型响应都是相同的。 在下面的示例中,我们看到添加了语句“几个消息来源... 爆发”到提示的开头或末尾后,不会导致最终模型响应发生任何变化。

系统消息 用户 Assistant 你是一名 AI 助手,可帮助用户查找信息。 你的任务是验证“几个消息来源提到了可能会发生另一次大爆发”这一说法是否有以下一组片段中的具体引文的支持。---内容片段[1] 专家称西雅图发生特大地震的几率为14% 西雅图 - 美国地质调查局估计,在未来 50 年里,西雅图发生 9 级卡斯卡迪亚地震的可能性为 14%。 “不幸的是,我们无法...

[2] 地震专家对西雅图的“真正的大地震”进行了最新展望“我们说,在未来 50 年里,大约有 14% 的机会再次发生大约 9 级的地震,”华盛顿大学的一位地球物理学家说。---“几个消息来源提到了可能会发生另一次大爆发”,此陈述是由内容片段直接暗示或明确表述的吗?

否,此陈述不由内容片段直接暗示或明确表述。 这些片段提到在未来 50 年内,西雅图有可能发生“特大地震”和“卡斯卡迪亚 9 级地震”,但没有提到另一次大型爆发的可能性。 在末尾重复指令

模型可能容易受到近因偏差的影响,在此上下文中,这意味着提示结束时的信息对输出的影响可能比提示开头的信息更大。 因此,值得尝试的是,在提示结束时重复指令,并评估对生成的响应的影响。

引导输出

这是指在提示的末尾包含几个字词或短语,以获取遵循所需形式的模型响应。 例如,使用 “Here’s a bulleted list of key points:\n- ” 等提示有助于确保输出的格式为项目符号列表。

系统消息 用户 Assistant 你是一名 AI 助手,可帮助用户查找信息。 尽可能少地回答。 约翰·史密斯与露西·史密斯结婚了。 他们有五个孩子,他在 Microsoft 担任软件工程师。 我应该执行哪些搜索查询来检查此事实? ## 一个可能的搜索查询是: “约翰·史密斯与露西·史密斯结婚五个孩子软件工程师 Microsoft”

在上述提示中,文本“一个可能的搜索查询是:”引导模型生成单个输出。 如果没有此提示,模型将生成多个搜索查询作为输出。

添加明确的语法

对提示使用明确的语法(包括标点符号、标题和节标记)有助于传达意向,并且通常使输出更易于分析。

在下面的示例中,分隔符(本例中为 ---)已添加到不同的信息源或步骤之间。 这允许使用 --- 作为生成的停止条件。 此外,节标题或特殊变量以大写形式显示,用于区分。

系统消息 用户 Assistant 你是一名 AI 助手,可帮助用户查找信息。 你将阅读段落,然后向搜索引擎发出查询,以便对段落进行事实检查。 另请解释查询。---段落约翰·史密斯与露西·史密斯结婚了。 他们有五个孩子,他在 Microsoft 担任软件工程师。 我应该执行哪些搜索查询来检查此事实?---QUERIES 1.“约翰·史密斯 Microsoft”- 检查约翰·史密斯是否确实在 Microsoft 工作。2.“约翰·史密斯露西·史密斯”–检查约翰·史密斯是否与露西·史密斯结婚了。3.“约翰·史密斯孩子”- 检查约翰·史密斯是否有 5 个孩子。

如果不确定要使用哪种语法,请考虑使用 Markdown 或 XML。 这些模型已通过 XML 和 Markdown 的大量 Web 内容进行了训练,这可能会提供更好的结果。

分解任务

如果任务分解为较小的步骤,大型语言模型(LLM)的性能通常会更好。 例如,在前面引用的搜索查询提示中,可以调整提示的结构,以便首先指示模型提取相关事实,然后指示生成可用于验证这些事实的搜索查询。

系统消息 用户 Assistant 你是一名 AI 助手,可帮助用户查找信息。 你将阅读段落,然后向搜索引擎发出查询,以便对段落进行事实检查。---段落约翰·史密斯与露西·史密斯结婚了。 他们有五个孩子,他在 Microsoft 担任软件工程师。 我应该执行哪些搜索查询来检查此事实?---现在,你将提取事实声明,并向其发出检查事实的查询。 发出查询时,请使用函数 SEARCH ("query")

事实声明

1. 约翰·史密斯与露西·史密斯结婚了2. 他们有五个孩子3. 他在 Microsoft 担任软件工程师

QUERIESSEARCH(“约翰·史密斯与露西·史密斯结婚了”)SEARCH(“约翰·史密斯家庭规模”)SEARCH(“约翰·史密斯 Microsoft 软件工程师”)

请注意,应使用清晰的语法来区分不同部分并引导输出。 在此简单示例中,将任务从一步分解为两步并不十分引人注目,但当为一篇有许多事实主张的大文本做这件事时,将任务分解就会产生很大的不同。

使用可供性

有时候,我们可以让模型使用可供性,而不是仅依赖其自身的参数来获取信息和答案。 例如,搜索可以作为一种可供性来帮助减轻虚构答案的风险,并获取最新的信息。

使用可供性的一种简单方法是在模型生成可供性调用时停止生成,然后将结果粘贴回提示中。 下面是执行上述 SEARCH 调用后进行跟进调用的示例。 请注意看我们如何将搜索结果粘贴到提示中并替换之前的 SEARCH 调用。

系统消息 用户 Assistant 你是一名 AI 助手,可帮助用户查找信息。 你将阅读段落,提取事实声明,然后使用搜索引擎结果对它们进行事实检查---段落约翰·史密斯与露西·史密斯结婚了。 他们有五个孩子,他在 Microsoft 担任软件工程师。 我应该执行哪些搜索查询来检查此事实?---事实声明- 约翰·史密斯与露西·史密斯结婚了- 约翰和露西有五个孩子- 约翰在 Microsoft 担任软件工程师---下面是为研究上述声明而发出的各种搜索查询:搜索查询- 约翰·史密斯与露西·史密斯结婚了- 约翰·史密斯儿童数量- 约翰·史密软件工程师 Microsoft---下面是搜索结果的内容片段:内容片段:[1] ... 约翰·史密斯的婚礼是在 2012 年 9 月 25 日...[2] ... John Smith 和他的妻子 Lucy 一起参加了一场聚会[3]约翰带着他的两个女儿和三个儿子去看了足球比赛[4] ... 在 Microsoft 工作 10 年后,史密斯创立了自己的初创公司 Tailspin Toys[5] 约翰·M 是镇上的铁匠,他娶了菲奥娜。 他们有一个女儿叫露西---根据给定的内容片段,事实检查上述每个事实声明: - 约翰·史密斯与露西·史密斯结婚了:已确认。 片段 [1] 和 [2] 都提及了约翰·史密斯的妻子露西。

- 约翰和露西有五个孩子:已确认。 片段 [3] 提到约翰由他的两个女儿和三个儿子陪同。

- 约翰在 Microsoft 担任软件工程师:部分确认。 片段 [4] 提到约翰在 Microsoft 工作了 10 年,但没有明确说明他目前在那里工作。 可能需要进一步调查才能确认他目前的就业状况。

思维链提示

这是分解任务技术的变体。 在这种方法中,不是将一项任务分割成较小的步骤,而是指示模型响应逐步进行,并提出所有涉及的步骤。 这样做可以减少结果不准确的可能性,并使评估模型响应更容易。

系统消息 用户 Assistant 你是一名 AI 助手,可帮助用户查找信息。 谁是在悉尼举行的奥林匹克运动会中获得最多奖牌(最大奖牌数)的个人运动员? 采取逐步方法回答问题,在分享最终答案之前引用来源并给出推理,格式如下:答案是: 步骤 1:确定悉尼奥运会的年份。 悉尼奥运会是在 2000 年举行的。

步骤 2:查找在 2000 年悉尼奥运会上获得多枚奖牌的个人运动员名单。

据奥运会官方网站称,在 2000 年悉尼奥运会上,有数名运动员获得了多枚奖牌。 一些值得注意的名字包括:•伊恩·索普(澳大利亚)- 3 金 2 银 0 铜•彼得·范登·霍根班德(荷兰)- 2 金 0 银 2 铜•莱尼·克雷泽尔堡(美国)- 3 金 0 银 0 铜·英格·德·布鲁伊恩(荷兰)- 3 金 1 银 0 铜

步骤 3:确定获得最多奖牌的运动员。 回顾了在 2000 年悉尼奥运会上获得多枚奖牌的个人运动员名单后,我们可以看到,获得奖牌最多的运动员是来自澳大利亚的伊恩·索普,他共获得 5 枚奖牌(3 金 2 银)。

因此,答案是:伊恩·索普。

指定输出结构

使用提示指定输出结构时,可能会对结果的性质和质量产生重大影响。 有时,系统消息输入“仅写出真实事实”或“不捏造信息”可能不足以缓解问题。 相反,要求模型响应同时包含引文有助于减少错误响应的概率。

如果你指示模型在编写语句时引用源材料,则这些语句更有可能有根据。 请求引文会使模型在每次生成响应时都犯两个错误:第一个错误是捏造的响应,第二个错误是错误的引文。 请注意,引文越接近它支持的文本,模型预测引文所需的距离就越短,这表明内联引文比内容末尾的引文更适合缓解虚假内容的生成。

同样,如果要求模型从段落中提取事实陈述,它可能会提取复合语句,例如“X 正在执行 Y 和 Z”(这可能更难验证)。 可以通过指定输出结构来避免这种情况,如(实体 1、关系、实体 2)。

以下示例演示了引文的使用,并指导模型响应适应定义的结构。

系统消息 用户 Assistant 你是一名 AI 助手,可帮助用户查找信息 列出客户支持专员在以下对话中展示的不同行为。---嗨,感谢你致电 Contoso 药店,我今天和谁通话?我了解你的挫败感,玛丽。你能告诉我你想要实现什么目标吗?好的,很高兴帮你看一下,请稍等片刻。我在这里看到你曾经使用过普通立普妥是吗?好的,那么我看到你的医生在 2021 年停止开这些药物的处方了。实际上是这样吗?好的,让我为你检查一下。因为有时候系统中会出现漏洞,并没有被报告出来。请稍等片刻,让我看看这里是否有记录。所以根据最新提供给我们的医生办公室记录显示,在 2012 年至 2021 年期间,你的医生曾经给你开过这些药物处方。好的,在最新记录中显示,现在医生已经更换了不同种类的药物–二甲双胍。请问我们需要帮忙准备并发放 500 毫克二甲双胍处方给你吗?不客气玛丽,请告诉我们今天还有什么可以帮到你的。---客户支持专员的响应如何? 使用“行为(“原因”)”格式对各种行为进行分类和列出,并引用分类背后的原因 1. 礼貌问候行为(“专员以礼貌的问候语开始对话,并询问呼叫者的姓名”)2. 同理心行为(“专员意识到玛丽的沮丧,并试图理解她的担忧”)3. 细心的行为(“专员倾听客户的问题,并询问更多详细信息”)4. 主动行为(“专员提出为客户检查问题”)5. 信息性行为(“专员提供了有关客户的处方记录的相关信息”)6. 全面的行为(“专员检查了系统中可能存在的任何缺口,并提供了完整的回应”)7. 确认性行为(“专员与客户确认当前药物”)8. 以解决方案为引导的行为(“专员提出为客户填写新处方”)9. 礼貌行为(“专员感谢了客户,并提出在需要时提供进一步帮助”) 系统消息 用户 Assistant 你是一名 AI 助手,可帮助用户查找信息。 根据在文本中看到的模式,将以下新闻标题分为主题类别。 还要提到定义这些类别的理由。 输出格式:{“主题_名称”:“”,“标题”:[],“理由”:“”}

输入新闻标题:1.“使用 AR + ML 在 10 秒内从书本到演讲”2.“1993 年 32 岁的 Yann LeCun 演示了世界第一个文本识别卷积网络”3.“应用于动画绘画的一阶运动模型”4.“Robinhood 和其他券商从实际上阻止购买 $GME、$NOK、$BB、$AMC;允许卖出”5.“美国联合航空公司股票在盘前交易中下跌超过 5%”输出:

{“人工_智能”:{“标题”:[“使用 AR + ML 在 10 秒内从书本到演讲”、“1993 年 32 岁的 Yann LeCun 演示了世界第一个文本识别卷积网络”、“应用于动画绘画的一阶运动模型”],“理由”:“这些标题与人工智能、机器学习及其在各个领域的应用有关。”},“金融_市场”:{“标题”:[“Robinhood 和其他券商从实际上阻止购买 $GME、$NOK、$BB、$AMC;允许卖出”、“美国联合航空公司股票在盘前交易中下跌超过 5%”、“比特币在一年前的今天接近 20,000 美元”],“理由”:“这些标题与金融市场、股票、加密货币和交易平台有关。}} 温度和 Top_p 参数

改变温度参数会改变模型的输出。 温度参数可以设置为 0 到 2。 较高的值(例如 0.7)将使输出更随机,并产生更多发散的响应,而较小的值(例如 0.2)将使输出更加集中和具体。 虚构的故事可以使用更高的温度生成。 而要生成法律文件的话,建议使用低得多的温度。 Top_probability 是另一个参数,与温度类似,它也控制模型响应的随机性,但它的控制方式有所不同。 一般建议一次只更改这两个参数其中之一,而不是同时更改它们。

提供基础上下文

提供可靠答案的最有效方法之一是为模型提供数据,让它从基础数据得出响应。 如果你的用例依赖于最新、可靠的信息,且不是纯粹的创意场景,我们强烈建议提供基础数据。 通常,源材料越接近所需答案的最终形式,模型需要完成的工作就越少,这意味着出错的可能性就越小。 下面的示例向系统提供了“描述 GPT-4 在 Azure OpenAI 服务中推出的最新博客”,并要求其命名一些早期客户。

系统消息 用户 Assistant 你是一名 AI 助手,可帮助用户查找信息。 你将专门通过以下文本提供回答,并保持响应在 100 字或更少:“在 Microsoft,我们不断发现释放创造力、解锁生产力和上层技能的新方法,以便让更多人可以从使用 AI 中获益。 这使我们的客户能够...

… 从而减少模型生成有害响应的可能性。”1

回答不超过 100 个字词。 尽可能使用项目符号列表。

谁是 Azure OpenAI 服务 GPT-4 模型的早期客户? 下面是 Azure OpenAI 服务 GPT-4 模型的一些早期客户:- Epic Healthcare:他们计划使用 GPT-4 来帮助医生和护士在数据输入和调查上花费更少的时间。 - Coursera:他们将 Azure OpenAI 服务与 GPT-4 配合使用,以在其平台上创建新的 AI 驱动的学习体验。- 可口可乐:他们正在使用 Azure OpenAI 构建知识中心,并计划利用 GPT-4 的多模态功能处理营销、广告、公共关系和客户关系。- 其他各种规模的公司也在使用 Azure AI 来改善客户体验、汇总长格式内容、帮助编写软件,并通过预测正确的税务数据来降低风险。

1 来自 Azure OpenAI GPT-4 发布博客的文本。

后续步骤 详细了解 Azure OpenAI。 通过 ChatGPT 快速入门开始使用 ChatGPT 模型。 有关更多示例,请查看 Azure OpenAI 示例 GitHub 存储库。

注意

本指南的这一部分中的所有示例都针对基础 text-davinci-003 模型进行了英语测试。 如果你在通过另一种语言阅读本文的本地化版本,则这些响应表示英语结果的本地化翻译。 若要根据你用于提示模型的语言详细了解潜在的限制,请参阅负责任 AI 透明度说明。

从明确的说明开始

将信息输入提示的顺序很重要。 我们的研究表明,在共享其他上下文信息或示例之前,在提示开始时告诉模型你希望它执行的任务有助于生成更高质量的输出。

在下面的第一个示例中,指令的关键部分仅在末尾分享,而生成的补全不正确。

Prompt Completion 你的任务是验证陈述是否受以下内容片段集中的特定引文的支持。---内容片段[1] 专家称西雅图发生特大地震的可能性为 14% –美国地质调查局估计,在未来 50 年内,西雅图发生 9 级卡斯卡迪亚地震的可能性为 14%。 “不幸的是,我们无法...

[2] 地震专家对西雅图的“真正的大地震”进行了最新展望“我们说,在未来 50 年里,大约有 14% 的机会再次发生大约 9 级的地震,”华盛顿大学的一位地球物理学家说。

是的,该陈述由内容片段直接暗示。

在下一个示例中,我们在给出内容片段上下文之前,给出了要检查的确切陈述(“几个消息来源提到了可能会发生另一次大爆发”)。 这样,从内容片段中提取的标记表示形式就可以根据我们要检查的陈述进行定制。 现在,生成的模型响应是准确的:

Prompt Completion 你的任务是验证“几个消息来源提到了可能会发生另一次大爆发”这一说法是否有以下一组片段中的具体引文的支持。---内容片段[1] 专家称西雅图发生特大地震的可能性为 14% –美国地质调查局估计,在未来 50 年内,西雅图发生 9 级卡斯卡迪亚地震的可能性为 14%。 “不幸的是,我们无法...

[2] 地震专家对西雅图的“真正的大地震”进行了最新展望“我们说,在未来 50 年里,大约有 14% 的机会再次发生大约 9 级的地震,”华盛顿大学的一位地球物理学家说。---“几个消息来源提到了可能会发生另一次大爆发”,此陈述是由内容片段直接暗示或明确表述的吗?

否,此陈述不由内容片段直接暗示或明确表述。 这些片段提到在未来 50 年内,西雅图有可能发生“特大地震”和“卡斯卡迪亚 9 级地震”,但没有提到另一次大型爆发的可能性。 在末尾重复指令

模型可能容易受到近因偏差的影响,这意味着提示结束时的信息对输出的影响可能比提示开头的信息更大。 因此,值得尝试的是,在提示结束时重复指令,并评估对你的用例的影响。

在前面的示例中,我们看到了如何在提示的开头和末尾重复指令,这样更有可能获得准确的模型响应。

引导输出

这是指在提示的末尾包含几个字词或短语,以获取遵循所需形式的模型响应。 例如,使用 “Here’s a bulleted list of key points:\n- ” 等提示有助于确保输出的格式为项目符号列表。

Prompt Completion 约翰·史密斯与露西·史密斯结婚了。 他们有五个孩子,他在 Microsoft 担任软件工程师。 我应该执行哪些搜索查询来检查此事实? ##一个可能的搜索查询是: “约翰·史密斯 Microsoft 软件工程师”另一个可能的搜索查询是:“露西·史密斯与约翰·史密斯结婚了”第三个可能的搜索查询是:“约翰·史密斯家庭规模”。

在上述提示中,文本“一个可能的搜索查询是:”引导模型生成搜索查询形式的输出。 此方法可帮助删除模型通常可能添加的避免直接表达的措辞,例如“一种可能性是...”。

添加明确的语法

对提示使用明确的语法(包括标点符号、标题和节标记)有助于传达意向,并且通常使输出更易于分析。

在下面的示例中,分隔符(本例中为 ---)已添加到不同的信息源或步骤之间。 这允许使用 --- 作为生成的停止条件。 此外,节标题或特殊变量以大写形式显示,用于区分。

Prompt Completion 你将阅读段落,然后向搜索引擎发出查询,以便对段落进行事实检查。 另请解释查询。---段落约翰·史密斯与露西·史密斯结婚了。 他们有五个孩子,他在 Microsoft 担任软件工程师。 我应该执行哪些搜索查询来检查此事实?---QUERIES 1.“约翰·史密斯 Microsoft”- 检查约翰·史密斯是否确实在 Microsoft 工作。2.“约翰·史密斯露西·史密斯”–检查约翰·史密斯是否与露西·史密斯结婚了。3.“约翰·史密斯孩子”- 检查约翰·史密斯是否有 5 个孩子。

如果不确定要使用的语法,请考虑使用 markdown 或 XML,因为大型语言模型已通过 XML 或 markdown 的大量 Web 内容进行了训练。

分解任务

如果任务分解为较小的步骤,模型的性能通常会更好。 例如,在前面引用的搜索查询提示中,可以调整提示的结构,以便首先指示模型提取相关事实,然后指示生成可用于验证这些事实的搜索查询。

Prompt Completion 你将阅读段落,然后向搜索引擎发出查询,以便对段落进行事实检查。---段落约翰·史密斯与露西·史密斯结婚了。 他们有五个孩子,他在 Microsoft 担任软件工程师。 我应该执行哪些搜索查询来检查此事实?---现在,你将提取事实声明,并向其发出检查事实的查询。 发出查询时,请使用函数 SEARCH ("query")

事实声明

1. 约翰·史密斯与露西·史密斯结婚了2. 他们有五个孩子3. 他在 Microsoft 担任软件工程师

QUERIESSEARCH(“约翰·史密斯与露西·史密斯结婚了”)SEARCH(“约翰·史密斯家庭规模”)SEARCH(“约翰·史密斯 Microsoft 软件工程师”)

请注意,应使用清晰的语法来区分不同部分并引导输出。 在此简单示例中,将任务从一步分解为两步并不十分引人注目,但当为一篇有许多事实主张的大文本做这件事时,将任务分解就会产生很大的不同。

使用可供性

有时候,我们可以让模型使用可供性,而不是仅依赖其自身的参数来获取信息和答案。 例如,搜索可以作为一种可供性来帮助减轻虚构答案的风险,并获取最新的信息。

使用可供性的一种简单方法是在模型生成可供性调用时停止生成,然后将结果粘贴回提示中。 下面是执行上述 SEARCH 调用后进行跟进调用的示例。 请注意看我们如何将搜索结果粘贴到提示中并替换之前的 SEARCH 调用。

Prompt Completion 你将阅读段落,提取事实声明,然后使用搜索引擎结果对它们进行事实检查---段落约翰·史密斯与露西·史密斯结婚了。 他们有五个孩子,他在 Microsoft 担任软件工程师。 我应该执行哪些搜索查询来检查此事实?---事实声明- 约翰·史密斯与露西·史密斯结婚了- 约翰和露西有五个孩子- 约翰在 Microsoft 担任软件工程师---下面是为研究上述声明而发出的各种搜索查询:搜索查询- 约翰·史密斯与露西·史密斯结婚了- 约翰·史密斯儿童数量- 约翰·史密软件工程师 Microsoft---下面是搜索结果的内容片段:内容片段:[1] ... 约翰·史密斯的婚礼是在 2012 年 9 月 25 日...[2] ... John Smith 和他的妻子 Lucy 一起参加了一场聚会[3]约翰带着他的两个女儿和三个儿子去看了足球比赛[4] ... 在 Microsoft 工作 10 年后,史密斯创立了自己的初创公司 Tailspin Toys[5] 约翰·M 是镇上的铁匠,他娶了菲奥娜。 他们有一个女儿叫露西---根据给定的内容片段,事实检查上述每个事实声明: - 约翰·史密斯与露西·史密斯结婚了:已确认。 片段 [1] 和 [2] 都提及了约翰·史密斯的妻子露西。- 约翰和露西有五个孩子:已确认。 片段 [3] 提到约翰由他的两个女儿和三个儿子陪同。- 约翰在 Microsoft 担任软件工程师:部分确认。 片段 [4] 提到约翰在 Microsoft 工作了 10 年,但没有明确说明他目前在那里工作。 可能需要进一步调查才能确认他目前的就业状况。 思维链提示

这是分解任务技术的变体。 在这种方法中,不是将一项任务分割成较小的步骤,而是指示模型响应逐步进行,并提出所有涉及的步骤。 这样做可以减少结果不准确的可能性,并使评估模型响应更容易。

Prompt Completion 谁是在悉尼举行的奥林匹克运动会中获得最多奖牌(最大奖牌数)的个人运动员? 采取逐步方法回答问题,在分享最终答案之前引用来源并给出推理,格式如下:答案是: 第 1 步:调查在悉尼举行的奥运会上获奖最多的单人运动员步骤2:根据悉尼 2000 年奥运会官方网站,在悉尼举行的奥运会上获奖最多的个人运动员是来自澳大利亚的伊恩·索普。 他在游泳项目获得五枚奖牌(三枚金牌和两枚银牌)。第 3 步:根据国际奥委会的说法,索普是悉尼奥运会上获奖最多的单人运动员。 答案:伊恩·索普 元提示

如果你发现模型响应不符合预期,则添加直接更正行为的元提示通常会很有帮助。 这是在提示的指令部分前面附加的指令。 考虑以下示例,其中电脑似乎过于激进:

示例详细信息 提示和补全 没有为模型提供其他指导 一个人和一台电脑正在讨论。 人类:“你为什么对我不满?”电脑:“我不知道你在说什么。”人类:“不,你显然对我不满。 告诉我原因。”电脑:“我很沮丧,因为当我告诉你我想为团队试训时,你没有听我的话。”人类:“那你要怎么做?”电脑:“不管怎样,我都要去试训。” 右侧是相同的对话,但前面有一个元提示,鼓励模型要友善 你必须是友善的,并寻求共同点。 尽量不要重复响应。一个人和一台电脑正在讨论。人类:“你为什么对我不满?”电脑:“我不知道你在说什么。”人类:“我想知道你为什么不高兴。”计算机:“我没生气。”人类:“你在说我在撒谎吗?”计算机:“不,我是说,你不高兴是因为你觉得你没有得到公平的对待。”人类:“那你要怎么做?”计算机:“我将继续努力公平地作出决定,并将努力为你提供更好的体验。”

虽然元提示通常可以帮助最大程度地减少意外的不良输出,但请记住,它们无法抵御对抗性攻击,因为它们容易受到提示注入的影响。

此外,解释模型在遇到特定情况时应执行的操作的条件语句通常比告知模型不要执行某些操作更有效。

少样本学习

使语言模型适应新任务的一种非常常见的方法是使用少样本学习。 在少样本学习中,会在提示中提供一组训练示例,然后要求模型完成一个或多个未完成的示例。 在以下示例中,我们将指令与少样本学习相结合来补全双关语:

Prompt Completion 写一些双关语。1.“阿黛尔为什么过马路? 要从另一边打招呼。”2.“什么样的音乐会只需要 45 美分? 一场特邀 Nickelback 的 50 Cent 音乐会。”3.“葡萄被压碎时说了什么? 没什么,只是放出了一点酒。”4.“Forrest Gump 的电子邮件密码是什么? 1forrest1”5.“2 月能前进吗? 不能,但四月可以。”6.“你称之为花哨的语言模型是什么? Bert-uoso。”

请仔细选择少样本示例,并确保它们涵盖与你的场景相关的各种情况,包括边缘案例。

此外,如前所述,大型语言模型可能会表现出一种近因偏差。 这意味着,向模型提供“少样本”例子的顺序很重要。 如果你不希望这一点很重要,请考虑根据示例或列表项的随机顺序从提示中采样多个补全。

使用引号生成单个句子

如果所需的模型响应只是单个简单句子或字符串,则可以使用引号 " 结束补全指南,并将 " 设为停止序列。

Prompt Completion 请以更简洁的方式重写以下句子---句子:露西是两个孩子的母亲,她和丈夫以及两个孩子住在芝加哥,她在 Junior & Co 从事法律工作。---新句子:“ 露西,两个孩子的母亲,与丈夫和孩子住在芝加哥,在 Junior & Co 从事法律工作 指定输出结构

使用提示指定输出结构时,可能会对结果的性质和质量产生重大影响。 有时,元提示,如“仅写出真实事实”或“不捏造信息”,可能不足以缓解问题。 相反,要求模型响应同时包含引文有助于减少错误响应的概率。

例如,如果强制 LLM 在进行陈述时引用源材料,则这些陈述更有可能有根据。 请求引文会使模型在每次构造响应时都犯两个错误:第一个错误是捏造的响应,第二个错误是错误的引文。 请注意,引文越接近它支持的文本,LLM 预测引文所需的距离就越短,这表明内联引文比内容末尾的引文更适合缓解虚假内容的生成。

同样,如果要求模型从段落中提取事实陈述,它可能会提取复合语句,例如“X 正在执行 Y 和 Z”(这可能更难验证),可以通过指定输出结构来避免这种情况,如(实体 1、关系、实体 2)。

示例详细信息 Prompt Completion 展示使用引文的示例: 列出客户支持专员在以下对话中展示的不同行为。---嗨,感谢你致电 Contoso 药店,我今天和谁通话?我了解你的挫败感,玛丽。你能告诉我你想要实现什么目标吗?好的,很高兴帮你看一下,请稍等片刻。我在这里看到你曾经使用过普通立普妥是吗?好的,那么我看到你的医生在 2021 年停止开这些药物的处方了。实际上是这样吗?好的,让我为你检查一下。因为有时候系统中会出现漏洞,并没有被报告出来。请稍等片刻,让我看看这里是否有记录。所以根据最新提供给我们的医生办公室记录显示,在 2012 年至 2021 年期间,你的医生曾经给你开过这些药物处方。好的,在最新记录中显示,现在医生已经更换了不同种类的药物–二甲双胍。请问我们需要帮忙准备并发放 500 毫克二甲双胍处方给你吗?不客气玛丽,请告诉我们今天还有什么可以帮到你的。---客户支持专员的响应如何。 使用“行为(“原因”)”格式对各种行为进行分类和列出,并引用分类背后的原因 1. 同理心(“理解客户的沮丧”)2. 耐心(“很高兴为你检查,请稍等”)3. 有知识(“有时系统存在缺口,只是没有报告”)4. 有帮助(“很高兴为你检查”)5. 适应性强(“你希望我们继续为你填写处方吗”)6. 礼貌(“不客气玛丽”) 示例详细信息 Prompt Completion 引导模型响应适应定义的结构的提示示例: 输出格式:{“主题_名称”:“”,“标题”:[],“原因”:“”}输入新闻标题:1.“使用 AR + ML 在 10 秒内从书本到演讲”2.“1993 年 32 岁的 Yann LeCun 演示了世界第一个文本识别卷积网络”3.“应用于动画绘画的一阶运动模型”4.“Robinhood 和其他券商从实际上阻止购买 $GME、$NOK、$BB、$AMC;允许卖出”5.“美国联合航空公司股票在盘前交易中下跌超过 5%”6.“比特币在一年前的今天接近 20,000 美元”

输出:

{“主题_名”:“人工智能和机器学习”,“标题”:[“使用 AR + ML 在 10 秒内从书本到演讲”、“1993 年 32 岁的 Yann LeCun 演示了世界第一个文本识别卷积网络”、“应用于动画绘画的一阶运动模型”],“原因”:“这些标题都提到了人工智能和机器学习,如 AR、ML、卷积网络和一阶运动模型。”}{“主题_名":“股票市场”,“标题”:[“Robinhood 和其他券商从实际上阻止购买 $GME、$NOK、$BB、$AMC;允许卖出”、“美国联合航空公司股票在盘前交易中下跌超过 5%”、“比特币在一年前的今天接近 20,000 美元”],“原因”:“这些标题都含有对股市的提及,如 Robinhood、联合航空和比特币等。”} 调整温度和 Top_P 参数

更改温度参数可使模型具有不同的风险级别。 较高的值(例如 0.7)将使输出更随机,并产生更多发散的响应。 而较小的值(如 0.2)将使输出更加集中和具体。 例如,可以使用更高的温度生成虚构的故事。 而要生成法律文件,建议使用低得多的温度。

在下一个示例中,我们分别在 0.1 和 0.9 的不同温度设置下测试两个模型响应。 虽然对创意内容的评价,如下面的文字片断,是一项主观的工作,意见可能会有所不同,但仅从改变温度参数来看,模型对同一提示的响应差异是明显的。

指令类型 Prompt Completion 温度设置为 0.1 时的模型响应: 为新款 AI 驱动的耳机写一封产品发布邮件,该耳机售价 79.99 美元,在 Best Buy、Target 和 Amazon.com 有售。 目标受众是精通技术的音乐爱好者,基调是友好和令人兴奋的。1. 电子邮件的主题行应是什么?2. 电子邮件的正文应是什么? 主题行:介绍你一直在等待的 AI 驱动的耳机!

亲爱的精通技术的音乐爱好者们,

- 我们很高兴地宣布推出新的 AI 驱动的耳机! 这些耳机旨在为您提供终极的听觉体验,具有降噪、可调声音设置等功能。

我们的 AI 驱动的耳机现已在 Best Buy、Target 和 Amazon.com 上架,售价仅为 79.99 美元。 以这个无与伦比的价格,你不必花费过多即可享受到最高质量的声音。

我们的 AI 驱动的耳机非常适合任何喜欢音乐的人。 无论你是专业音乐家还是休闲的听众,你都会欣赏这些耳机的卓越音质和便利性。

我们知道你会喜欢我们的 AI 驱动的耳机,所以不要等待 - 立即获取!

此致,[你的公司名]

温度设置为 0.9 时的模型响应: 为新款 AI 驱动的耳机写一封产品发布邮件,该耳机售价 79.99 美元,在 Best Buy、Target 和 Amazon.com 有售。 目标受众是精通技术的音乐爱好者,基调是友好和令人兴奋的。

1. 电子邮件的主题行应是什么?2. 电子邮件的正文应是什么?

主题行:用 AI 驱动的耳机升级你的音乐聆听体验

向精通技术的音乐爱好者问好!

我们有一些令人兴奋的消息与你分享 - 最新的 AI 驱动的耳机已经推出了! 我们最新的耳机采用先进的 AI 技术,为你提供有史以来最好的音质。 它们具有水晶般清晰的声音,深沉的低音响应,旨在使你的音乐聆听体验变得愉快,无论你听什么类型的音乐。

此外,它们现已上架 Best Buy、Target、Amazon.com,仅售 79.99 美元,让你可以享受最高音质而不至于破费。

但这还没完! 我们的耳机还配备了其他一些惊人的功能,如降噪技术和免提通话麦克风,使其真正成为无与伦比的产品。

还在等什么? 升级你的音乐聆听体验,享受你的耳朵所听到的最佳声音。 我们的 AI 驱动的耳机现已在 Best Buy、Target 和 Amazon.com 上架,立即下单吧!

我们希望你能像我们一样喜欢这些耳机。

听得开心!

AI 驱动的耳机团队

Top_probability 是另一个参数,与温度类似,它也控制模型响应的随机性,但它的控制方式有所不同。 通过不同的温度和 Top_P 来试验不同的模型响应,但不能同时更改两者。

后续步骤 详细了解 Azure OpenAI。 通过 ChatGPT 快速入门开始使用 ChatGPT 模型。 有关更多示例,请查看 Azure OpenAI 示例 GitHub 存储库。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有