概述
预训练、微调和提示词工程是大型语言模型(LLM)生成质量优化的三种关键手段,各自具有不同的特点和优势。
预训练是 LLM 发展的基石,通过在大规模无标注语料库上进行自监督学习,赋予模型通用的语言理解和生成能力。这种自然语言的通用知识为后续的微调和提示词工程奠定了坚实基础。
微调则是利用有标注的任务数据,对预训练模型进行进一步调整和优化,使其更好地适应特定的下游任务。**微调的优势在于可以充分利用监督信号,提高模型在特定领域的生成质量。**但同时也存在过度微调导致过拟合、灾难性遗忘等潜在风险。
与之不同,提示词工程无需对模型参数进行更新,而是通过设计合理的提示,激发预训练模型中蕴含的知识,从而在下游任务中获得良好的生成质量。**这种方式更加高效灵活,避免了微调可能带来的问题。**但提示词的设计质量对模型表现影响重大,需要更多研究来探索通用有效的提示设计范式。
接下来,本文将重点讨论提示词工程技术。文章将介绍提示词工程的基本原理、设计方法,以及在不同任务场景下的应用实践,旨在为读者提供全面的理解和借鉴。同时也会分析提示词工程当前面临的挑战和发展方向,为后续研究指明路径。
提示词工程的分类
提示词工程的分类方法很多,本文将根据提示词工程技术发展演进路径,将类型分为:直接提示(Prompt)、链式提示(Chain)、图谱提示(Graph)、生成类提示(Generate)、集成式提示(Integrate) 五种。
直接提示(Prompt)
这种直接的提示词的方式侧重点在于通过特定的指令设计,来提示模型产生更好的输出。主要方法包括:
Zero-shot(零次提示)、Few shots(少量提示)、Act 、ReAct 和 Directional Stimulus Prompting(方向性刺激提示)。
下面举几个例子,可以帮助大家加深这些方法差别的理解。
Zero Shot、Few Shots 和 Act 这三种偏向直接在问题中精心构造输入的内容。
而 ReAct 这种方式,更加关注外部的信息反馈,根据外部信息反馈后做归因然后再进行响应。
Directional Stimulus Prompting,是指在提示词中加入一些提示,以限制在特定领域或限定的方向上生成的内容。请看如下例子:
方向性刺激提示与标准提示的比较
链式提示(Chain)
链式提示这种方式关注 LLM 的内部逻辑,比如思维链(Chain of Thought)、多模态思维链、思维树(Tree of Thought)。同时还关注在这个过程中的自洽(Self-consistent)和自我反思(Reflexion)。
在这个过程中,一般会将复杂问题进行拆解,分成多个步骤进行推理。这样做的好处是,可以让 LLM 在推理过程中更容易获得正确的答案。
例如,对于一些早期的大语言模型,我们输入“我有 23 个苹果,吃了 20 个后又买了 6 个,现在还有几个?”,大概率会给出错误答案。但是 Amazon Bedrock 中大语言模型的响应,将问题分解成了多个步骤,然后逐步推理获得了正确答案。
这种技术的核心就是在提示过程中表现为顺序的,可解释的,能够清晰地看到思维推理的过程。
Reflexion 顾名思义,是大语言模型对自己生成内容进行反思的一种过程。这种自我反思,会记录本轮的问题和输出的答案并作为记忆(上下文),然后再用大语言模型验证生成内容是否符合“初心”。如果不匹配我们就会让这个过程重复“持续思考”,直到获得理想的答案。
Reflexion 流程示意图
下面看一个综合运用了多种链式范式综合案例。
基于 Amazon Bedrock 上 LLM 的多 Agent 狼人杀游戏
这是一个基于多 Agent 的人工智能狼人杀游戏,在这个游戏中,多个游戏角色由 LLM 来扮演,主要通过 Amazon Bedrock 中的大语言模型作为推理和发言的主模型,使用 Llama3 8B Instruct 和 Mistral 7B Instruct 作为 Reflexion 和总结性文字的输出。
不同游戏角色拥有不同的个性和记忆,角色会根据自己的记忆和游戏的流程不断去推理谁是地方阵营,并发动投票处决敌方。在每个轮次中,角色会对自己的发言进行自我反省,确定自己的发言是否对自己和己方阵营有利。这样做的好处就是可以避免角色出“昏招”。由于这个反省模型和发言模型不一样,这样也可以避开由于单一模型推理过程中造成的“偏见”的问题。
在整个游戏过程中,每个角色都会根据外部的问题和事件,根据自己的独有记忆和共享记忆来对外部刺激作出响应。然后将“2 个大脑的声音”进行合理性验证,并得作出动作。这个游戏参考了“斯坦福小镇”的设计思路,对于制作开放式角色具有重要参考作用。
游戏主要流程设计
图谱提示(Graph)
图谱提示和链条提示方式非常相似,都是关注大模型内部结构化的推理过程。但这个过程并不是线性的,而是假定训练过程中隐式地构建了网状或者是图形结构的知识图谱。在用户交互过程中,通过寻找不同知识的连接性和关联性,产生多个维度和更加复杂的非线性答案。
在这个范式下我们一般会先通过实体的识别,先找出相关问题的出发点。而这个出发点可能不止一个,然后通过实体关系寻找可能的下一个相关节点的相关信息。然后重复这个过程直到在所有关系或指定的有限关系中找到相关内容,并对问题给出正确的解。这个范式适用于复杂数学问题、人物关系问题、犯罪线索发现等领域。
生成类提示(Generate)
生成类提示,主要技术包括 Automatic Prompt Engineer 和 Generate Knowledge Prompting。
Automatic Prompt Engineer 关注自动化。这个方法让指令生成问题被构建为自然语言合成问题,使用 LLM 作为黑盒优化问题的解决方案来生成和搜索候选解。第一步选择一个语言模型用作推理,该模型接收输出数据以生成任务的指令候选项。这些候选解将指导搜索过程。使用大语言模型作为打分模型,然后根据计算的评估分数选择最合适的指令。
Generate Knowledge Prompting 关注内容生成。这种技术的特点是利用语言模型已有的知识进行与问题相关的知识片段的生成,以帮助模型做出更准确的预测。
无论是哪种技术,都是利用 LLM 内部的知识来迭代补充知识的生成。下面举个例子大家可以对比着看。
使用某个大语言模型直接生成结果获得的错误例子
当然这个问题,现在使用更加强大的模型已经能直接获得正确答案。以下是使用 Amazon Bedrock 上 Amazon Bedrock 中的大语言模型的回答:
正确响应
虽然这个例子中的问题,Amazon Bedrock 中的大语言模型已经能正确回答。**但是在很多场景下我们还是可以通过 Generate Knowledge Prompting 技术来提高问题解答的正确率。**下面我们看看这一切是如何发生的:
输入:
问题:高尔夫球的一部分是试图获得比其他人更高的得分。是或否?
知识:高尔夫球的目标是以最少的杆数打完一组洞。一轮高尔夫球比赛通常包括 18 个洞。每个洞在标准高尔夫球场上一轮只打一次。每个杆计为一分,总杆数用于确定比赛的获胜者。解释和答案:
输出:
不是,高尔夫球的目标不是获得比其他人更高的得分。相反,目标是以最少的杆数打完一组洞。总杆数用于确定比赛的获胜者,而不是总得分。
在实际实施的过程中,我们可能也会碰到一些输出不稳定的情况。具体情况需要根据业务来分析,可以考虑综合运用多种 PE 技术手段进行优化。
集成式提示(Integrate)
集成式提示,包括检索增强生成(RAG)、自动推理、工具使用、程序辅助语言模型。这些方式的共性都是大语言模型与外部资源进行交互,从而实现复杂任务,提升答案质量。
下面介绍一个综合应用这些技术的例子,下图是在 2024 年亚马逊云科技中国峰会上展示的一个 Text2SQL 落地的案例,架构参考下图:
Text2SQL 落地案例架构示意图
该解决方案基于自然语言的交互方式,通过意图识别过滤非法输入,用知识库中的查找相似问题并取回 SQL 语句(RAG),利用相似的 SQL 语句通过大语言模型生成目标 SQL 语句,根据 SQL 语句生成动态图表(PLA),还可以生成信息洞察。
总结
本文一共介绍了 16 种提示词工程的相关技术,分别对应如何构建外部提示,利用内部知识逻辑或者借助外部数据信息,来引导模型产生更加准确的回答。
总的来说,提示词工程是一个充满活力和创新的领域,为大型语言模型的应用开辟了广阔的前景。通过不断探索和优化提示词的设计方法,我们能够最大限度地发挥模型的潜能,提高生成质量和任务适用性。未来,提示词工程必将与其他人工智能技术相互融合,为构建更加智能、高效和人性化的人机交互系统重要力量。
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓