大语言模型之八-提示工程(Prompt engineer)

news2024/11/30 4:56:07

大语言模型的效果好,很大程度上归功于算力和数据集,算力使得模型可以足够大,大到模型的理解、记忆、推理和生成以及泛化能力可以同时兼备,而数据集则是模型学习的来源。

LLM中的prompt方法主要用于fine-tune阶段,即在预训练的基础上,针对特定任务的模板或提示语,这些提示语通常包含了问题的关键信息,例如问题类型、答案类型、限制条件等,通过少量的标注数据(提示语)对模型进行微调,使其更好地适应特定的任务和应用场景。在这个过程中,prompt工程可以帮助模型更好地理解任务和输入,并生成更准确的输出,从而提高模型在实际应用中的效果和性能。

在推理时,prompt方法不用于修改用户的输入。相反,它主要用于为模型提供额外的上下文信息,以便更好地理解用户的输入和问题。例如,在问答任务中,prompt方法可以生成一个与问题相关的提示语,帮助模型更好地理解问题和用户输入,并生成更准确的答案。

具体来说,prompt工程可以通过以下几个方面来帮助模型:

提供任务相关的提示信息:prompt工程可以生成针对特定任务的提示信息,例如问题类型、答案类型、限制条件等。这些提示信息可以帮助模型更好地理解任务和输入,并生成更准确的输出。

生成针对特定任务的模板:prompt工程可以生成针对特定任务的模板,以帮助模型更好地生成符合要求的输出。例如,在问答任务中,可以使用模板来指导模型生成符合问题要求的答案。

提供额外的上下文信息:prompt工程可以提供额外的上下文信息,以帮助模型更好地理解输入和问题。例如,在文本生成任务中,可以使用prompt工程提供的上下文信息来帮助模型生成符合要求的文本。

在文本生成领域的Prompt 工程,为大型语言模型(LLM)创建输入请求,从而产生预期的输出,要能为模型创造好的问题-答案对,一个好的提示工程师往往对大模型具有一定的理解,并且能够清晰归纳总结和陈述问题。提示工程最早可以追溯到ChatGPT的文本-文本模型,在这之后对于文生图以及非文提示都有发展。

当开发人员希望用模型构建系统时,模型幻觉限制带来了真正的挑战,因为整个系统必须满足质量、安全性和可信要求。例如,我们能相信LLM提供的自动代码审查是正确的吗?或者关于如何处理保险相关任务的问题的返回答案是可靠的吗?

本文介绍几种常用的文生文方法,这些方法可以用在营销、广告创意、数学、律法、商业案例等方便,问了方便,本篇以数学上的鸡兔同笼问题( "鸡和兔在一个笼子里,共有35个头,94只脚,那么鸡有多少只,兔有多少只?”)为例。

1.1 模型幻觉

大型语言模型中的幻觉源于数据压缩和不一致。由于许多数据集可能已过时或不可靠,因此质量保证具有挑战性。为了减轻幻觉:

模型的温度是指用于调整模型预测的概率分布的标量值。在LLM的情况下,它在坚持模型从训练数据中学到的东西和产生更多样化或创造性的反应之间取得平衡。通常,这些创造性的答案更容易产生幻觉。

1.约束模型创造力的温度参数;
2.关注prompt工程,引导模型逐步思考,并在响应中提供事实和来源参考。
3.结合外部知识来源以改进答案验证。

这些方法的结合可以达到最佳效果。

paper将生成虚假的或者不忠实于信息源的生成内容称为幻觉。
幻觉可以归为以下几类:
1.逻辑谬误:模型在推理中出错,提供错误的答案。
2.捏造事实:模型没有回答“我不知道”,而是自信地断言不存在的事实。
3.数据导致的偏差:由于某些数据的普遍存在,模型的输出可能会出现偏差,导致结果不正确。

对于LLM为什么会产生幻觉,一种解释是模型的训练的过程是数据的压缩过程,如下图所示,训练集里大量的数据最终压缩为少量参数以及参数间关系,这种压缩的关键是生成式模型存储了输入(文本或像素)之间关系(概率)的数学表示,而不是输入本身,更重要的是,这种表示让我们提取知识(通过抽样或运行查询/提示)。

这种压缩降低了保真度,完全恢复原始知识成为一项困难的,因而模型倾向于不完美地“填补空白”或产生幻觉,这是对这种压缩但有用的知识表示的权衡。

当LLM的训练数据集包含有关向他们提出的问题的有限、过时或矛盾的信息时,LLM也会产生幻觉。
在这里插入图片描述
Prompt方法如下:

1.2 直接回答

在这里插入图片描述

1.3 思维链(CoT)

Chain-of-thought (CoT) 思维链提示,思维链的核心思想是将最终答案获取分为多个中间过程,这一中间到最终答案的过程就是诱导模型用模仿思路的推理步骤来提高推理能力,这会提高模型再数学以及常识推理方面的能力。比如数学上常见的鸡兔同笼问题,在早期CoT是提供Q&A少量示例的,这被称为few-shot提示技术,当然也可以在Q的时候加上“请逐步推导”,“请给出详细的思考过程”,这被证明同样是有效的,这被称为zero-shot提示技术。很多模型显示CoT技术能够提升模型的推理能力。
在这里插入图片描述

1.4 Least-to-most prompting

这一方法的核心思想是既然人类通过事实和逻辑思维得出结论,那么通过一些逻辑思维推理的例子,LLM也应该可以学习到这一技能。
CoT作为一种小样本(few-shot )提示工程方法,LLM可以被教导如何将挑战或问题分解成推理模式。Self-Ask方法不仅引导LLM在推理的时候遵循CoT方法,也让LLM能够自己提问以获得最终答案。但是如果LLM要解决的问题比Self-Ask例子更难呢?Least-to-most就是用于处理这类问题的prompt方法,该方法以以下策略为基础:
1.将复杂问题分解为一系列更简单的子问题。
2.然后依次解决每一个子问题。
先解决的子问题的答案有益于未解决的子问题,最少到最多的提示是一种使用逐步提示序列来得出最终结论的技术。

从最少到最多的提示可以结合思维链和自洽方法,对于一些问题,两阶段的least-to-most prompting可以合并为单次prompt。
在这里插入图片描述

1.5 Self-consistency decoding

思维链推理产生了一条思维路径,然后反过来又被遵循。相反,自我一致性利用了直觉,即一个复杂的推理问题通常允许多种不同的思维方式,从而导致其唯一的正确答案。
自洽方法由三个步骤组成:

提示LLM生成思维链(CoT)推理部分。
生成一组多样化的推理路径。
为最终答案选择最一致的输出。
在这里插入图片描述

1.6 Self-Ask Prompting

这种方法的核心思想是即使LLM对问题没有明确直接的答案,但是LLM有足够知识和技能,这些知识和技能能够解决一些子问题,通过这些子问题能够解决最终的问题。Source.
自我提问提示是从直接和思维链提示的进步,LLM推理被明确展示,LLM还将问题分解为更小的后续问题,LLM知道何时达到最终答案,并且可以从后续中间答案转移到最终答案。
在这里插入图片描述

from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType

self_ask_with_search = initialize_agent(
    tools, llm, agent=AgentType.SELF_ASK_WITH_SEARCH, verbose=True
)
self_ask_with_search.run(
    "鸡和兔在一个笼子里,共有35个头,94只脚,那么鸡有多少只,兔有多少只?”
)

1.7 Meta-Prompting

Meta-Prompting方法是指通过提问的方式引导用户思考问题,即能够根据问题自己提问思考并逐步解决原始问题,以下是使用Meta-Prompting方法详细回答这个问题的步骤:

Q: 鸡和兔在一个笼子里,共有35个头,94只脚,那么鸡有多少只,兔有多少只?

A: 我们可以通过以下问题来引导思考:

鸡和兔的数量分别是多少?设鸡的数量为x,兔的数量为y。

题目中给出了哪些条件?我们需要将这些条件转化为方程式。

如何将问题转化为方程组的形式?可以根据头和脚的数量来列出方程组。

如何求解方程组?可以使用代数方法或图形方法求解。

求解出来的结果是否符合题目要求?我们需要检验求解出来的结果是否满足题目中给出的条件。

最终的结果是什么?我们需要将求解出来的鸡和兔的数量反馈给用户。

根据以上问题,我们可以得到以下详细回答:

鸡和兔的数量分别是多少?设鸡的数量为x,兔的数量为y。

题目中给出了哪些条件?我们需要将这些条件转化为方程式。题目中给出了35个头和94只脚,因此可以列出以下两个方程式:

x + y = 35 (鸡和兔的总数为35)
2x + 4y = 94 (鸡的脚有2只,兔的脚有4只)

如何将问题转化为方程组的形式?可以根据头和脚的数量来列出方程组。我们可以通过以下问题来引导思考:

鸡和兔的总数是多少?
鸡和兔的脚的总数是多少?
鸡和兔的脚的总数如何与鸡和兔的数量相关联?
根据以上问题,我们可以得到以下方程组:

x + y = 35 (鸡和兔的总数为35)
2x + 4y = 94 (鸡的脚有2只,兔的脚有4只)

如何求解方程组?可以使用代数方法或图形方法求解。我们可以通过以下问题来引导思考:

如何消去其中一个未知量?
如何求解另一个未知量?
根据以上问题,我们可以得到以下过程:

将第一个方程式乘以2,得到2x + 2y = 70
将第二个方程式减去上面的式子,得到2y = 24
解得y = 12
将y = 12代入第一个方程式,得到x = 23

求解出来的结果是否符合题目要求?我们需要检验求解出来的结果是否满足题目中给出的条件。我们可以通过以下问题来引导思考:

求解出来的鸡和兔的数量是否满足题目中给出的总数?
求解出来的鸡和兔的脚的数量是否满足题目中给出的总数?
根据以上问题,我们可以得到以下答案:

鸡和兔的总数为35,求解出来的鸡和兔数量之和为35,符合题目要求。
鸡和兔的脚的总数为94,求解出来的鸡和兔脚的数量之和为94,符合题目要求。
最终的结果是什么?我们需要将求解出来的鸡和兔的数量反馈给用户。因此,最终结果是:鸡有23只,兔有12只。

1.8 ReAct

对人类来说,推理和行动之间的紧密协同使人类能够快速学习新任务,并进行稳健的推理和决策。即使面临不可预见的情况、信息或不确定性,我们也能做到这一点。ReAct核心思想是将推理和采取行动结合起来。
在这里插入图片描述根据研究,ReAct通过与维基百科等知识源交互,克服了CoT推理的幻觉和错误级联问题。生成了类似人类的任务解决轨迹。

如下图所示,在基于ReAct的Agent的事件序列中,推理跟踪使LLM的最终结果更具可解释性,并在思维过程中使用各种引用。

from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType

react = initialize_agent(tools, llm, agent=AgentType.REACT_DOCSTORE, verbose=True)

1.9 Symbolic Reasoning & PAL

Symbolic Reasoning & PAL方法是一种基于符号推理和可行性逻辑的智能问答技术,它可以使用逻辑推理和知识表示来解决复杂的问题。
在这里插入图片描述
鸡兔同笼本身就是数学问题,很容易想到用符号化的方法解决这类问题。下面是一个蔬菜统计问题,其也展示了符号化的方法过程。
在这里插入图片描述

1.10 Iterative Prompting

LLM微调以及增强的提示工程都可以提升模型的性能。确保prompt是上下文相关的,包含小样本训练示例和对话历史。迭代提示应该建立一个上下文思维链,它否定了不相关事实和幻觉的产生。交互式上下文感知&上下文提示。

1.11 Sequential Prompting

通常推荐系统是在流水线架构中开发的,包括多阶段候选集生成(检索更相关的项目)和排名(将相关项目排名在更高的位置)过程。Sequential Prompting侧重于推荐系统的排名阶段,因为LLM在大规模候选集上运行更昂贵。
排序性能对检索到的排名靠前的候选项目敏感,更适合考察LLM推荐能力的细微差异。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/991748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DIM层维度表学习之用户维度表分析

1.用户维度表的模型 DROP TABLE IF EXISTS dim_user_zip; CREATE EXTERNAL TABLE dim_user_zip (id STRING COMMENT 用户ID,name STRING COMMENT 用户姓名,phone_num STRING COMMENT 手机号码,email STRING COMMENT 邮箱,user_level STRING COM…

ArcGIS Pro3.0.2保姆级安装教程

软件简介: ArcGIS Pro是ERSI推出的新一代原生态64位ArcGIS桌面产品。具备强大的二维、三维一体化功能,继承了传统桌面产品ArcMap等产品几乎所有的功能,并在多个方面作了进一步的优化和改进,是云端一体化、数据科学与空间数据科学…

深入理解 JVM 之——字节码指令与执行引擎

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 类文件结构 Write Once,Run Anywhere 对于 C 语言从程序到运行需要经过编译的过程,只有经历了编译后,我们所编写的代码才能够翻译为机器可以直接运行的二进制代码&#x…

Java“牵手”淘宝商品列表数据,关键词搜索淘宝商品数据接口,淘宝API申请指南

淘宝商城是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取淘宝商品列表和商品详情页面数据,您可以通过开放平台的接口或者直接访问淘宝商城的网页来获取商品详情信息。以下是两种常用方法的介绍&…

面试求职-简历编写技巧

没有高水平简历 只有高匹配的简历 试问一下:如果一个非常牛逼的软件工程的硕士,投递市场营销岗位,结果会是什么样呢? 这位同学大概率没办法通过简历。 不是因为他不够优秀,而是因为简历和岗位不够匹配。 在公司的招…

第20章 原子操作实验(iTOP-RK3568开发板驱动开发指南 )

在上一章节的实验中,对并发与竞争进行了实验,两个app应用程序之间对共享资源的竞争访问引起了数据传输错误,而在Linux内核中,提供了四种处理并发与竞争的常见方法,分别是原子操作、自旋锁、信号量、互斥体,…

Linux DirtyPipe权限提升漏洞 CVE-2022-0847

Linux DirtyPipe权限提升漏洞 CVE-2022-0847 漏洞描述 CVE-2022-0847-DirtyPipe-Exploit CVE-2022-0847 是存在于 Linux内核 5.8 及之后版本中的本地提权漏洞。攻击者通过利用此漏洞,可覆盖重写任意可读文件中的数据,从而可将普通权限的用户提升到特权…

YOLOV7改进-具有隐式知识学习的Efficient解耦头

[解耦头][https://github.com/z1069614715/objectdetection_script/blob/master/yolo-improve/yolov7-DecoupledHead.py] 1、复制这些到yolo.py 2、到这 3、复制下半部分到yolo.py 4、替换这里 5、最后的加到上面的这里 6、添加 7、添加 8、V5大概一个点的提升 9、解…

快速完成工信部APP备案流程_以阿里云APP备案为例

阿里云APP备案流程分为6步,APP备案成功后应用可以上架,登录阿里云账号填写APP信息,等待阿里云初审,初审通过后进行工信部短信核验,管局审核通过后APP即可备案成功,最后移动APP应用可以分发平台上架&#xf…

万字长文,梳理清楚Python多线程与多进程!

作者丨钱魏Way 来源 https://www.biaodianfu.com/python-multi-thread-and-multi-process.html 在学习Python的过程中,有接触到多线程编程相关的知识点,先前一直都没有彻底的搞明白。今天准备花一些时间,把里面的细节尽可能的梳理清楚。 …

Unity 之 Invoke 与InvokeRepeting 函数控制定时调用

文章目录 InvokeInvokeRepeating Invoke 在Unity游戏开发中,Invoke是一种用于延迟调用方法的方法。它允许你在一定的时间之后执行特定的函数或方法,通常用于执行定时任务,例如在一段时间后触发一个事件或在一定间隔内重复执行某个方法。Invo…

第68步 时间序列建模实战:ARIMA建模(Matlab)

基于WIN10的64位系统演示 一、写在前面 这一期,我们使用Matlab进行SARIMA模型的构建。 不同样,这里使用另一个数据: 采用《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic …

65.Linux系统上库文件的生成与使用

目录 1.什么是库文件 2.静态库的生成与使用 2.1静态库的生成 2.2静态库的使用 3.共享库的生成和使用 3.1共享库的生成 3.2共享库的使用 4、静态库和共享库的区别 1.什么是库文件 库是一组预先编译好的方法的集合。Linux系统存储的库的位置一般在:/lib 和 /…

云服务器下如何部署Django项目详细操作步骤

前期本人完成了“编写你的第一个 Django 应用程序”,有了一个简单的项目代码,在本地window系统自测没问题了,接下来就想办法部署到服务器上,可以通过公网访问我们的Django项目。将开发机器上运行的开发版软件实际安装到服务器上进…

四川玖璨电子商务有限公司:抖店代运营

抖店代运营是一种新兴的电商服务模式,通过专业团队全程管理店铺运营,帮助商家快速扩大销售规模。抖店代运营的出现,为很多创业者和传统实体店提供了一个转型升级的机会。 抖店代运营首先需要了解抖音这个平台的特点和用户群体,根…

史上最详细的Python安装教程,小白建议收藏!

前言:Hello大家好,我是小哥谈。Python是一种高级、通用、解释型的编程语言,由Guido van Rossum于1989年开始设计,1991年首次发布。它以简洁易读的语法而著称,并且强调代码的可读性和简洁性,使得程序员能够更…

出版行业常用软件系统开发

出版行业使用多种软件系统来支持各种出版任务,包括编辑、排版、制作、销售和管理。以下是出版行业中常用的一些软件系统以及它们各自的主要功能,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合…

【Java】传输层协议TCP

传输层协议TCP TCP报文格式首部长度保留位32位序列号和32位确认应答号标记ACKSYNFINRSTURGPSH 16位窗口大小16位校验和16位紧急指针选项 TCP特点可靠传输实现机制-确认应答超时重传连接管理机制三次握手四次挥手特殊情况 滑动窗口流量控制拥塞控制延迟应答捎带应答面向字节流粘…

Java网络编程( 一 )数据如何在网络上传输

数据如何在网络上传输 网络发展背景发送端和接收端网络协议分层封装 & 分用封装:分用: 传输补充(数据链路层(以太网)):ARP协议 网络发展背景 单机阶段—>局域网阶段—>广域网阶段—&…

Leetcode129. 求根到叶子节点数字之和

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字: 例如,从根节点到叶子节点的路径 1 ->…