赞
踩
1.2 日,我在 AI 提示词的学习中,收获了很多的新知识,探索到了一个全新的领域,这里我将把自己学到的知识展现给大家,让大家也能够快速的了解 AI 提示词。
提到AI提示词,我们便遇到了第一个新概念Prompt。什么是Prompt呢?我们询问ChatGPT,他会给出如下的结果: 我们简单概括一下,Prompt 就是提示工程(Prompt Engineering)是指在使用自然语言处理(NLP)模型(如GPT-4)时,设计和优化输入文本(即提示的过程)。这一过程旨在更有效地引导模型生成所需的输出结果。提示工程的关键在于提高模型的表现,使其更准确、有趣或符合特定上下文要求。
OpenAI的一个官方文档:OpenAI Platform 这篇文章讲的是prompt的基础,文章是全英文的,有条件的可以去看一看,收获会非常大。这里推荐两个B站的视频他们讲的是GPT的生成原理:
通过这两个视频我们可以了解到ChatGPT是如何理解人类文明和人类语言的,在了解了之后,你才会理解很多prompt中遇到的问题。(就比如后文的token在视频中便有所体现)
而如何编写prompt呢?我相信这是目前很多人的疑问想要编写prompt,就要先找到自己的需求这里借用一个好用的方法论“如果某事你重复做了三遍,那么你就要思考如何将他自动化”。就举一个最简单的例子,我们每次进一个新的群是不是都要自我介绍,那么我们就可以做一个自我介绍的prompt,里面包含的内容有:1.我是谁?2.所在城市3.个人介绍4.个人职业生涯历程5.目前就要方向等等。这样在你发送的对象不同时稍微改一改提示词,就可以快速的解决这个问题。
再举一个例子。如果你想让AI帮忙阅读文档并给出一个靠谱的答案是,也可以简单的写一个prompt。通过定义Role、Profile、Goals、Constrains、Skills、Workfiows、Attention等,可以完成这个提示词的编写。
也许这里你可能有些看不懂,那你可以大致的把他理解成提示词框架的一种。提示词框架很重要,一个好的提示词框架可以让你的编写更加有效。
提示词的框架有很多,有简单的,也有复杂的,那我们不妨从最简单,最基础的STAR框架入手,不知道什么是STAR?那先看看下面这个框架:
看到框架还是无从下手?那我们可以请 ChatGPT 帮忙: 你有使用ChatGPT尝试吗?如果尝试了,那么恭喜你,你已经写出了第一个提示词,没错,就是这个: 来回忆一下你是怎么写出来的吧:
接下来,是Prompt极其最重要的一个知识点:token
在大语言模型领域,Token 通常用来表示文本数据中的一个单元。在不同的语境下,一个 token 可能代表一个字、一个词,或者是一个句子。在英文中,一个 token 通常是一个词或者是标点符号。在一些汉语处理系统中,一个 token 可能是一个字,也可能是一个词。Token 是处理和理解文本数据的基本单元。
在深度学习的语言模型中,如 Transformer,输入的文本首先被切分成一系列的 tokens。这些 tokens 被转换成向量,然后被输入到神经网络中进行处理。因此,在这种情况下,token 可以被理解为语言模型接收和处理的最小的信息单元。在训练过程中,每个 token 会关联一个预测,这个预测可以是下一个token 的预测,也可以是该 token 的属性预测,如词性、情感等。
训练 token 的数量会影响模型的性能和准确性。更多的训练 token 通常意味着更多的训练数据,这可能会提升模型的准确性和泛化能力。然而,处理更多的 token 也会增加计算的复杂性和计算资源的需求。
基于上述解释,大家可能会把 token 理解为中文语义里的“字节”,对于这种理解,只能说从类比关系上有定的相似度,因为"字节"是计算机存诸和处理数据的基本单元,而“token”则是语言模型处理文本信息的基本单元。但这种理解不够准确的地方在于:"Token"在语言模型中的作用比"字节"在计算机中的作用更加复杂和多元。在大语言模型中,"token"不仅代表文本数据中的一个单位,而目每人"token"都可能携带了丰富的语义信息。比如,在处理一句话时,"token"可能表示一个字,一个词,甚至一个短语,这些都可以被认为是语言的基本单元。同时,每个"token"在模型中都有一个对应的向量表示,这人向量包含了该"token"的语义信息、句法信息等。
所以,尽管"token"和"字节"都是基本的处理单位,但是"token"在大语言模型中的合义和作用要比"字节”在计算机中的含义和作用更加丰富和复杂。
另外,如果你碰到过“机翻”的文档的话,你会看到“token”被自动翻译成“令牌”你是否也有这个疑惑,那我们就来问问ChatGPT
这部分内容引用了知乎作者 卡卡罗特 的专栏文章: ChatGPT 实用指南 (一)-知乎(zhihu.com) 内容过于学术所以只做了节选,特别感兴趣的读者也可去查阅完整文章,写的是非常好的。(如果您认真看过前文推荐的第一个视频,就会有恍然大悟的感觉)
GPT 的输入和输出都是到中文字的粒度吗? 注意,GPT 不仅仅能处理中文,它还能处理几乎世界上所有流行的自然语言。所以这告诉我们 GPT 实际的输入和输出并不是像我们想象的样子。因此,我们需要引入 token 的概念。token 是自然语言处理的最细粒度。简单点说就是,GPT 的输入是一个个的 token,输出也是一个人的 token。 GPT 不是适用于某一门语言的大型语言模型,它适用于几乎所有流行的自然语言。所以 GPT 的 token 需要兼容 几乎人类的所有自然语言,那意味着 GPT 有一个非常全的 token 汇表,它能表达出所有人类的自然语言。如何实现这个目的呢?
答案是通过 unicode 编码。
Unicode (统一码、万国码、单一码) 是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。 例如中文中的“你”字对应如下 unicode 编码:
\u4F60
\u 表示后面是一个 unicode 编码,它用 16 进制数表示。4F60 转换成 10 进制对应 20320,20320 表示在 unicode 编码中,第 20320 个编码对应的是字是你。最后将 20320 转换为 2 进制,得到如下结果:
0100 1111 0110 0000
有意思的是,unicode 不仅有自然语言,实际上也包含 emoji 等自然语言之外的符号。这也是为什么 ChatGPT 能理解和回复 emoji 的原因。 所以,GPT 实际是将我们输入的文字转换成 token,然后通过 GPT 模型预测 token,再将 token 转换成文字,最后再输出给我们。 通过 token 的学习,我们能感觉到 ChatGPT 理解文本的方式和人类并不相同,它在以自己的方式理解这个世界。
从官方文档可以看到我们目前使用的模型有哪些,以及每个模型的 token 限制。
也许很多读者不理解这个限制具体影响在哪些方面。所以我替你们问了一下 GPT:
从回答可以看出,这个 token 限制是同时对下述两者生效的:
当你理解了前面的一、二、三之后,这个问题的答案应该已经在你脑子里有雏形了
最后: 那你有没有想过,这些公司为什么不把 token 限制放高一点呢? 大不了比 GPT-4 API 价格再高一点呗,咱为了良好的体验,也不是不愿意花钱。其实不是 OpenAl、Google 不想,而是他们不能。
即使 Claude 2.0 声称能接受 10 万 tokens (约等于 5 万汉字),你实际去用就会发现,它其实也记不清 10 万 tokens 那么多
GPT 本质是文字接龙,根据过往 token 序列推测下一个最有可能的 token 是什么
根据传播学理论,那些酷炫的 prompt 案例总是比原理科普文章容易传播
但别人的案例只是他们学习、思考、实践最后得到的成果
你不能光看果实长得好不好看,还要看怎么播种、怎么浇水灌溉
而一切的一切追根溯源,最核心的那颗种子,就是 官方文档、前沿论文、大佬解读。
核心中的核心是文档,读完对某个点有疑问,找论文,论文没太看明白,再去看大佬解读。
这样一套下来,才能让外在的信息内化为自己的知识
接下来主要是分享,prompt的结构化 结构化的思想很普遍,结构化内容很普遍,我们常写的文章,看到的书籍都在使用标题、子标题、段落、句子等语法结构,结构化 Prompt的思想通俗点来说就是像写文章一样写 Prompt 而这里就引出我前文举例时提到基础的框架,见下图
我们看到上述范例中有一些特殊写法和标识:
标识符: #,<>等符号(-,[]也是),这两个符号依次标识 标题,变量,控制内容层级,用于标识层次结构。
属性词: Role.Profile.Initialization 等等,属性词包含语义,是对模块下内容的总结和提示,用于标识语义结构。
你可以把结构化提示词框架当做提示词的八股文,在你不了解如何开始进行提示设计的时候,当做一个通的标准格式来使用,结构化提示词的概念目前在行业内应用已经非常广泛,成熟度地相对较高,大家可以在即刻、知识星球、知乎等很多地方看到优秀的类型案例。
简单来说,假设你所熟悉的行业里有一位令人敬仰的“老师傅”,对于核心业务,他有很多自己的心得、经验和方法论,有些是可以量化或结构化的,有些是只可意会的不传之秘,而一个优秀的提示词工程师能通过对老师傅的研究和访谈,把这些方法论萃取出来,做成 prompt,这意味着可以以极低的成本把这些珍贵的方法复制给无数人。尤其是,也许需要多年训练才能达到接近这个水平的人,但值得注意的是,客观来看,提示词萃取方法论,更大的意义是把老师傅 100 分的方法论,萃取成能做到 60 分成果输出的水平,给原本只能做 0-30 分的人快速提升能力。
而那些原本就能做到60分的人呢?他们其实可以通过自己已经入门的业务理解 + AI,把需要从 60 分提升到 80 分的时间缩短几倍。
至于 80 分到 100 分的部分,我个人认为是目前的 AI 很难做到的,更多的还是依靠个人学习,自己提升,或者口传身授,当然这个过程中 AI 能做很多辅助性的工作,或者说,在越高的分数段,个人能力的放大效果更明显。
以上观点如果深入想想,你会发现,这决定了你对 AI 的学习心态和预期管理。
举个例子:
我有一位朋友看书非常快,不但快,还能把书里对他最有用的内容快速记忆、总结、提炼,内化成他自己的知识。比如很多人只会说,某某本书里提到过,“此处转述书中原文”。他更能直接根据读过的书,用自己的话语和知识体系重新组织一个鲜明的观点出来,这真是太令人羡慕了。
如果我想把他的这种令人羡慕的方法论“萃取”成一条 prompt,我需要做的是类似这样的访谈:
当上述问题都有清晰、明确的答案之后,可以开始设计一个 prompt 了:
如果想要让AI帮助你,像“樊登读书”或者“得到”这样给你讲书,你要做的是一个叫做“书籍阅读助手”的 prompt,要把所有通用型的读书方法论复刻到 prompt 里,再根据不同类型的书籍测试,来不断优化和迭代。
如果想要让AI在“选书”和“督促我读书”这个环节起作用,那要做的是一个叫做“催我读书”的 prompt,要重点研究如何选出适合用户的书,如何实现 prompt 的激励效果和让自己读完有获得感(例如生成读书笔记)。
如果更侧重读完书后的知识内化部分,要重点研究的是读书的效率和信息转化问题,这里更重要的是结构化信息能力和有效的记忆存储和调取。
我用这个例子是想让正在阅读本文的你明白,什么是所谓的“方法论萃取”,而在这个例子里,如果这个 prompt 做出来并有效,它的价值是显而易见的:
“ Read in , prompt out ”—— 李继刚 (Arthur)
最近的确看到很多朋友发布了大量的结构化提示词。在我看来,结构化提示词有它明确的优势:
层级清晰,不论是对用户还是对大模型,它的可读性都更好一些
结构可扩展性强,可以随时根据自己整体 prompt 的需求扩展自己的特定结构模块
格式和语义的一致性,便于迭代、debug 和维护
但结构化更重要的是它的思维链:
Role (角色) -> Profile(角色简介)—> Profile 下的 skill (角色技能) -> Rules (角色要遵守的规则) -> Workflow (满足上述条件的角色的工作流程) -> Initialization (进行正式开始工作的初始化准备) -> 开始实际使用
在这个认知前提下,首先要明白每个模块必须存在的意义,如果不需要增设新的模块,就不必增设,更不提倡看到别人的框架中出现一个新的模块名称就强行加入自己的模板,为此硬凑语句进去。要知道结构化框架的提出,最大的意义在于对 prompt 性能的提升作用,核心是清晰、简明、有效、统一。
我见过只有 Role+ skills + constrains 三个模块但是运行非常稳定,生成内容准确的 prompt
我也见过同时具备:Role + Profile + Background + Goals + Skills + Constrains + Workflow + Definition + OutputFormat + Example + Suggestions + Initialization
然后运行起来和前面那个只有三个模块效果相差无几的 prompt……
“我们是为了有效输出而结构化,不是为了结构化而结构化。”
而关于是否一定要结构化提示词,我在很多场合说过很多次我的观点,这里再复述一下吧:
结构化有利于具有稳定性和有效性的内容输出(理性框架)。
非结构化适合对连续对话有足够掌控能力的表达者和创意工作者(感性创意)。
文无定法,各取所长
翻译一下:
如果你需要一个可复用的、不限使用者 prompt 能力的、一次性输入可以稳定生成60分以上结果的 prompt,结构化可能是你萃取方法论的一个好工具,且可以很方便的传播。
如果你本身逻辑思维、书面表达能力很强,在和大模型连续对话的过程中每次都能准确问出有效的几句话,得到你想要的回答,而且你不必顾虑 3 小时 50 次的问答次数,更愿意深入追问,那么你并不需要写一大段固定格式的结构化 prompt,用你喜欢的灵巧方式随时提问就好,这甚至可能更利于激发灵感之类的创意辅助。
最后,结构化不是八股文用来套格式的,它只是一种思维框架外化成的写作框架,是一种语法结构,把它理解成作文本上的格子,而不是作文本身。
大家千万不要急于上手写复杂的提示词,基础教程瞟了几眼就当看过了,不然就会在能 copy 模板写好几千 token的提示词之后,突然问出非常基础的问题:
为什么我问了两轮之后 GPT 就会失忆呢?
为什么我给了他特定的一段话但是他好像把它和别的内容混淆了呢?
为什么大模型无法指定准确的字数呢,有什么其他办法能让它生成的长度靠谱一些吗?
我理解基础教程的枯燥,加上之前很多都是英文硬翻,读起来的确很令人烦躁,但现在有很多翻译和解读非常好的教程了,建议收藏,多读两遍,跟着示例做一下符合自己需求的小例子。
很多同学入坑提示词可能是被某个结构严谨、设计精妙的提示词吸引,惊为天人,一惊之后暗下决心:自己也要写出这样的prompt!
其实这很好,但是新手期很容易陷入一个误区是,不了解 prompt 的能力上限,试图在一个 prompt 里靠复杂的结构和逻辑实现很多并行目标,导致 prompt 太长、结构太复杂、逻辑不清晰,最后整体性能和稳定性都变得非常低,就会出现很多看起来巨复杂、好厉害,但是输入之后,发现生成的内容很多但大多是正确的废话,要么在初始设置的限制性语句或者流程语句经常被忽略等等。
对这一点我的建议是,先从一个清晰、具体的小目标开始,先把一个目标的实现做的很稳定,再考虑逐项增加其他附加目标,但不要喧宾夺主,加到感觉影响输出的稳定性或准确性就可以停手了。其他需求做其他 prompt 来实现,不要盲目夸大 prompt 的能力,它本身有非常多的局限性,强行跨越这些局限性只会适得其反。
如果你突然发现你花在飞书代码块和 markdown 记事本上的时间好像远远超过了你和 GPT 对话的时间,你要警惕一下:你是否过于关注 prompt 的文本本身,而忽略了在写作过程中你本可以和 GPT 进行深度对话,来检验它对你方法论的熟悉程度,或者让他针对某个逻辑给出完善的建议,或者在你的 prompt 版本迭代中反复测试生成结果,来对 prompt 进行优化和改善。
在昨天的实战案例中,我看到学员们撰写了一个焦虑情绪测试和生成建议的 prompt,它的结构和语句、各模块的作用上挑不出什么毛病,生成结果除了太宽泛也没有太大问题。但实际作为一个焦虑患者的用户使用这套 prompt 的时候会产生很多体验上的、情绪上的问题,这在一定程度上说明,如果过于纠结 prompt 的文法而忽略了它作为一个对话工具的预设,没有在对话场景中代入用户体验去反复测试,很可能出现写出来的 prompt 围观群众都觉得不错,但真正的用户压根不会去用的情况。
“提示词是过渡产品”这个观点提出的背景是:在大模型的能力加持下,人与机器的交互正在经历着一个范式转换过程——从机器指令(编程语言等)到以更贴近人的方式(识别人的语音、动作、理解人的语言)交互。由于技术的发展需要时间,目前还未十分成熟,大模型对人的语言理解还存在诸多问题,因此在目前这个范式转换刚开始的阶段,人需要适应机器,适应大模型的能力,去学习使用提示词技术,让大模型表现的更加良好。—— by 江树
它的潜台词是,在未来,可能你非常慵懒的说一句“我累了”,AI就能理解你累的原因,理解你此刻表达这句话背后的意图是想交流,还是想倾诉,还是单纯的感叹,还是想让它帮你干什么活。在这个状况下,作为用户的确不需要输入任何复杂的提示词了,可以完全自然的表达任何语言。
但这可能只是提示词出现的场景发生了变化,就像这次线下大会好几位同学问到这个问题,我的回答是,提示词不会是一个很短期的需求和技能,只是它是否一定需要用户学会,这一点存疑,后期可能提示词会包含在产品内部,由产品内置的提示词来判断用户意图,由提示词来结合调取的关于用户此刻输入内容的相关信息(比如用户近期的境况、工作压力、布置的任务、面临的困境、饮食习惯、通讯记录、情感关系,甚至生理周期)来决定如何加工信息,为用户生成需要的内容,也就是说,现在也许人人都需要学会提示词,下个阶段可能只有职业的提示词工程师需要学习提示词,而且是深度学习,普通用户直接享受傻瓜式的对话服务就可以了。
而上述场景,从目前的发展来看,可能尚需要很长的时间。谈到时间跨度,我们可以思考类似的对比:“马车是汽车的过渡产品么?” “民航飞机是航天飞行器的过渡产品么?”我们会发现,“过渡产品”这个词,如果放大到足够的时间尺度,任何东西都算过渡产品,但如果过渡周期长过你的生命周期,这个所谓的过渡对你来说就不叫过渡了。
短期来看,随着大模型的性能加强,提示词的上限也会增加,比如如果 GPT5 发布了,我们之前不提倡的“许愿式”的 prompt 写法也许就能实现了,例如你对 GPT 说,请你生成对人性具有足够的洞察力的观点(这句话在现在是基本无效的,它基本做不到),到下个阶段,他也许会反问你,你希望我对人性的哪一点具备洞察力?我先给你生成一个句子你看我理解的对不对?或者再夸张一点,它结合你的上下文真的能理解上述问题,并且生成你想要的结果。
在这种情况下,提示词编写者可以更随心所欲的编写提示词,实现更复杂的逻辑,实现更复杂的人-AI 交互,实现更多模态的输入和输出。那么提示词编写者的能力上限会提高,整体来看,编写者的能力差异也会进一步拉大。
“Prompt 本质上还是能力放大器”
这个问题最近被问到的也比较频繁,它取决于三个方面
如果你学习提示词有非常具体的小目标,例如 AI 写作优化,职场提升效率等等,如果你的需求非常具体,而且对提示词运用的需求并不是特别高,我不建议你买那些比较贵的、深度学习的提示词课程,可以考虑学习一些针对你目标进行的AI课,比如 AI 写作,AI 编程,AI 办公效率优化等等,提示词会是其中一部分,作为一个工具来理解和掌握就可以了。
如果你学习提示词是为了变现,那请你先思考自己的能力和资源优势,是否能找到变现路径,例如个人客订提示词、提示词工具封装,为特定场景的企业客户做批量定制提示词赋能、为某一类你深度熟悉的人群做特定工具等等。如果你的确有比较清晰的方案,万事俱备只欠东风,那你可以深度学习提示词,除了掌握具体写作方法、进行实践练习之外,还能结识很多同样要成为提示词工程师的同学和老师,也许会对你未来变现的业务有所助力,视野也会得到很多开拓。
如果你学习提示词是因为你自己就是教育行业的从业者,自己也想为已有的/潜在的用户提供知识付费、培训课程,那我也建议你深度学习提示词,除了学专业技能,还可以学习老师的授课方法,老师团队的学员运营,为学员提供的服务 SOP 等等。
如果你自学能力非常强,自己看文档、看论文毫无压力,能通过阅读和学习掌握方法技巧,而且通过观察其他人发布的提示词作品就能模仿出符合自己需求的提示词,而且感觉已经够用了,那我不建议你付费再学了,因为你自己的能力,只需要花费足够的时间成本,就能获得不错的学习成果,无非可能会慢一点而已,但我建议你链接更多提示词编写者多交流,互通有无,不要一个人闷头学。
如果达不到上述能力,很想学提示词且有清晰的学习目的,那还是建议选择一个靠谱的课程系统化的学习,因为的确提示词编写这件事门槛低,上限高,迭代快。有系统有组织的学习,加上有效的实践路径,学习效果会和你自己学完全不一样。省钱省脑子省时间,自己总要做个选择。
“ 学习=信息输入- 验证认同 - 内化吸收 - 自主输出 ”
谢谢您的观看,小孔与您共同成长!
本文由 mdnice 多平台发布
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。