支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


晓|Google提示工程白皮书:解锁大语言模型的神奇密码

发布日期:2025-05-11 14:33:11 浏览次数: 1564 作者:旺知识
推荐语

Google提示工程白皮书深度解读,揭示大语言模型背后的工作原理和优化技巧。

核心内容:
1. 大语言模型的工作原理和记忆大师比喻
2. Prompt工程的定义及其在优化大语言模型输出中的作用
3. 影响大语言模型输出的关键因素分析

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

 

旺晓通:深入浅出,轻松通晓

最近Google发布了提示工程(Prompt Engineering)白皮书,我们这里进行解读。在如今这个科技飞速发展的时代,大语言模型(LLM)就像一个神奇的魔法盒子,能根据我们输入的内容,变幻出各种各样的精彩回答。无论是写文章、回答问题,还是编写代码,它都能轻松应对。但你有没有想过,为什么同样是向大语言模型提问,有的人得到的答案精准又满意,有的人却总是收获一些让人摸不着头脑的回复呢?

我们解读最新技术,文末有相关信息。

图片
作者:张长旺,图源:旺知识

其实,这背后的关键就在于 “Prompt工程”。它就像是一把能打开大语言模型神奇力量的钥匙,掌握了它,你就能和大语言模型更好地 “沟通”,让它为你提供更优质的服务。接下来,就让我们一起深入探索Prompt工程的秘密。

一、大语言模型是如何“工作”的?

要理解Prompt工程,首先得搞清楚大语言模型是怎么运作的。简单来说,大语言模型就像是一个超级“记忆大师”,它在大量的文本数据中学习各种知识和语言模式。当你给它输入一段文本时,它会根据之前学到的内容,预测下一个最可能出现的“词”(在计算机里叫“token”)。然后把这个预测出来的“词”加到输入文本后面,再接着预测下一个“词”,就这样不断重复,直到生成一段完整的内容。

打个比方,大语言模型就像一个熟读了无数书籍的人,你给它一个开头,它能根据自己“读”过的内容,接着往下编故事。不过,它编故事的能力强不强,能不能编出你想要的故事,很大程度上取决于你给它的“提示”,也就是Prompt。

二、Prompt工程到底是什么?

Prompt工程,简单来讲,就是设计高质量“提示”的过程。研究员打个比方,你想让大语言模型帮你写一篇关于旅游的文章,如果你只是简单地说“写篇旅游文章”,它可能不知道你具体想去哪里旅游,喜欢什么类型的景点,写出来的文章就不一定符合你的心意。但要是你详细地告诉它,比如“我想去海边旅游,喜欢看美丽的日落,还想体验当地的特色美食,帮我写一篇这样的旅游攻略”,这就是一个更有效的Prompt。研究员通过不断调整和优化这个Prompt,让大语言模型输出的内容更符合我们的期望,这就是Prompt工程在做的事。

Prompt工程涉及很多方面,比如要选择合适的词语和表达方式,确定Prompt的结构,还要考虑大语言模型的特点和它所使用的训练数据。它是一个反复尝试和改进的过程,就像厨师做菜,要不断调整调料的用量和烹饪的火候,才能做出一道美味佳肴。

三、影响大语言模型输出的关键因素

(一)输出长度

在和大语言模型“对话”时,你可以设置它输出内容的长度。这就好比你让一个人说话,规定他只能说一定数量的字。输出长度的设置很重要,因为生成更多的内容需要大语言模型进行更多的计算,这不仅会消耗更多的“能量”(计算机资源),让它的响应速度变慢,还可能增加使用成本。

而且,减少输出长度并不意味着大语言模型会把内容写得更简洁,它只是在达到你设定的字数限制后就停止生成内容了。比如说,你让它总结一篇文章,设置的输出长度比较短,它可能就没办法把文章的所有要点都总结出来。所以,当你需要短输出时,可能还得在Prompt里动点脑筋,让大语言模型明白你的重点需求。

(二)采样控制

大语言模型在预测下一个“词”的时候,并不是直接确定一个词,而是给每个可能的词都分配一个概率,然后根据这些概率来选择下一个词。这里就涉及到几个重要的设置:温度(Temperature)、Top-K和Top-P。

温度这个设置很有意思,它控制着词选择的随机性。温度低的时候,大语言模型会更倾向于选择概率最高的那个词,就像一个谨慎的人,总是选择最保险的选项。这样生成的内容比较确定,适合那些需要准确答案的情况,比如回答数学问题。而温度高的时候,它选择词的范围就更广,会产生更多样化、甚至有点出乎意料的结果,就像一个大胆的冒险者,喜欢尝试各种新鲜事物。这时候生成的内容可能更有创意,适合写小说、诗歌这类需要创意的任务。

Top-K和Top-P则是用来限制大语言模型从哪些词里选择下一个词的设置。Top-K是从预测概率最高的K个词里选择,K值越大,模型的输出就越有创意和变化;K值越小,输出就越保守、更符合事实。Top-P是选择累积概率不超过某个值(P)的那些词,P值从0到1变化,0就相当于只选择概率最高的那个词,1则表示所有词都有机会被选中。在实际使用中,研究员建议你可以多试试这两种方法,看看哪种能得到你想要的结果。

这几个设置之间也相互影响。比如,当你把温度设为0时,Top-K和Top-P就没什么用了,模型会直接选择概率最高的词;要是把Top-K设为1,那不管温度和Top-P怎么设置,模型也只会选择那一个符合Top-K标准的词。一般来说,刚开始尝试的时候,可以把温度设为0.2,Top-P设为0.95,Top-K设为30,这样能得到比较连贯、又有点创意的结果。要是你想要更有创意的内容,就把温度调高到0.9,Top-P设为0.99,Top-K设为40;想要保守一点的结果,就把温度降到0.1,Top-P设为0.9,Top-K设为20。

四、常用的Prompting技巧

(一)零样本(Zero Shot)与少样本(Few Shot)Prompting

零样本Prompting是最简单的一种方式,就像给大语言模型出了一道没有任何提示的题目。你只告诉它任务是什么,比如“判断这条电影评论是正面、负面还是中性的”,然后给出评论内容,没有其他额外的示例。这时候,大语言模型只能根据自己学到的知识来判断,就像一个学生在考试时遇到一道完全没见过的题目,只能靠自己的积累来答题。一般这种情况下,要把模型的温度设低一点,因为不需要太多创意,让它更准确地判断就行。

如果零样本Prompting效果不太好,就可以试试少样本Prompting。少样本Prompting就像是给学生考试时提供了几个类似题目的参考答案。你给大语言模型提供一个或多个示例,让它明白你想要的答案格式或模式。比如,你想让它把披萨订单解析成JSON格式,就可以先给它一个例子:“我想要一个小披萨,有奶酪、番茄酱和意大利辣香肠。JSON响应:{‘size’:‘small’,‘type’:‘normal’,‘ingredients’:[['cheese’,‘tomato sauce’,‘pepperoni’]]}”,然后再让它处理新的订单。通常来说,少样本Prompting至少要提供三到五个示例,不过具体数量还得根据任务的复杂程度和模型的能力来调整。在选择示例时,要选和任务相关、质量高、多样化的,一个小错误都可能把大语言模型带偏。


(二)系统(System)、上下文(Contextual)和角色(Role)Prompting

系统Prompting就像是给大语言模型定了一个总任务、总目标,告诉它“大局”是什么。比如,你让它翻译语言,或者对评论进行分类,这就是在系统层面给它设定任务。它可以帮助大语言模型明确方向,还能让输出满足特定要求,比如让它以JSON格式输出结果,这样能让数据更有条理,减少一些“胡思乱想”(幻觉)的情况。

上下文Prompting则是给大语言模型提供和当前任务相关的具体细节或背景信息。这就好比你和朋友聊天,你得把事情的前因后果都告诉他,他才能更好地理解你在说什么,给你更准确的回应。比如说,你想让大语言模型给一个关于复古游戏的博客推荐文章主题,你就可以告诉它“你是在为一个关于80年代街机复古游戏的博客写文章”,这样它推荐的主题就会更符合这个博客的定位。

角色Prompting是给大语言模型设定一个特定的角色,让它扮演这个角色来生成内容。研究员打个比方,你让它扮演一个旅行导游,那它给出的回答就会像一个真正的导游一样,给你推荐旅游景点、介绍当地特色。而且,你还可以给这个角色设定不同的风格,幽默、正式、有说服力等等,让它的回答更有个性。


(三)其他高级Prompting技巧

  1. 1. Step-back Prompting:这种技巧就像是让大语言模型在解决问题前,先退一步思考更一般性的问题。比如,你想让它写一个第一人称射击游戏关卡的剧情,直接让它写,它可能写得比较普通、随机。但要是你先问它“基于流行的第一人称射击游戏,有哪些虚构的关键场景能让关卡剧情更有挑战性和吸引力”,它会给出一些场景,像废弃军事基地、赛博朋克城市等等。然后你再让它根据这些场景写剧情,它写出来的内容就会更精彩、更符合要求,还能减少一些偏见。
  1. 2. Chain of Thought(CoT)Prompting:CoT Prompting是让大语言模型在回答问题时,把推理过程一步一步写出来,而不是直接给出答案。这就好比你做数学题,老师要求你写出解题步骤一样。这样做有很多好处,它能提高大语言模型的推理能力,让答案更准确,而且你还能从它的推理过程中学习,要是有错误也能更容易发现。比如,计算年龄的问题,不使用CoT Prompting时,大语言模型可能会答错,但加上“Let's think step by step.”这样的提示后,它就能正确地推理出答案了。CoT Prompting在很多任务中都很有用,像代码生成、合成数据创建等等,只要是能通过一步步推理解决的问题,都可以试试这种方法。

  1. 3. Self-consistency Prompting:大语言模型在推理方面有一定的局限性,Self-consistency Prompting就是为了解决这个问题。它通过多次用相同的Prompt询问大语言模型,每次使用较高的温度设置,让模型生成不同的推理路径和答案,然后从这些答案中选择出现次数最多的作为最终结果。这就好比你问很多人同一个问题,然后综合大家的回答,选择最常见的那个答案,这样得到的结果会更准确、更可靠。比如在邮件分类的例子中,通过多次询问大语言模型,综合不同的推理结果,就能更准确地判断邮件是否重要。

  2. 4. Tree of Thoughts(ToT)Prompting:ToT Prompting是对CoT Prompting的一种扩展,它允许大语言模型同时探索多个不同的推理路径,而不是只走一条路。这就像你在迷宫里找出口,ToT Prompting让大语言模型可以尝试不同的路线,而不是只沿着一条路走到底。这种方法特别适合解决复杂的问题,因为它能从多个角度思考,找到更好的解决方案。

  3. 5. ReAct(reason & act)Prompting:ReAct Prompting是让大语言模型结合自然语言推理和外部工具(比如搜索引擎、代码解释器等)来解决复杂任务的一种方法。它模仿了人类解决问题的方式,我们在生活中遇到问题时,会先思考,然后采取行动获取更多信息。大语言模型也是这样,它先对问题进行推理,制定一个行动计划,然后执行这个计划,观察结果,再根据结果调整自己的推理和计划,直到找到问题的解决方案。比如,让大语言模型计算Metallica乐队成员有多少个孩子,它会通过搜索引擎去查找每个成员的孩子数量,然后汇总得出答案。

五、自动Prompt工程(Automatic Prompt Engineering)

写Prompt有时候挺复杂的,有没有办法让这个过程自动化呢?当然有,这就是自动Prompt工程。它的原理就是让一个模型去生成更多的Prompt,然后对这些生成的Prompt进行评估,选出最好的那个,或者对好的Prompt进行修改,再重复这个过程。

比如说,你要训练一个卖乐队周边T恤的聊天机器人,就可以让模型生成各种顾客可能用来下单的指令,像“我想买一件Metallica的S码T恤”的不同表述方式。然后用一些评估指标,比如BLEU或ROUGE,来判断这些指令的好坏,选择得分最高的作为最终的Prompt。这样不仅能节省人力,还能提高模型在各种任务中的表现。

六、代码相关的Prompt应用

大语言模型在代码编写、解释、翻译和调试等方面都能提供帮助。

当你需要编写代码时,比如要写一个Bash脚本重命名文件夹里的文件,你可以给大语言模型一个Prompt,告诉它你的需求。它就能生成一段代码,而且还会加上注释,就像一个贴心的助手,不仅帮你干活,还把每一步都解释清楚。不过,因为大语言模型有时候会重复训练数据里的内容,不一定能完全正确推理,所以生成的代码还是要自己检查和测试一下。

要是你拿到一段别人写的代码,看不懂怎么办?大语言模型可以帮你解释这段代码的作用。你把代码给它,它就能详细地告诉你每一步在做什么,就像一个耐心的老师,给你讲解难题。

如果想把一种编程语言的代码翻译成另一种语言,大语言模型也能做到。比如把Bash代码翻译成Python代码,它会根据两种语言的特点,把代码转换过来。同样,翻译后的代码也需要检查和测试,确保能正常运行。

当代码出现错误时,大语言模型还能帮忙调试和审查。你把报错信息和代码给它,它不仅能指出错误在哪里,还能告诉你怎么修改,甚至能发现代码中其他潜在的问题,并给出改进建议,就像一个经验丰富的程序员帮你检查代码一样。

七、Prompt工程的最佳实践

(一)提供示例

在Prompt里提供示例是非常重要的一点。这就好比你教小朋友画画,只告诉他画什么,他可能不知道怎么画,但要是你给他看一幅画好的示例,他就能照着样子画得更好。给大语言模型提供示例,能让它更清楚你想要的输出是什么样的,提高回答的准确性和风格的契合度。

(二)设计简洁

Prompt要写得简洁明了,让你自己和大语言模型都能轻松理解。如果一个Prompt你自己看了都觉得迷糊,那大语言模型肯定也会“一头雾水”。所以,不要用太复杂的语言,也别提供一些没用的信息。研究员建议你可以多使用一些明确的动词,像“Act”“Describe”“Classify”等等,让大语言模型清楚知道要做什么。

(三)明确输出要求

要把你期望的输出描述得具体一些。如果只是给一个很笼统的指令,大语言模型可能不知道你到底想要什么,输出的内容就可能不符合你的要求。比如说,让它生成一篇关于视频游戏主机的博客文章,你得告诉它文章要写几段、重点讨论哪些方面、用什么风格写等等,这样它就能更有针对性地创作。

(四)多用指令,少用约束

在引导大语言模型输出时,指令和约束都可以用,但研究发现,多用积极的指令会更有效。

指令是明确告诉大语言模型要做什么,而约束是限制它不能做什么。就像你教小朋友做事,与其告诉他不要做这个、不要做那个,不如直接告诉他应该怎么做。指令能让大语言模型更清楚目标,发挥出它的创造力,而过多的约束可能会让它不知所措,甚至产生冲突。当然,在一些特定情况下,比如防止模型生成有害或有偏见的内容时,约束还是很有用的。所以,最好先以指令为主,必要时再加上约束,并且要多尝试不同的组合,找到最适合任务的方式。

(五)控制输出长度

你可以通过设置最大token限制或者在Prompt里明确要求输出的长度,来控制大语言模型生成内容的长短。比如,让它用一条推文的长度来解释量子物理,这样它就会尽量把复杂的内容精简地表达出来。

(六)使用变量

在Prompt里使用变量能让你的Prompt更灵活、更可复用。就像你有一个关于城市介绍的Prompt,如果你把城市名写成固定的,那每次换个城市都得重新写Prompt。但要是用变量来代替城市名,只需要修改变量的值,就能轻松得到不同城市的介绍,节省了很多时间和精力,在把Prompt集成到自己的应用程序中时也更方便。

(七)尝试不同的输入格式和写作风格

不同的模型、模型配置、Prompt格式、用词和提交方式都会影响大语言模型的输出结果。所以,你可以多尝试不同的方式,看看哪种能得到更好的效果。比如,同样是让大语言模型介绍一款游戏主机,你可以用问题、陈述或者指令的方式来写Prompt,观察输出有什么不同,选择最符合你需求的那种方式。

(八)针对少样本分类任务,打乱类别顺序

在进行少样本分类任务时,要注意把示例中的不同类别打乱顺序。这是因为如果按照固定顺序给出示例,大语言模型可能会“记住”这个顺序,而不是真正学会识别每个类别的关键特征。就像你让它区分猫和狗,如果每次都是先给猫的例子,再给狗的例子,它可能会以为顺序就是判断的依据,而不是根据猫和狗的特征来判断。所以,打乱顺序能让模型学习得更全面,在遇到新数据时表现得更好。

(九)适应模型更新

大语言模型会不断更新,增加新的数据、改进架构和功能。作为用户,你要跟上这些变化,及时尝试新的模型版本。因为新模型可能在某些方面表现更好,比如回答更准确、生成内容更有创意。你可以利用像Vertex AI Studio这样的工具,方便地存储、测试和记录不同版本的Prompt,看看它们在新模型上的表现如何,然后根据结果调整Prompt,更好地发挥新模型的优势。

(十)尝试不同的输出格式

除了关注Prompt的输入格式,你也可以多试试不同的输出格式。对于一些非创意类的任务,比如提取数据、选择数据、解析数据、排序数据或者分类数据,使用像JSON或XML这样的结构化格式输出会有很多好处。比如,用JSON格式输出数据,在实际应用中,你不需要手动去整理数据格式,它可以直接按照一定的顺序呈现数据,处理日期时间等类型的数据时特别方便。而且,要求模型以JSON格式输出,能让模型生成更有条理的内容,减少一些不合理的“想象”内容。

(十一)与其他Prompt工程师合作交流

当你在为某个任务寻找一个好的Prompt时,可以找其他Prompt工程师一起尝试。大家都按照最佳实践的方法去做,但由于每个人的思路不同,写出来的Prompt也会不一样,得到的结果也会有差异。通过交流和对比这些不同的结果,你能学到很多新的思路和方法,说不定就能找到更优的Prompt。

(十二)记录Prompt尝试过程

记录每次Prompt的尝试过程非常重要。因为大语言模型的输出可能会因为模型不同、采样设置不同,甚至同一模型的不同版本而有所差异。即使是同样的Prompt,每次输出的内容在句子格式和用词上也可能会有细微差别。所以,研究员建议你创建一个类似Google Sheet的表格,详细记录每次尝试的Prompt名称、目标、使用的模型、温度、Top-K、Top-P等设置,以及输入的Prompt内容和得到的输出结果。如果使用的是Vertex AI Studio这样的工具,还可以记录保存Prompt的链接,方便随时重新运行。另外,最好再记录一下Prompt的版本、结果是否满意以及相关的反馈信息。这样,当你之后需要回顾、测试不同模型上的Prompt性能,或者调试出现的问题时,这些记录就能派上大用场。等你觉得某个Prompt差不多完美了,就可以把它应用到项目代码中,并且把Prompt和代码分开保存,这样更便于维护。而且,理想情况下,Prompt应该成为一个可运行系统的一部分,你可以通过自动化测试和评估程序,来了解这个Prompt在实际任务中的表现如何。

Prompt工程是一个不断迭代优化的过程。你需要不断地创建、测试不同的Prompt,仔细分析和记录结果,根据模型的表现来改进Prompt。一直不断尝试,直到得到你想要的输出。并且,当你更换模型或者调整模型配置时,之前用过的Prompt可能需要重新测试和优化,这样才能让大语言模型始终为你提供满意的服务。

八、总结

通过这篇文章,我们全面了解了Prompt工程的方方面面。从大语言模型的工作原理,到各种Prompting技巧,再到自动Prompt工程以及代码相关的Prompt应用,还有一系列的最佳实践方法。掌握这些知识,就相当于掌握了与大语言模型高效沟通的技巧。希望大家在今后使用大语言模型的过程中,能够灵活运用Prompt工程的知识,挖掘大语言模型的最大潜力,让它为我们的学习、工作和生活带来更多的便利和惊喜。

 

链接:https://www.gptaiflow.tech/assets/files/2025-01-18-pdf-1-TechAI-Goolge-whitepaper_Prompt%20Engineering_v4-af36dcc7a49bb7269a58b1c9b89a8ae1.pdf
图片

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询