本文介绍了在北京微软故宫厅举办的中国首场 Prompt Engineering Conference 上的演讲内容。演讲者陈财猫分享了关于“提示工程的理论与实践”的主题,并探讨了“提示工程的未来”。他提出了 BROKE 框架用于指导 Prompt 设计,并介绍了 LangGPT 项目在生产工业级 Prompt 场景下的应用。此外,他还讨论了 Prompt 的两种类型以及提示工程的未来趋势,包括去设施化和多模态交互。
🌱 提示工程是一门新兴的领域,目前主要依赖经验,尚未形成系统的理论框架。BROKE 框架基于 Herbert Simon 的‘问题空间’理论,为 Prompt 设计提供了清晰的结构,包括背景(Background)、角色(Role)、目标(Objectives)、关键结果(Key Result)和改进(Evolve)五个要素。
🚀 LangGPT 项目提供了一种结构化的 Prompt 编程语言,使用模板化的方式编写高质量的 ChatGPT Prompt,并支持指令自动化生成和评估调优工具,有助于大规模培养优秀的提示工程师。
🤖 第一类 Prompt 用于弥补 AI 的缺点,随着 AI 技术的进步,这类 Prompt 可能会逐渐消失。第二类 Prompt 用于帮助 AI 理解人类需求,定义目标,交代业务,这类 Prompt 将持续存在。
🏭 ‘去设施化’趋势意味着未来的人机交互将从传统的以‘软件和功能’为中心转变为‘以 AI为中心’的交互模式。AI 将能够根据需求动态生成功能或软件,实现想法和灵感的门槛将越来越低。
🌈 ‘多模态’交互将允许 AI 从多种来源获取信息,包括文字、图片、视频、肢体语言、表情、脉搏甚至脑电波等,使人机交互更加丰富和自然。
原创 陈财猫 2023-10-23 18:15 菲律宾
在 Prompt Engineering Conference中国场上,以“提示工程的理论与实践”为主题的演讲

23年10月21日,我有幸参与了在北京微软故宫厅举办的中国首场 Prompt Engineering Conference,并作为讲者,做了一个主题为“提示工程的理论与实践”的分享。本篇推文是这次分享的演讲稿与幻灯片。

我从“提示工程的现在”与“提示工程的未来”两个角度做了一些分析。首先是提示工程的现在。提示工程(Prompt Engineering),虽然名为“工程”,但目前还没有形成系统的理论,非常依赖经验。但如果它要进一步发展为一门“工程科学”,则需要建立一些理论作为地基,并更好地适应大规模的生产环境。因此,我介绍了我如何基于 Herbert Simon 的“问题空间(Problem Space)”理论,进而提出BROKE框架的实践过程。此外,我还介绍了 LangGPT 项目在生产工业级 Prompt 场景下的应用。然后是提示工程的未来,一直有一种“提示工程将会很快消失”的观点。针对这一点,我认为 Prompt 可以分为两种:前者随着AI技术的进步可能会逐渐消失,但后者的“提示工程”将持续存在。
1.用于弥补AI缺点的Prompt2.用于帮助AI理解人类需求,定义目标,“交代业务”的Prompt。此外,我特别提及了“去设施化”这一趋势,它意味着未来的人机交互将从传统的以“软件和功能”为中心转变为“以AI为中心”的交互模式。
而多模态将会允许 AI 从多种来源获取信息,使其与人的交互不再局限于文字和图片,而是可以涵盖视频、心跳、表情,脑电波以及其他传感器数据。AI也许将能够预测人类的想法,需求与欲望等等。下面是完整的演讲稿与幻灯片。
各位好,首先,非常感谢大家今天的到来。我今天介绍的主题是“提示工程的理论与实践”。在我开始主题分享之前,我想先简单地做个自我介绍。
我还与港科大的一个做NLP的朋友合作,共同撰写了《ChatGPT进阶提示工程入门》这本书。我俩用了很多的心血,秉持着“对读者有用,不胡说八道”的原则,用做学术的态度写了这本书。这本书在推出后市场反响很好,之前在当当人工智能新书榜第一上呆了好几周,现在还是第二。编辑还跟我说这本书被北京日报和北京青年报推荐了。自己的心血和努力得到了认可,还算是很让人高兴的一件事。最近,我和LangGPT社群的江中云树共同创立了一个开源的非盈利组织,叫做“EmbraceAGI”,欢迎大家访问我们的github页面,也欢迎加入我们,一起做好玩的东西。今天的分享分为两个部分。第一部分叫“提示工程的理论与实践”,讲的是“现在”。第二部分叫“提示的两种类型与提示工程的未来趋势”。讲的是可能的未来。
顾名思义,我们在提到“提示工程”的时候,“工程”是在暗示这是一门工程科学,但事实上,目前的 Prompt Engineering 很大程度上依赖经验,它还没有完全达到真正的“工程”标准。一个真正的工程科学的实践,很多时候是在理论的地基上盖起来的房子,可是,我们目前还没有一套完整且统一的理论框架。那么今天,就让我斗胆借助一下老祖宗的智慧,今天讲一讲理论,再讲讲在这个理论上基础上的实践。有人说,提示工程是向AI提问的艺术,那么在提问之前,让我们研究如何定义一个问题。首先我们回望历史,先介绍一位名叫 Herbert Alexander Simon 的人工智能大宗师,是 CMU 的老校长和计算机系的建立者,他得过图灵奖,参加过达特茅斯会议。但是他还是认知心理学家,得了一个诺贝尔经济学奖。总之就是一个很神奇的人。今天的故事就从他开始。在1957年,Herbert Simon 和他的好朋友 Allen Newell ,另外一个人工智能大宗师(图片是他俩在下棋),发布了一款叫做“通用问题解决器(General Problem Solver)”的AI 程序。这个程序名字中的“General”代表着很高的目标:他两希望它能够解决任何“定义完好(well-structured problem)”的问题。这自然引发了一个疑问:什么样的问题才算是“定义完好”的呢?在 Simon 的论文 The Structure of ill-structured problems(这篇论文的标题可以被翻译成“不规则问题的结构”)中,他深入探讨了这个问题。其中,他指出:“大部分的问题解决努力都集中在为问题构建结构上,而对于已经结构化的问题,实际解决它们只占了一小部分努力。”
要定义一个问题,他提出了一个叫做“问题空间”的理论。(1)初始状态——一开始时不完全的信息或令人不满意的状况;(3)操作——为了从初始状态迈向目标状态,你可能采取的步骤。
这三部分加在一起定义了问题空间( problem space )。如果未能对这些要素中的任何一个进行很好的定义,那么,问题解决过程中就会出现许多困难
同理,如果说提示工程是向 AI 提问的艺术,那么它的核心就应该是“如何提一个定义完好的问题”,我们写 Prompt 时的问题定义得越好,解决问题也就更简单,答案也就更好。那么,在向AI提问时,我们可以从问题空间的三个要素出发,为“写 Prompt ”这个任务构建清晰的结构。初始状态是说“一开始时不完全的信息或令人不满意的状况”。也就是说,我们应该首先交代背景B(Background)。背景应该补全不完全的信息,并且说明现在令人不满意的情况。目标状态是说我们希望获得的信息或状态。要搞清楚这一部分,我们需要先想好目标O(Objectives):我们希望实现什么东西。然后你还要为这些目标做补充,说明你想要什么样的效果,定义一些关键结果(Key Result)。问题空间的最后一部分是操作,但是一般来说,我认为这应该是AI该做的事,所以我会让它自己列出步骤。在必要的情况下,你也可以根据行业知识来写出步骤。然而,大语言模型是很不稳定的,所以我们需要做很多调试,经过很多次实验,添砖加瓦,然后才能得到一个好用的Prompt,这是最后一步,改进E(Evolve)。根据这样的理论,我在今年二月底三月初提出了一个提示词框架,并将它升级为“BROKE”,BROKE分别是五个单词的首字母拼在一起,得到的缩写。我们通过这个框架,就成功地将为写 Prompt 这件事定义了清晰的问题空间。
首先是背景B(Background),我们需要清晰地说明背景,阐明问题的初始状态。比如说我们要让GPT写一封信,这时候我们就该说清楚为什么要写,写给谁等等。然后是角色R(Role),设定角色是一个很管用的 Prompt 设计技巧,我猜测是模型在预训练的数据中学习到了某种角色与“这种角色应该如何表现”的规律。所以,我们可以定义一个角色。接下来,我们应该定义问题空间的“目标状态”,也就是说目标O(Objectives)和关键结果K(Key Result):我们希望实现什么,我要什么具体效果,或者说“你希望获得的信息或状态是什么”。还是拿写信做个例子,如果我们要GPT写信,就该应该清楚地定义目标是“写信”,而写信应该用什么语气,写多少字等等。但是,我们很有可能不能一次得到一个好的结果,这有三种可能。要么是提示不够好,这个时候我们就应该看看我们的输入有什么不对的地方。要么是GPT答得不够好,或者一次性说不清楚,这时候就应该多问几轮,进行多轮对话。或者说大家知道LLM的随机性很大,运气不好也是有可能的,重新生成也是一个办法。就如Herbert Simon所说,大部分的问题解决努力都集中在为问题构建结构上,而对于已经结构化的问题,实际解决它们只占了一小部分努力。现在,利用BROKE框架定义好了写 Prompt 任务的结构,我们只需要一小部分努力,就可以写一个好 Prompt 。经过大家的实践和验证,这个框架在绝大多数场景下都非常好用。现在,我们转向另外一个场景:也就是生产场景。特别的,如果我们回到要让“提示工程”变成一个“工程科学”这件事上来,它就要变得更工程一点。但是在工程化这件事上,我们面临这一些难题。
第一个难题我把他叫做“缺乏标准”,我们需要海量的提示词去适应大量的场景。然而,提示词不像编程,并没有什么标准。这对于人机交互来说是个进步,但是在生产场景下可能会带来麻烦:不同的 Prompt Engineer 生产的 Prompt 可能会相差很大,完全两样。也就是说“风格差异大,好坏靠玄学”,如果严重依赖个体经验,我们无法大规模地培养很多提示工程师。第二个难题叫做“过度耦合,结构杂乱”,很多时候,如果一个 Prompt 挤成一大坨,我们就没有办法去维护它。大语言模型一更新,旧的不管用了,我们也不知道问题出在哪里,长期来看增加了很多隐形成本。如果经常迭代,我们也没办法很清晰地进行版本管理。第三个难题是“纯靠人工,成本高昂”,写Prompt更像手工艺活,离了熟练工就写不了了。纯靠人工又贵又慢,也不稳定。在这里,我推荐一个叫做“langGPT”的项目。它的名字“langGPT”里面的Lang是language的意思。也就是说,你可以把它看作是一种面向LLM的 prompt 编程语言。这个项目用构造、模板化的方式编写高质量的 ChatGPT Prompt ,是一种结构化的方法论。
一个典型的langGPT 提示词长左边图里这样:首先是一个 Prompt 被清楚的分成了不同的结构和模块,这些模块是相互解耦的,但是它们又共同构成一个整体,非常清晰,层次分明。langGPT还使用标记语言(在这里是Markdown)给 Prompt 添加了额外的语义。不管对于人还是对于模型来说,都是很清晰的。
LangGPT除了设计了系列标准化模板, 还基于提示词实现了系列指令自动化生成工具和评估调优工具。所以是手动生成+自动生成结合的,质量也很稳定。因为它文档写得很清楚,各种模板也很清晰,所以一学就会,上手很简单。这么一来,我们就可以大批量的培养80分以上的优秀提示工程师。这个项目是我们的EmbraceAGI组织的另外一位 co-founder 江中云树发起的。LangGPT有很清晰的文档,还有一个结构化 Prompt 案例库,包括GPT 游戏,AI 编程AutoNetGen,数百个不同的场景和用法等等,你可以访问PPT右上角的链接访问它。
接下来进入第二部分,叫“提示的两种类型与提示工程的未来趋势”。讲的是未来:以后的提示工程可能会往哪里去?有一种观点认为,随着AI的能力快速进化,Prompt Engineer 这个职业可能很快就会消失。我觉得这个观点部分正确,但并不完全准确。
第一类 Prompt 是弥补AI的缺点。这类此类 Prompt 的作用主要是“弥补”模型能力的不足。这类 Prompt 是可能会很快消失的。第二类 Prompt 则是“帮助AI理解人类的需求”。我们实际上是通过 Prompt 来给AI定义一个目标,交代清楚业务,帮助它理解清楚人类的需求。这一类 Prompt 可能还可以存活很长一段时间。
我们详细讲讲“弥补AI的缺点”的第一类 Prompt 。大家可以看左边这个图,发生了什么非常清楚:一个扫地机器人在遇到狗屎的时候没有避开,反而继续“清洁”。结果就是脏东西拖满了整个屋子。这种情况下,我们只能说是扫地机器人太笨:因为聪明的机器人,看到狗屎就该避开。有时候提示工程就不得不下类似“扫地的时候要避开脏东西,不要把它拖得全屋都是”,“遇到脏的地方需要多扫几遍”这种看似废话的指令。这其实体现的是AI智能程度或理解人类意愿需求(对齐)不足的表现。大家知道AI进步很快,日新月异,我们甚至都不用等模型本身改进,一些产品上的设计就可以解决掉一些这种case。此类 Prompt 可能会很快退出历史舞台。
举个真实例子,假如我现在有一些不等式,我希望ChatGPT写代码去可视化它们,标出哪组不等式在哪一块,重合的区域有多少。在Prompt里面没有“画的图要好看”的时候,图就真的不好看,很瞎眼睛。如果你顺口提一句“画的图要好看”,GPT就可能会帮你加了透明度,图也顺滑了很多。进一步到我们写 Prompt 的真实场景,我们有时候就会加很多这样的指令:比如加上了以后效果就真的还不错。但是这都是 AI 应该做的,不应该还要我们提醒。所以 AI 能力一上去,这类提示词就用不着了。
第二类 Prompt 的作用则是“交代业务”,定义目标,帮助AI理解人类的意图”。
还是拿机器人扫地作为例子,假设现在 AI 很聪明了,不仅知道见到狗屎要避开,还知道拿一个小铲子把它铲起来丢掉。但是在你家扫地就要有你家的规矩,比如必须先扫客厅再扫厨房,打扫的时候不准发出一点声音。如果遇到你的女朋友,还必须“向尊敬的少奶奶请安”。为了增强娱乐效果,这个机器人还要一边打扫一边做后空翻。在这种情况下,就算AI再聪明,它也很有可能搞不清情况和我们想要的效果,这就是“不懂业务”。这时候,我们需要用很清晰的语言把业务规则列出来,比如用特定的顺序打扫”的“顺序”是什么样的。这就是第二类 Prompt 的作用。
还是拿可视化不等式组当例子,比如现在AI不用我们说,也能一次就出好看的图了。但是有的信息我们还是要交代,比如
进一步到我们写 Prompt 的真实场景,我们有时候就会加很多这样的指令:
“我现在在一家AI公司当产品经理,我们的产品是…”“为玩家随机分配以下属性,每个属性的值在1~10之间”等等。这类 Prompt 将我们希望实现的目标完整地表述与传达了给机器。是“提示工程”可能的长期存在形式。再接下来,我们格局打开,谈谈在更遥远的未来(或者也许是未来几年)会发生的事情。我把这种趋势叫做“去设施化”。我给大家念一念刘慈欣脍炙人口的大作《三体》中的描述:这是危机纪元第205年,章北海来到自然选择号上时看到的景观。自然选择号上没有任何特定功能的舱室。当你需要的时候,这些舱室就可以变成你想要的功能,比如驾驶舱,指挥室,廊道,或者厕所。飞船上也没有什么家具,比如你想要一个椅子,舱室马上就会变形成为一个椅子。用刘慈欣的话来说,“这个世界到处都是简洁空旷的,几乎见不到任何设施,只有在需要时,设施才会出现,而且是在任何需要的位置出现。世界在被技术复杂化后,正在重新变得简洁起来,技术被深深地隐藏在现实的后面。”这种趋势已经在AI领域挺明显了,比如以前AI的不同任务可能会交给不同的模型做。拿自然语言处理来说,以前文本总结的活可能会交给文本总结的模型做,情感分析的活交给情感分析的模型做等等。但是现在ChatGPT啥都能干。我们以前“锅是锅,碗是碗,盆是盆”的惯例就被打破了。随着AI越来越强大,我们也许会面临着这样一种去设施化的趋势。
然而,这种趋势还会扩展到其他领域:比如说,因为GPT可以写代码,也就是说它可以编写软件。那么,我们就会在软件上见证“去设施化”的浪潮。最近这段时间,其实最让我印象深刻的是一个叫做“Open Interpreter”的开源项目。你可以顾名思义,把它当做是ChatGPT的“code interpreter”或者说“advanced data analysis”功能的一个本地运行的非官方版本,但是这就太低估它的潜力了。这个项目的官方宣传标语叫“A new way to use computer”,“使用电脑的新方式”。也就是说,你可以随时向它下命令,AI 就会去分析,计划,然后写代码实现你的需求。举个例子,在以前,我们要用电脑做一个什么事情,哪怕是简单的设置一个夜间模式:这也是一个设计好的功能,甚至可能是一个完整的软件。这背后首先需要一个产品经理费尽心思从所有用户的需求中找出一个最大公约数,然后经过冗长的设计功能,写需求文档,过评审会,程序员进行开发等等流程,功能才能上线。上线完还要测试,可能还要做A/B test, 周期很长。就算是这样,设计出来的功能还要用户费脑子学习才能使用。而且很多功能只会被一小部分人使用,使用频率是很低的。这是以前的世界:就像鼠标是鼠标,钢笔是钢笔,吸尘器是吸尘器。但是你可能一个月才会拿吸尘器出来用一次。在这种情况下,实现可能比想法更有价值。但是现在, AI 越来越强,就算你的这个需求在这个世界上只有你一个人有,它也有可能写代码当场满足你。就像我之前说的,一个功能或者软件上线需要很多破事,现在不用了,AI 现场就能帮你都做好。你不再同时需要有鼠标,钢笔和吸尘器,因为 AI 加持下的电脑就像自然选择号的舱室,你要什么它就能马上给你提供什么。这就是“去设施化”。在这种情况下,想法就会变得比实现有价值得多。举个例子,这是我们的一个挺火的项目,被量子位,宝玉,互联网那些事(小互)等都转过一波。它是一个“人生重开模拟器”游戏,所有内容都是由GPT4实时生成的,游戏开始以后会随机背景,属性,性格,家庭故事等等,还会给你写一首诗。然后玩家会在人生路上遇到很多事情。游戏很好玩,然后也很火爆。但是这不是它最特殊的地方。这个游戏最特殊的地方在于,它全部的东西就是一条Prompt。Prompt里面有开场白,例子,游戏的流程之类的。你只需要打开GPT的advanced data analysis功能,然后把Prompt粘贴进去,点确认,这个游戏就可以开始跑了。这就是一个去设施化的例子,我们把指令丢到GPT里面,GPT就能把游戏跑起来。里面的一些功能,比如随机化玩家属性,出生地等等实际上是GPT现场写python代码,现场运行的。现在,我们要写这么一个Prompt,还是需要很多调试,很多提示工程的窍门,费尽心思让 AI 这个扫地机器人“不要把脏东西拖得满屋子都是”。但是,在这种情况下,一个人已经可以做到不会写代码,只要会说话,就能实现一个功能或者软件出来,技术上的门槛已经越来越低了。就像我说的,第一类“用来弥补AI不足”的 Prompt 可能会很快消失,每个人的想法与实现之间的距离正在飞速缩短。在一个“去设施化”的世界里,灵感,创造力与想象力会变得非常有价值。就像我刚才说的一样。AI会让实现想法和灵感的门槛越来越低,实现与想法间的距离会缩到非常短。出于这样的原因,我和langGPT项目的发起人云中江树共同发起了一个愿景为“让每个人都能利用 AI , 将创意和梦想转化为现实”的开源组织,叫做EmbraceAGI。EmbraceAGI组织已经有一些项目,也有很多知识文档,我们会提供技术上的指导,比如说教你怎么写 Prompt 等等,都是开源,免费的。同时,我们也有很多现成的自动化工具帮助你省功夫,我们组织项目下的社群也非常活跃,交流氛围也不错。如果作为成员,你做了一个不错的项目,我们也会为你提供支持与资源,包括技术指导,帮你宣传等等。你的项目的成功也是我们的成功。要加入组织的话,你可以在Github页面上找链接,也可以加我或者江树,我们拉你进去。
举个例子,在电影流浪地球2中,吴京扮演的刘培强被智能量子计算机550W(MOSS)面试。刘培强问它为什么只有一只眼睛,MOSS回答说“我有两个版本的回答,极具幽默感的是,一只眼睛好聚焦,这样才能更好地注视着你,哈哈哈”。但是,后面它给出了官方回答:“这是我的雷达组,它可以同时调用所有联网设备,对目标物进行生物指标,关联资料等多角度数据信息收集”。在这个片段中,我们可以看到一种趋势,那就是“多模态”。Prompt,特别是文字的Prompt,仅仅只是可能的人机交互方式中的一种。大家知道,GPT4V在最近已经向大众放出,可以读入图片。但是“理解人类需求”和“解决问题可利用的信息”的存在方式远远不止文本一种形式。GPT现在可以读入文字,图片,未来也许就能读入视频,肢体语言,表情,脉搏,甚至是脑电波,也可以“用雷达组同时调用所有联网设备,对目标物进行生物指标,关联资料等多角度数据信息收集”。等到那个时候,Prompt Engineering也许就不复存在了。不过,这也许还需要一些时间。
此外,我猜测可能还有第三个趋势:未来AI也许会比你自己更懂你。知道自己想要什么,其实已经是一个非常高的需求,将它很好地表达出来就更难了。就像古希腊神话中的弥达斯国王一样,他向酒神狄俄尼索斯祈求点石成金的能力,却发现自己触碰到的水,食物,和他爱的女儿全都变成了金子。在德尔斐的阿波罗神庙上刻有三句箴言,其中最出名的便是“认识你自己”。我们无可避免地与自己保持陌生。回到提示工程的话题,大家知道大语言模型做的事情是next token prediction,它做的事情是预测下一个词是什么。它既然能够预测下一个token,在未来也许就能够预测你的想法,需求与欲望。AI 完全可以是一个很懂眼色的秘书,在你下指令之前,就知道你到底想要什么,甚至已经把事情办好了。不过,如果真的发展到这一天,到时候我们也用不着担心提示工程师会失业了。或者更进一步,我们将可以肆意享受人工智能带来的黄金时代,而每个人都无需辛苦谋生,可以毫不费力就能有尊严地活着。


























阅读原文
跳转微信打开