从这篇开始,我会陆续写一些年度总结的文章,回顾这一年的AI情况。今天开篇的,是提示词部分。
本文压缩版:2024年,提示词写作从框架表达发展到了压缩表达,甚至走到了meta ta physika(形而上学)。但实际中,很多人还没有学会“清晰表达”,还需要read in。
1、2024,提示词的进化之路
1.1 山谷里的一束光
还记得你最开始接触的提示词吗?“你是一个xx师,你擅长xx”,“我是一个xx,你需要帮助我做xx”,“请遵循下列步骤(workflow)”,“请按下面格式进行输出”,“参考示例(few-shots)”,“Let's think step by step”……第一次见到这些技巧提示,你拿去用后觉得真好用,真牛逼,于是咔咔一顿学、一顿抄。
这些提示技巧,由去年全球的AI发烧友在ChatGPT上共创,通过一个个的示例、实验共创。后来,大家将之搬回国内,进行整理、封装,一个个的技巧点,被活学活用了起来。
他们像什么?我觉得很像射向山谷里的一束光。在一片幽暗的山谷中,你按下手电筒的开关,将一束光发射(input)出去,照亮山谷里的某个角落。LLM(大模型)本身就是一个黑箱,你向它发射一个咒语、一段提示,它给你展示一段output。
这些input的技巧提示,就像射向山谷里的一束光,可以看到一块区域,但还看不清整个山谷。大模型是无知的,也是无所不知的,我们学习提示词,就在于找到那个如何照亮整个山谷的表达。
初见这些技巧提示,你拿来使用,觉得AI真牛。但尝过新后,你又觉得它好像没什么内涵,总是在夸夸其谈,总是在概而论之。其他的没学会,“正确的废话”倒是学会了一大堆。
而且,一遇到数学问题、推理问题它就总犯迷糊,每一次roll的结果都不太一样。你恨不得亲自下场,把教学步骤甩它脸上。
1.2 一组灯,照亮一面墙
这时候,框架表达(即结构化提示词)出现了,这是去年底到今年上半年的事。
常见的框架提示词内容有:你(LLM)要做什么事情?你有什么背景?我有什么目标?我有什么任务?我希望是怎样的步骤(workflow)?有哪些参考示例(few-shots)?需要你怎么输出?输出过程中要注意(attention)什么?输出格式是怎样的?大概这些。
然后转换成英文指令,从这40多个英文单词中,进行各种排列组合。
Background、Profile、Role、Task、Request、Purpose、Skills、Capabilities、Constrains、Attention、Improtant、Goals、Obje、tives、Definition、Tone、Value、Format、Notes、Insight、Statement、Input、Scenario、Output、Result、Workflows、Step、Action、Expectation、Output、indicatot、Keyresult、Conntext、Example、Evole、Initialization、reasoning、analyze、request、step-by-step。
甭管ABC结构也好、BCED结构也罢,各个提示词社区、自媒体号(也包括我自己)都在教你,用xxxx组合表达,用1、2、3、4、5点说清楚你的需求。
这些框架,大都大同小异,无非是告诉你要建立多视角的提示词,让input从前面单提示的线性思维转变到多视角的立体思维,去认识一个东西,去描述一个东西。
借助这个多视角框架,LLM的output还真的前进了一大步。这时你惊叹“掌管古希腊打工人的神器”原来如此,开始混迹各大社区、星球、社群,求助各种Prompt,甚至付费找人写Prompt。
框架表达,通过预制多角度(视角),帮你把脑海中的那个需求给描述出来,做到了“清晰表达”,一度让大家以为这就是提示词写作的终极答案。也让Prompt Engineer成为正式职业,不少大厂愿意开出20-40k的高薪招人。
它是终极答案吗?我不知道。但我能确定它还存在着这两个方面的缺陷:一是提示词过长,这其实违背了Attention自注意力机制,LLM在理解、解压的过程中必然会有信息丢失;二是结构化写作有难度,它违背了这轮GenAI浪潮用自然语言对话的发展初衷。将自然语言表达回退到编程表达,这和AGI的终极目的背道而驰。
那么,框架表达大概率不是终极答案,但会是目前这个阶段最合适的答案。
前面,我们提到LLM是一个黑箱,框架表达其实就像一组精心设计的探照灯,能够将山谷的一面墙照得明亮可见。但要想再清晰,照亮整个山谷,就有些为难了。
1.3 太阳,让黑影无形
现在,让我们来想象一个存在,它从正面看是一个形状,从背面看又是另一个形状,从上面看、下面看都是不同的形状,每一面都有无限的画面、无限的细节,面对这个存在,你该怎么去描述?
框架表达可以帮助到我们吗?恐怕是不能的。对于这个问题,今年下半年有了新的解题思路——压缩表达。
能够照亮整片山谷的是什么?太阳。太阳可以照亮整个山谷,让所有黑影无所遁形。很有意思的是,黑洞的坍缩,就是从恒星开始的。而太阳,就是恒星,只有2个字。
前面提到的这个存在,可以用一个很好的词去压缩描述——三维空间碎片,三维实体向二维空间的跌落(参考《三体3》中“墓地”部分的描述)。
这是李继刚在沉寂半年后,给行业带来的最新思考——压缩表达。
他认为,字与字、词与词、语句与语句之间有大量的空洞,这个空洞是语义上的空洞,也是智力上的空洞。让大模型去理解这些空洞的词藻、语句是没有意义的,你把他们删掉,对LLM的输出也不会有太大影响。
压缩表达,因为你措辞得足够精准、凝练,以至于这个词在大模型向量与embedding向量空间中足够精准得相当于一支箭直接射在那个点上了,而不是像一片云一样飘过去,输出在那一片空间。
所以你脑海中的那个东西,你越形象,你用词越凝练,通过模型射出的那根箭就越准,然后模型输出的东西也会越准。
“正因为准,input少,这恰好满足了attention工作机制。如果提示词多,Attention机制在分配词权重时,每次分配不一样,就会有信息丢失。而现在凝练后,attention没有漂移空间了,怎么分配它都是满足的。”李继刚强调。
比如他的“汉语新解”提示词,总结起来其实就5个关键词——“隐喻,一针见血,批判现实,思考深刻,语言风趣”,其他对SVG的描述,都只是排版上的一个需求。
Ilya曾说过这样一句话:“大模型是对这个世界的有损压缩,是个降维的过程;而提示词,是解压的入口,是升维的过程。”压缩表达、凝练表达或许正是开启大模型精准解压的法宝。
正如同牛顿提出的万有引力定律(F=(G×M?×M?)/R2)一样,简单、直接,一个公式定义物理世界。
2、提示词路上的那些人物
在2024提示词的进化路上,有这些人物值得关注。
2.1 DAIR.AI
首推的,自然是“Prompt Engineering Guide” ,一个由DAIR.AI发起的开源Prompt工程学习网站。每有最新的提示词论文,他们都会更新进来,包括大家熟知的CoT、RAG、ReAct、few-shots等技巧,大都来自于这个网站。
网站提供了多语言版本,也有CN版。既有基础介绍,也有深度理论,特别适合Prompt Engineer系统认识Prompt。
网址:www.promptingguide.ai
2.2 Anthropic
Anthropic除了模型做得强外,其技术讲解也是一流。每有新模型发布,它都会撰写详细的技术文档,既介绍技术也教大家如何使用。每次读它的技术文档,都是一种享受和学习,而不像OpenAI那样,现在越来越充满营销味道了。
在提示词方面,Anthropic提供了Prompt Engineering资源、Prompt Library和Prompt生成器等多个docs页面,干货满满。
比如:指令清晰、使用样例、链式思考、使用XML来结构化输入输出、设定角色等,全都是Claude的“武功秘籍”。这些技巧不仅适用Claude,也适用其他大模型。
2.3 吴恩达
吴恩达,去年在OpenAI和微软上分享过不少提示词的公开课,特别适用初学者学习。但今年,除了在红杉活动上讲过智能体的四种设计模式外,就没怎么分享了。
今年,吴恩达更多地将目光转向了智能体,对于智能体发表过一些前沿的观点。
2.4 李继刚
李继刚,我个人愿将他称作是中文提示词一哥。对中文提示词的研究非常透彻,而且前沿。
比如去年刷爆的“公文笔杆子”提示词,相信体制内的朋友一定都见过。这个通过框架封装的提示词,放到今天依然是一流的提示词。表达结构化,描述行业化,LLM了解深入,当时李继刚的提示词放到现在依然是很多Prompt Engineer难以企及的高度。
但去年底,李继刚在写了50多个提示词后,就停止输出了,也很少在AI社区、社群跟大家交流。他觉得如果自己再这样写下去,功力完全得不到长进,都是纯体力活。
于是,他就读书去了。一读就是半年,今年9月归来后,交出了“汉语新解”这个爆款提示词。一种用非常古老的lisp语言写成的极致压缩的提示词,也就是本文中提到的1.3部分。
李继刚说:他今年最大的感悟就是“压缩表达”。写提示词就是表达,随时都能够表达。于是,李继刚开始了日更。
2.5 LangGPT、WaytoAGI等开源社区
LangGPT社区,由云中江树发起,是国内较早专注提示词工程的开源社区,很早就提出了结构化提示词的理念。LangGPT也与多个大模型厂商开展合作,设计官方提示词。比如Kimi+里的“提示词专家”智能体,就由他们设计。
WaytoAGI社区,则是一个特别适合新手系统学习AI的开源社区,创始人AJ和社区小伙伴整理了500+的提示词和上万条关于AI的知识库。陈财猫、小七姐、小互、归藏、赛博禅心等人对提示词和知识库皆有贡献。
很多时候,你在外面看到的付费割韭菜内容,其实大部分都来自这些开源社区的免费信息。
2.6 其他
今年,也陆续有过一些“神级”提示词,但大多到最后一地鸡毛。要么是故弄玄虚,要么是不过如此。
比如这个SuperPrompt,作者自称是Prompt god,一度在X上引发上百万的浏览量。这是他的提示词,你能看懂吗?
看不懂就对了,他要的就是你看不懂。但其实吧……就是一些神神叨叨的生词组合,什么二进制、范式、元数据、递归、维度、量子力学……怎么复杂就怎么来。
说白了,就是故弄玄虚,说了一堆高级的废话。
以及,最近爆火的17高中生涂津豪的“Thinking Claude”提示词。它其实更像是丰富版的Let's think step by step,通过Cot思维让不具备o1能力的Claude拥有了一定的o1能力。
这个提示词,涂津豪同学迭代了80多个版本(如果你自己的提示词也能迭代10多版本,你也非常强),他确实很棒!但不用刻意捧杀,拔到“神级”这个高度。因为即使不用这个提示词,Claude也能得出差不多的结果;如果是多轮追问,Claude的输出还会比这个提示词更好。
幸亏,涂津豪本人对此比较清醒。
3.提示词的未来
自去年大模型惊艳世人后(以ChatGPT-3.5为分水岭),Prompt经历了三个阶段的发展。
最初是技巧提示词,后来有了框架表达的结构化提示词,以及最新的压缩表达的key提示词。提示词的进化之路,既有来自LLM开发者的不懈探索,也有来自AI发烧友的热情贡献。
大家一边研究新的技术,一边测试新的话术(即提示词),试图在这场浪潮中找到那份巧劲,那份点石成金的巧劲。我们每个人都在辅助着大模型的训练和迭代,每一次向模型发送的咒语和input都是Prompt,意在寻找到那个更智能、更美好的世界。
提示词的迭代过程,也从最初的厂商主导,发展到如今的民间驱动。来到当前,提示词早已不只是提示词,而是成为了一项工程——Prompt Engineer(提示工程)。
Prompt Engineer,既关乎AI工程的方方面面,譬如数据、提示词、工作流、工具插件、知识库、提示微调、智能体等;也关乎技术与人文的有机结合,Prompt是人文,Engineer是技术。
Prompt Engineer会走向何方?回顾编程语言的发展历史,或许会给我们一些参考。
在卡兹克对李继刚的采访中,李继刚提到:“编程语言,从最早的二进制到汇编语言,到C语言,到C++、Java,再到轻便语言Python。整个脉络有两条线非常清晰:一、编程语言越来越接近自然语言;二、程序员群体越来越大。沿着这两条线往下推演,就是自然语言编程。”
或许,Prompt Engineer就是我们今后的自然语言编程。届时,人人都是程序员,大模型就是编译器。
想象力有多大,AI就有多强。