首页 > 其他分享 >大语言模型LLM《提示词工程指南》学习笔记01

大语言模型LLM《提示词工程指南》学习笔记01

时间:2024-04-05 13:58:05浏览次数:28  
标签:01 语言 示例 提示 模型 笔记 penalty token LLM

文章目录

大语言模型LLM《提示词工程指南》学习笔记01

提示工程(Prompt Engineering)是一门较新的学科,关注提示词开发和优化,帮助用户将大语言模型(Large Language Model, LLM)用于各场景和研究领域。

  • 掌握了提示工程相关技能将有助于用户更好地了解大型语言模型的能力和局限性。
  • 研究人员可利用提示工程来提升大语言模型处理复杂任务场景的能力,如问答和算术推理能力。
  • 开发人员可通过提示工程设计、研发强大的工程技术,实现和大语言模型或其他生态工具的高效接轨。
    提示工程不仅仅是关于设计和研发提示词。它包含了与大语言模型交互和研发的各种技能和技术。
    提示工程在实现和大语言模型交互、对接,以及理解大语言模型能力方面都起着重要作用。
    用户可以通过提示工程来提高大语言模型的安全性,也可以赋能大语言模型,比如借助专业领域知识和外部工具来增强大语言模型能力。
    基于对大语言模型的浓厚兴趣,我们编写了这份全新的提示工程指南,介绍了大语言模型相关的论文研究、学习指南、模型、讲座、参考资料、大语言模型能力以及与其他与提示工程相关的工具。

以下是使用不同LLM提供程序时会遇到的常见设置:

Temperature:简单来说,temperature 的参数值越小,模型就会返回越确定的一个结果。如果调高该参数值,大语言模型可能会返回更随机的结果,也就是说这可能会带来更多样化或更具创造性的产出。我们目前也在增加其他可能 token 的权重。在实际应用方面,对于质量保障(QA)等任务,我们可以设置更低的 temperature 值,以促使模型基于事实返回更真实和简洁的结果。 对于诗歌生成或其他创造性任务,你可以适当调高 temperature 参数值。

Top_p:同样,使用 top_p(与 temperature 一起称为核采样的技术),可以用来控制模型返回结果的真实性。如果你需要准确和事实的答案,就把参数值调低。如果你想要更多样化的答案,就把参数值调高一些。
** 一般建议是改变 Temperature 和 Top P 其中一个参数就行,不用两个都调整。**

Max Length:您可以通过调整 max length 来控制大模型生成的 token 数。指定 Max Length 有助于防止大模型生成冗长或不相关的响应并控制成本。

Stop Sequences:stop sequence 是一个字符串,可以阻止模型生成 token,指定 stop sequences 是控制大模型响应长度和结构的另一种方法。例如,您可以通过添加 “11” 作为 stop sequence 来告诉模型生成不超过 10 个项的列表。

Frequency Penalty:frequency penalty 是对下一个生成的 token 进行惩罚,这个惩罚和 token 在响应和提示中出现的次数成比例, frequency penalty 越高,某个词再次出现的可能性就越小,这个设置通过给 重复数量多的 Token 设置更高的惩罚来减少响应中单词的重复。

Presence Penalty:presence penalty 也是对重复的 token 施加惩罚,但与 frequency penalty 不同的是,惩罚对于所有重复 token 都是相同的。出现两次的 token 和出现 10 次的 token 会受到相同的惩罚。 此设置可防止模型在响应中过于频繁地生成重复的词。 如果您希望模型生成多样化或创造性的文本,您可以设置更高的 presence penalty,如果您希望模型生成更专注的内容,您可以设置更低的 presence penalty。

与 temperature 和 top_p 一样,一般建议是改变 frequency penalty 和 presence penalty 其中一个参数就行,不要同时调整两个。

在我们开始一些基础示例之前,请记住最终生成的结果可能会和使用的大语言模型的版本而异。

标准提示词应该遵循以下格式:

<问题>?

<指令>

这种可以被格式化为标准的问答格式,如:

Q: <问题>?
A: 

以上的提示方式,也被称为 零样本提示(zero-shot prompting),即用户不提供任务结果相关的示范,直接提示语言模型给出任务相关的回答。某些大型语言模式有能力实现零样本提示,但这也取决于任务的复杂度和已有的知识范围。具体的零样本提示示例如下:

Q: What is prompt engineering?

对于一些较新的模型,你可以跳过 Q: 部分,直接输入问题。因为模型在训练过程中被暗示并理解问答任务,换言之,提示词可以简化为下面的形式:提示词What is prompt engineering?

基于以上标准范式,目前业界普遍使用的还是更高效的 _小样本提示(Few-shot Prompting)_范式,即用户提供少量的提示范例,如任务说明等。小样本提示一般遵循以下格式:

<问题>?
<答案>
<问题>?
<答案>
<问题>?
<答案>
<问题>?

而问答模式即如下:

Q: <问题>?
A: <答案>
Q: <问题>?
A: <答案>
Q: <问题>?
A: <答案>
Q: <问题>?
A:

注意,使用问答模式并不是必须的。你可以根据任务需求调整提示范式。比如,您可以按以下示例执行一个简单的分类任务,并对任务做简单说明:提示词

This is awesome! // Positive
This is bad! // Negative
Wow that movie was rad! // Positive
What a horrible show! //

输出结果

Negative

语言模型可以基于一些说明了解和学习某些任务,而小样本提示正好可以赋能上下文学习能力。我们将在接下来的章节中更广泛的讨论如何使用零样本提示和小样本提示。

提示词要素

如果您接触过大量提示工程相关的示例和应用,您会注意到提示词是由一些要素组成的。

提示词可以包含以下任意要素:

  • 指令:想要模型执行的特定任务或指令。

  • 上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。

  • 输入数据:用户输入的内容或问题。

  • 输出指示:指定输出的类型或格式。

为了更好地演示提示词要素,下面是一个简单的提示,旨在完成文本分类任务:

提示词

请将文本分为中性、否定或肯定
文本:我觉得食物还可以。
情绪:

在上面的提示示例中,指令是“将文本分类为中性、否定或肯定”。输入数据是“我认为食物还可以”部分,使用的输出指示是“情绪:”。请注意,此基本示例不使用上下文,但也可以作为提示的一部分提供。例如,此文本分类提示的上下文可以是作为提示的一部分提供的其他示例,以帮助模型更好地理解任务并引导预期的输出类型。

注意,提示词所需的格式取决于您想要语言模型完成的任务类型,并非所有以上要素都是必须的。我们会在后续的指南中提供更多更具体的示例。

标签:01,语言,示例,提示,模型,笔记,penalty,token,LLM
From: https://blog.csdn.net/qq_39813001/article/details/137390832

相关文章

  • JavaWeb学习笔记——第十五天
    Maven高级分模块设计与开发分模块设计就是将项目按照功能拆分成若干个子模块。优点:方便项目的管理维护、扩展,也方便模块间的相互调用,资源共享。分模块设计需要先针对模块功能进行设计,再进行编码实现。不会先将工程开发完毕,然后进行拆分。继承与聚合继承继承描述的是两个......
  • P7859 [COCI2015-2016#2] GEPPETTO
    原题链接这真的是橙题吗题解读题,每个材料都有用或不用两种选择,然后n的数据范围也很小,所以考虑二进制dp(别管我为什么不叫状态压缩)遍历0到\(2^{20}-1\)(十进制下),如果存在互相矛盾的1,代表这个状态不能用code#include<bits/stdc++.h>usingnamespacestd;intn,m;map<int......
  • MPPT学习笔记
    一、基本概述基础算法有三种:恒定电压法(不算真正的mppt)、扰动观察法(Perturb and Observe algorithms,P&O)、电导增量法(Incremental Conductancealgorithm,INC)智能优化算法:粒子群算法(PSO)、万有引力搜索算法(GravitationalSearchAlgorithm,GSA)、布谷鸟算法(CSA)等。......
  • Coursera自然语言处理专项课程04:Natural Language Processing with Attention Models
    NaturalLanguageProcessingSpecializationIntroductionhttps://www.coursera.org/specializations/natural-language-processingCertificateNaturalLanguageProcessingwithAttentionModelsCourseCertificate本文是学习这门课NaturalLanguageProcessing......
  • P2824 [HEOI2016/TJOI2016] 排序
    简要题意给定一个长度为\(n\)的排列\(a\),有\(m\)次操作:将\([l,r]\)从小到大排序将\([l,r]\)从大到小排序求\(m\)次操作后\(a_q\)的值。\(n,m\leq10^5\)思路首先这种排序的数据结构没有什么想法,根本原因是因为值太多了。但是我们观察到这是一个排列,这对于解......
  • FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr
    ​FFmpeg内置了aac音频格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“5.2.2 Linux环境集成mp3lame”又介绍了如何给FFmpeg集成mp3格式,常见的音频文件除了这两种之外,还有ogg和amr两种格式也较常用。其中ogg格式的编解码依赖于libogg和libvorbis,而amr格式的编解码依赖于op......
  • notification+Android笔记
    notification通知应用UI之外的消息并显示即推送;NotificationManager负责管理通知,例如显示取消,删除等;importandroid.app.Notification;importandroid.app.NotificationChannel;importandroid.app.NotificationManager;importandroid.content.Context;importandroid.......
  • 01-元组、列表
    列表和元组的区别:'''1.列表是动态数组,它们可变且可以重设长度(改变其内部元素的个数)。2.元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。3.元组缓存于Python运行时环境,这意味着我们每次使用元组时无须访问内核去分配内存。'''tup1=(1,2,3)print(type(tup1))......
  • 手把手教你做阅读理解题-初中中考阅读理解解题技巧011-Noticeboard
    PDF格式公众号回复关键字:ZKYD011阅读理解技巧,在帮助读者有效获取和理解文本信息方面发挥着重要作用,熟练掌握如下6个技巧,可快速突破阅读理解1预览文章结构在开始深入阅读之前,快速浏览文章的标题、段落开头和结尾,可以迅速把握文章的主题、大致内容和结构标题通常能概括文章......
  • Linux守护进程之udev-笔记
    一、什么是udev?        udev 是Linux系统中的一个守护进程,它的主要任务是管理所有的设备节点。你可以把它想象成一个设备的“管家”,负责识别、监控和管理连接到计算机上的硬件设备。当一个新设备被连接到系统时,`udev`会立刻识别它,并为其创建相应的文件和目录,这......