前言
大语言模型(Large Language Model, LLM)的出现,为我们开启了一种全新的方式来实现人工智能相关功能。这种方式无需我们拥有深厚的数学知识或掌握复杂的 AI 算法,只需通过自然语言描述,就能实现如文本生成、内容摘要、情感分析、语言翻译、代码生成等功能。
大语言模型的基本概念及提示词的重要性。阐述了高效提示词的核心原则,包括明确性、简洁性和聚焦性。详细讲解了四种进阶策略:设置特殊身份、使用分隔符区分输入、提供少量示例以及明确任务步骤。同时补充了常见误区与优化技巧,如避免过度约束、管理上下文长度及迭代优化方法,旨在帮助用户通过自然语言有效掌控 AI 生成内容。

大语言模型(Large Language Model, LLM)的出现,为我们开启了一种全新的方式来实现人工智能相关功能。这种方式无需我们拥有深厚的数学知识或掌握复杂的 AI 算法,只需通过自然语言描述,就能实现如文本生成、内容摘要、情感分析、语言翻译、代码生成等功能。
然而,为了能更好地利用这些大语言模型,我们也需要深入了解其特性,并学会如何用自然语言编写更有效的提示词(Prompt),以实现我们的目标。
大语言模型是由具有许多参数的人工神经网络组成,使用自监督学习或半监督学习对大量未标记文本进行训练,最终可以像人类一样理解和生成文本以及其他形式的内容。
大语言模型有能力从环境中推断,生成连贯且与环境相关的响应,翻译,总结文本,回答问题,甚至协助完成创造性写作或代码生成任务。
被人们所熟知的大语言模型有:OpenAI 的 ChatGPT、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 天可以读完《红岩》。
我们可以看到大语言模型的回答是正确的,因为它遵循了思维链(Chain of Thought)的逻辑。
在实际使用中,除了上述策略,还有一些常见的误区需要注意。
虽然明确性很重要,但过度的约束可能会限制模型的创造力。例如,如果你要求模型'必须使用三个形容词',可能会导致生成的句子生硬。建议根据任务类型调整约束的严格程度。
大语言模型都有上下文窗口限制。在处理长文档时,不要试图一次性将所有内容塞入提示词。可以使用分段处理的方式,先提取关键信息,再进行综合处理。
很少有提示词是一次成功的。通常需要根据模型的反馈不断调整。记录每次尝试的 Prompt 和结果,建立自己的 Prompt 库,有助于提高后续效率。
要想充分利用大语言模型,我们必须学会如何有效地与它进行交流。编写出高效的提示词,是实现这一目标的关键步骤。
我们了解到,一个高效的提示词需要具备明确性、简洁性和聚焦性。我们还了解到,设定特殊身份、使用分隔符清楚地指示输入的不同部分、在提示词中写少量的例子以及明确任务完成所需的步骤等策略,都可以帮助我们编写出更高效的提示词。
此外,通过迭代优化和管理上下文,我们可以进一步提升交互质量。大语言模型的世界还有更多等待我们去探索的秘密。我们需要不断尝试、不断学习,才能更好地掌握和利用这个强大的工具。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online