AI不会夺走你的工作,但使用AI的人会!
—英伟达CEO 黄仁勋
前言
大语言模型的出现,为我们开启了一种全新的方式来实现人工智能相关功能。这种方式无需我们拥有深厚的数学知识或掌握复杂的AI算法,只需通过自然语言描述,就能实现如文本生成、内容摘要、情感分析、语言翻译、代码生成等功能。
然而,为了能更好地利用这些大语言模型,我们也需要深入了解其特性,并学会如何用自然语言编写更有效的提示词,以实现我们的目标。
什么是大语言模型?
大语言模型 (Large Language Model,LLM) 是由具有许多参数的人工神经网络组成,使用自监督学习或半监督学习对大量未标记文本进行训练,最终可以像人类一样理解和生成文本以及其他形式的内容。
大语言模型有能力从环境中推断,生成连贯且与环境相关的响应,翻译,总结文本,回答问题,甚至协助完成创造性写作或代码生成任务。
被人们所熟知的大语言模型有:Open AI的Chat GPT
、Meta的LLaMA
、百度的文心一言
、月之暗面的Kimi
等等。
什么是提示词?
提示词(prompt)是一种指导性的文本,用于引导大语言模型如何进行回答。它就像一把指引对话的魔杖,能够帮助我们更有效地与大语言模型进行沟通。大语言模型的回答效果与提示词的质量息息相关。因此,编写出高效的提示词显得尤为重要。
什么是高效的提示词?
为了确保大语言模型能够准确理解当前的主题或任务并生成恰当的回应,我们需要提供清晰、简洁的提示词。避免使用过于复杂或模糊的语言,尽量在提示词中做到具体明了。编写提示词时,有几个关键原则需要考虑:
明确性
:使用清楚、具体的表述,使大语言模型能够轻松理解。避免使用专业术语或模糊的语言,这可能导致混淆或误解。简洁性
:尽量让提示词简洁,避免使用不必要的词汇或跑题。这将有助于确保大语言模型能生成集中且相关的回应。聚焦性
:确保提示词有明确的目标和焦点,避免使用过于宽泛或开放式的提示词,这可能导致缺乏焦点。
以上的解释可能有些抽象,让我们通过一个实例来进一步理解。
假设我们想了解《活着》说的是什么故事,就写了下面的提示词:
今天我在抖音刷到一个视频,说活着特别好。可是,我还有很多工作上的事要忙,根本没时间看,跟我说说它都说了什么?
回答如下图:
我们可以观察到,由于我们的提示词缺乏简洁性和聚焦性,导致了大语言模型的理解偏差。实际上,"在哪里看到的《活着》"和"有没有时间看"这两个信息并非必要,这些不相关的内容可以不被包含在提示词中。因此,我们可以剔除这些不必要的信息:
活着说了什么?
回答如下图:
我们可以观察到,由于我们的提示词缺乏明确性,又导致了大语言模型的理解偏差。把我们的需求再明确地描述一下:
总结长篇小说《活着》的故事梗概,其中包括主要人物和主要情节。
回答如下图:
我们可以观察到,大语言模型的回答已经基本符合了我们的需求。
总之,我们应该通过提供尽可能清晰和具体的指令来表达所希望大语言模型执行的任务。这将引导大语言模型朝着期望的输出方向发展,并减少我们获得无关或不正确的响应的几率。当然,也不要将编写清晰的提示词与编写简短的提示词混淆,因为在许多情况下,较长的提示词实际上为大语言模型提供了更多的清晰度和上下文,这实际上可以导致更详细和相关的输出。
高效提示词的进阶
接下来,我们将继续了解几个编写高效提示词的策略,帮助我们在使用大语言模型时获得更好的结果。
设置特殊身份
在编写高效的提示词时,一个极其有效的策略就是设定特定的角色身份。采用"你是……"这样的表述方式,在提示词中明确指定大语言模型在对话中的特定角色或身份。这种方法对于打造更具吸引力、更富有沉浸感的对话体验,或者模拟现实世界的场景,具有显著的效果。
比如,我们使用大语言模型解一道数学应用题:
三棵树上停着24只鸟。如果从第一棵树上飞4只鸟到第二棵树上去,再从第二棵树飞5只鸟到第三树上去,那么三棵树上的小鸟的只数都相等,第二棵树上原有几只?
回答如下图:
我们可以观察到回答的结果是错误的。因为三棵树上的鸟的只数都相等时每棵树上的只数为24÷3=8只,所以第二棵原有的只数为:8-4+5=9只。
我们继续改进提示词,设定小学数学老师
的特定角色身份,如下:
你是一个优秀的小学数学老师,善于解答各种应用题。
三棵树上停着24只鸟。如果从第一棵树上飞4只鸟到第二棵树上去,再从第二棵树飞5只鸟到第三树上去,那么三棵树上的小鸟的只数都相等,第二棵树上原有几只?
回答如下图:
我们可以观察到计算的结果是正确的。
使用分隔符清楚地指示输入的不同部分
帮助我们编写清晰明确的指令的另一个策略是使用分隔符清楚地指示输入的不同部分。
比如,我们有一个比较长的文本,我们想要实现的任务是对这篇文章进行总结。我们可以在提示词中写:将$ $ $
之间的文章总结为一句话。然后我们用$ $ $来包围文章的内容,具体如下:
把$ $ $之间的文章总结成为一句简短的话。
$ $ $
我说道:“爸爸,你走吧。”他往车外看了看,说:“我买几个橘子去。你就在此地,不要走动。”我看那边月台的栅栏外有几个卖东西的等着顾客。走到那边月台,须穿过铁道,须跳下去又爬上去。父亲是一个胖子,走过去自然要费事些。我本来要去的,他不肯,只好让他去。我看见他戴着黑布小帽,穿着黑布大马褂,深青布棉袍,蹒跚地走到铁道边,慢慢探身下去,尚不大难。可是他穿过铁道,要爬上那边月台,就不容易了。他用两手攀着上面,两脚再向上缩;他肥胖的身子向左微倾,显出努力的样子。这时我看见他的背影,我的泪很快地流下来了。我赶紧拭干了泪。怕他看见,也怕别人看见。我再向外看时,他已抱了朱红的橘子往回走了。过铁道时,他先将橘子散放在地上,自己慢慢爬下,再抱起橘子走。到这边时,我赶紧去搀他。他和我走到车上,将橘子一股脑儿放在我的皮大衣上。于是扑扑衣上的泥土,心里很轻松似的。过一会儿说:“我走了,到那边来信!”我望着他走出去。他走了几步,回过头看见我,说:“进去吧,里边没人。”等他的背影混入来来往往的人里,再找不着了,我便进来坐下,我的眼泪又来了。
$$$
回答如下图:
这些分隔符的使用能够帮助大语言模型清晰地识别出需要进行总结的特定文本内容。分隔符可以是任何明确的标点符号,其作用是将特定的文本片段与其余提示词语进行明确分隔。
这些分隔符可以采用$ $ $
,或者是引号,甚至是XML标签。只要这些符号能够使大语言模型准确地识别出这是一个独立的文本部分即可,例如:“”",< >,或是 等。
在提示词中写少量的例子
在我们期望大语言模型执行特定任务之前,我们需要提供一些成功完成任务的示例。我们来举一个例子:
模仿$ $ $之间问答的方法,回答:什么是耐心?
$ $ $ 什么是坚持? 坚持就像一条河流,它源远流长,虽然在某些时候可能会受到阻碍,但它总是能够继续前行。 $ $ $
在这个提示词中,我们告诉大语言模型,它的任务是用问答的风格回答,我们有这样一个学生和老师之间的对话的例子,老师用一些隐喻回答学生的问题,因为大语言模型有这个少量提示的例子,它将以类似的风格回答下一个问题:
然而,这里需要特别强调的是,我们无需赘述过多复杂的例子,只需选择几个有代表性的例子进行说明即可。还记得我们之前提到的简洁性和明确性的原则吗?我们的提示词应力求简洁明了。
明确任务完成所需的步骤
最后一个行之有效的策略是:明确任务完成所需的步骤。在下面的例子中,我们使用大语言模型判断学生的解答是否正确。
判断学生的解答是否正确。 问题: 《红岩》一共有288页,小明每天读36页书,几天可以读完《红岩》?
学生解答: 288 / 36 = 10(天) 小明10天可以读完《红岩》。
这是一个数学应用题,然后是学生的解答。学生的解答实际上是错误的,因为288 / 36等于 8,不是10。但是回答如下图:
当大语言模型匆忙给出错误结论时,我们可以考虑重新构思问题,并要求大语言模型在给出最终答案之前提供一系列相关的推理过程。就像人类一样,如果我们给予大语言模型一个过于复杂的任务,要求它在短时间内或者用较少的词语来完成,那么它很可能会随意猜测,进而导致错误答案的产生。实际上,人也会在类似情况下犯错误。举个例子,如果我们让一个人在没有足够时间来计算复杂数学问题的情况下,要求其给出答案,那么他们很可能也会出错。
我们可以优化一下提示词,明确任务完成所需的步骤。任务是确定学生的解答是否正确,为了完成任务做以下步骤:首先,解答这个问题。然后,比较你的解答和学生的解答,评估学生的解答是否正确。
判断学生的解答是否正确。 按照如下步骤完成: 第一步,你对这个问题进行解答。
第二步,将你的解答与学生的解答进行比较,并评估学生的解答是否正确。 在你自己解答问题之前,不要确定学生的解答是否正确。 用以下的格式回答:
正确解答:<你的解题步骤和解答> 学生的答案和你的答案的比较:<一样或者不一样> 学生答案的判断结果:<正确或者错误> 问题:
《红岩》一共有288页,小明每天读36页书,几天可以读完《红岩》?学生解答: 288 / 36 = 10(天) 小明10天可以读完《红岩》。
回答如下图:
我们可以看到大语言模型的回答是正确的。
尾声
要想充分利用大语言模型,我们必须学会如何有效地与它进行交流。编写出高效的提示词,是实现这一目标的关键步骤。
我们了解到,一个高效的提示词需要具备明确性
、简洁性
和聚焦性
。我们还了解到,设定特殊身份、使用分隔符清楚地指示输入的不同部分、在提示词中写少量的例子
以及明确任务完成所需的步骤
等策略,都可以帮助我们编写出更高效的提示词。
然而,这些只是冰山一角。大语言模型的世界还有更多等待我们去探索的秘密。我们需要不断尝试、不断学习,才能更好地掌握和利用这个强大的工具。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。