怎么做网站子页,大型网站建设平台,往届生做网站编辑,餐饮logo创意设计1.是什么
提示工程#xff08;Prompt Engineering#xff09;是一门较新的学科#xff0c;关注提示词开发和优化#xff0c;帮助用户将大语言模型#xff08;Large Language Model, LLM#xff09;用于各场景和研究领域。 掌握了提示工程相关技能将有助于用户更好地了解…1.是什么
提示工程Prompt Engineering是一门较新的学科关注提示词开发和优化帮助用户将大语言模型Large Language Model, LLM用于各场景和研究领域。 掌握了提示工程相关技能将有助于用户更好地了解大型语言模型的能力和局限性。
不仅仅是关于设计和研发提示词。它包含了与大语言模型交互和研发的各种技能和技术。提示工程在实现和大语言模型交互、对接以及理解大语言模型能力方面都起着重要作用。用户可以通过提示工程来提高大语言模型的安全性也可以赋能大语言模型比如借助专业领域知识和外部工具来增强大语言模型能力。prompt就是怎么用大模型给大模型说我们想要什么将我们的想法转化成大模型可以“认识的语言”然后返回给我们结果。
2.怎么用
通过简单的提示词Prompts获得大量结果但结果的质量与您提供的信息数量和完善度有关。一个提示词可以包含您传递到模型的_指令_或_问题_等信息也可以包含其他详细信息如_上下文_、_输入_或_示例_等。您可以通过这些元素来更好地指导模型并因此获得更好的结果。
例子
输入text f
你应该提供尽可能清晰、具体的指示以表达你希望模型执行的任务。\
这将引导模型朝向所需的输出并降低收到无关或不正确响应的可能性。\
不要将写清晰的提示与写简短的提示混淆。\
在许多情况下更长的提示可以为模型提供更多的清晰度和上下文信息从而导致更详细和相关的输出。# 需要总结的文本内容
prompt f
把用三个反引号括起来的文本总结成一句话。
{text}# 指令内容使用 来分隔指令和待总结的内容
response get_completion(prompt) # 此处是一个请求大模型的函数将prompt传给大模型
print(response)输出提供清晰具体的指示避免无关或不正确响应不要混淆写清晰和写简短更长的提示可以提供更多清晰度和上下文信息导致更详细和相关的输出。
提示词要素
如果您接触过大量提示工程相关的示例和应用您会注意到提示词是由一些要素组成的。
提示词可以包含以下任意要素
指令想要模型执行的特定任务或指令。
上下文包含外部信息或额外的上下文信息引导语言模型更好地响应。
输入数据用户输入的内容或问题。
输出指示指定输出的类型或格式。
为了更好地演示提示词要素下面是一个简单的提示旨在完成文本分类任务
提示词
请将文本分为中性、否定或肯定
文本我觉得食物还可以。
情绪
设计提示的通用技巧
从简单开始
在设计提示时需要记住这是一个迭代的过程需要大量的实验来获得最佳结果。使用像 OpenAI 或 Cohere 这样的简单平台是一个很好的起点。
您可以从简单的提示开始随着您的目标是获得更好的结果不断添加更多的元素和上下文。在此过程中对您的提示进行版本控制是至关重要的。当您阅读本指南时您会看到许多例子其中具体性、简洁性和简明性通常会给您带来更好的结果。
当您有一个涉及许多不同子任务的大任务时您可以尝试将任务分解为更简单的子任务并随着获得更好的结果而不断构建。这避免了在提示设计过程中一开始就添加过多的复杂性。
指令
您可以使用命令来指示模型执行各种简单任务例如“写入”、“分类”、“总结”、“翻译”、“排序”等从而为各种简单任务设计有效的提示。
请记住您还需要进行大量的实验以查看哪种方法最有效。尝试使用不同的关键字、上下文和数据尝试不同的指令看看哪种方法最适合您的特定用例和任务。通常情况下上下文与您要执行的任务越具体和相关效果越好。我们将在即将推出的指南中介绍采样和添加更多上下文的重要性。
其他人建议将指令放在提示的开头。建议使用一些清晰的分隔符如“###”来分隔指令和上下文。
例如
提示
### 指令 ###将以下文本翻译成西班牙语文本“hello”
输出
¡Hola!
具体性
对您希望模型执行的指令和任务非常具体。提示越具体和详细结果就越好。当您有所期望的结果或生成样式时这一点尤为重要。没有特定的令牌或关键字会导致更好的结果。更重要的是具有良好的格式和描述性提示。实际上在提示中提供示例非常有效可以以特定格式获得所需的输出。
在设计提示时您还应考虑提示的长度因为提示的长度有限制。考虑到您应该具体和详细的程度是需要考虑的。包含太多不必要的细节并不一定是一个好方法。这些细节应该是相关的并有助于完成手头的任务。这是您需要进行大量实验的事情。我们鼓励大量实验和迭代以优化您的应用程序的提示。
例如让我们尝试从一段文本中提取特定信息的简单提示。
提示
提取以下文本中的地名。所需格式地点逗号分隔的公司名称列表输入“虽然这些发展对研究人员来说是令人鼓舞的但仍有许多谜团。里斯本未知的香帕利莫德中心的神经免疫学家 Henrique Veiga-Fernandes 说“我们经常在大脑和我们在周围看到的效果之间有一个黑匣子。”“如果我们想在治疗背景下使用它我们实际上需要了解机制。””
输出
地点里斯本香帕利莫德中心
输入文本来自这篇 Nature 文章(opens in a new tab)。
避免不精确
在上面关于详细和格式改进的提示中很容易陷入想要过于聪明的提示陷阱从而可能创建不精确的描述。通常最好是具体和直接。这里的类比非常类似于有效的沟通——越直接信息传递就越有效。
例如您可能有兴趣了解提示工程的概念。您可以尝试这样做
解释提示工程的概念。保持解释简短只有几句话不要过于描述。
从上面的提示中不清楚要使用多少句话和什么样的风格。您可能仍然可以通过上面的提示获得良好的响应但更好的提示是非常具体、简洁和直接的。例如
使用 2-3 句话向高中学生解释提示工程的概念。
做还是不做
设计提示时的另一个常见技巧是避免说不要做什么而是说要做什么。这鼓励更具体化并关注导致模型产生良好响应的细节。
3.应用场景
文本概括信息提取问答文本分类对话代码生成推理
4.提示技术
1.零样本提示zero-shot
经过大量数据训练并调整指令的LLM能够执行零样本任务。如
提示词
将文本分类为中性、负面或正面。文本我认为这次假期还可以。
情感
输出
中性
我们没有向模型提供任何示例——这就是零样本能力的作用。
指令调整已被证明可以改善零样本学习Wei等人2022(opens in a new tab)。指令调整本质上是在通过指令描述的数据集上微调模型的概念。此外RLHF(opens in a new tab)来自人类反馈的强化学习已被采用以扩展指令调整其中模型被调整以更好地适应人类偏好。
2.少样本提示few-shot
虽然大型语言模型展示了惊人的零样本能力但在使用零样本设置时它们在更复杂的任务上仍然表现不佳。少样本提示可以作为一种技术以启用上下文学习我们在提示中提供演示以引导模型实现更好的性能。演示作为后续示例的条件我们希望模型生成响应。
根据 Touvron et al. 2023(opens in a new tab) 等人的在 2023 年的论文当模型规模足够大时小样本提示特性开始出现 (Kaplan et al., 2020)(opens in a new tab)。
让我们通过Brown等人2020年(opens in a new tab)提出的一个例子来演示少样本提示。在这个例子中任务是在句子中正确使用一个新词。
提示
“whatpu”是坦桑尼亚的一种小型毛茸茸的动物。一个使用whatpu这个词的句子的例子是
我们在非洲旅行时看到了这些非常可爱的whatpus。
“farduddle”是指快速跳上跳下。一个使用farduddle这个词的句子的例子是
输出
当我们赢得比赛时我们都开始庆祝跳跃。
模型通过提供一个示例即1-shot已经学会了如何执行任务。对于更困难的任务我们可以尝试增加演示例如3-shot、5-shot、10-shot等。
根据Min等人2022(opens in a new tab)的研究结果以下是在进行少样本学习时关于演示/范例的一些额外提示
“标签空间和演示指定的输入文本的分布都很重要无论标签是否对单个输入正确”使用的格式也对性能起着关键作用即使只是使用随机标签这也比没有标签好得多。其他结果表明从真实标签分布而不是均匀分布中选择随机标签也有帮助。
3.链式思考CoT提示Chain-of-Thought Prompting 给出答案的思考过程让大模型学习人的思考路径。
图片来源Wei等人2022(opens in a new tab)
在 Wei等人2022(opens in a new tab) 中引入的链式思考CoT提示通过中间推理步骤实现了复杂的推理能力。您可以将其与少样本提示相结合以获得更好的结果以便在回答之前进行推理的更复杂的任务。
零样本 COT 提示 图片来源Kojima等人2022(opens in a new tab)
最近提出的一个新想法是 零样本CoT(opens in a new tab) Kojima 等人2022年它基本上涉及将“让我们逐步思考”添加到原始提示中。这在没有太多示例可用于提示时特别有用。
自动思维链Auto-CoT
当使用思维链提示时这个过程需要手工制作有效且多样化的例子。这种手动工作可能会导致次优解决方案。Zhang et al. 2022(opens in a new tab) 提出了一种消除人工的方法即利用 LLMs “让我们一步一步地思考” 提示来生成一个接一个的推理链。这种自动过程仍然可能在生成的链中出现错误。为了减轻错误的影响演示的多样性很重要。这项工作提出了Auto-CoT它对具有多样性的问题进行采样并生成推理链来构建演示。
Auto-CoT 主要由两个阶段组成
阶段1问题聚类将给定问题划分为几个聚类阶段2演示抽样从每组数组中选择一个具有代表性的问题并使用带有简单启发式的 Zero-Shot-CoT 生成其推理链
简单的启发式方法可以是问题的长度例如60 个 tokens和理由的步骤数例如5 个推理步骤。这鼓励模型使用简单而准确的演示。
该过程如下图所示 图片来源Zhang等人2022(opens in a new tab)
Auto-CoT 的代码可在这里找到Github(opens in a new tab)
4.自我一致性
也许在提示工程中更高级的技术之一是自我一致性。由 Wang等人2022(opens in a new tab) 提出自我一致性旨在“替换链式思维提示中使用的天真贪婪解码方法”。其想法是通过少样本 CoT 采样多个不同的推理路径并使用生成结果选择最一致的答案。这有助于提高 CoT 提示在涉及算术和常识推理的任务中的性能。
5.生成知识提示
这就是 Liu 等人 2022(opens in a new tab) 的论文所尝试的——生成知识以作为提示的一部分。
6.链式提示
为了提高大语言模型的性能使其更可靠一个重要的提示工程技术是将任务分解为许多子任务。 确定子任务后将子任务的提示词提供给语言模型得到的结果作为新的提示词的一部分。 这就是所谓的链式提示prompt chaining一个任务被分解为多个子任务根据子任务创建一系列提示操作。
链式提示可以完成很复杂的任务。LLM 可能无法仅用一个非常详细的提示完成这些任务。在链式提示中提示链对生成的回应执行转换或其他处理直到达到期望结果。
除了提高性能链式提示还有助于提高 LLM 应用的透明度增加控制性和可靠性。这意味着您可以更容易地定位模型中的问题分析并改进需要提高的不同阶段的性能。
链式提示在构建 LLM 驱动的对话助手和提高应用程序的个性化用户体验方面非常有用。
7.思维树 (ToT)
对于需要探索或预判战略的复杂任务来说传统或简单的提示技巧是不够的。最近Yao et el. (2023)(opens in a new tab) 提出了思维树Tree of ThoughtsToT框架该框架基于思维链提示进行了总结引导语言模型探索把思维作为中间步骤来解决通用问题。
ToT 维护着一棵思维树思维由连贯的语言序列表示这个序列就是解决问题的中间步骤。使用这种方法LM 能够自己对严谨推理过程的中间思维进行评估。LM 将生成及评估思维的能力与搜索算法如广度优先搜索和深度优先搜索相结合在系统性探索思维的时候可以向前验证和回溯。 8.自动推理并使用工具 (ART)
使用 LLM 完成任务时交替运用 CoT 提示和工具已经被证明是一种即强大又稳健的方法。这类方法通常需要针对特定任务手写示范还需要精心编写交替使用生成模型和工具的脚本。Paranjape et al., (2023)(opens in a new tab)提出了一个新框架该框架使用冻结的 LLM 来自动生成包含中间推理步骤的程序。
ARTAutomatic Reasoning and Tool-use的工作原理如下
接到一个新任务的时候从任务库中选择多步推理和使用工具的示范。在测试中调用外部工具时先暂停生成将工具输出整合后继续接着生成。
ART 引导模型总结示范将新任务进行拆分并在恰当的地方使用工具。ART 采用的是零样本形式。ART 还可以手动扩展只要简单地更新任务和工具库就可以修正推理步骤中的错误或是添加新的工具。这个过程如下 9.ReAct框架
ReAct 的灵感来自于 “行为” 和 “推理” 之间的协同作用正是这种协同作用使得人类能够学习新任务并做出决策或推理。
链式思考 (CoT) 提示显示了 LLMs 执行推理轨迹以生成涉及算术和常识推理的问题的答案的能力以及其他任务 (Wei 等人2022)(opens in a new tab)。但它因缺乏和外部世界的接触或无法更新自己的知识而导致事实幻觉和错误传播等问题。
ReAct 是一个将推理和行为与 LLMs 相结合通用的范例。ReAct 提示 LLMs 为任务生成口头推理轨迹和操作。这使得系统执行动态推理来创建、维护和调整操作计划同时还支持与外部环境(例如Wikipedia)的交互以将额外信息合并到推理中。下图展示了 ReAct 的一个示例以及执行问题回答所涉及的不同步骤。
参考文献很好的中文文档
面向开发者的文档