什么是提示词?
当我们与类GPT聊天机器人对话时,一般都是一问一答形式。 用户先发送一句(段)话,后台大模型生成响应、返回结果(通常 是流式输出)。这是用户与大模型交互的典型方式。
所谓提示词,就是我们发送给大模型的这句(段)话。提示词 可以是任意的自然语言,一般情况下,大模型都能给出不错的响 应。但有时我们可能需要多次尝试,才能得到比较满意的结果。
提示词工程就是关于如何组织并优化发送给大模型的语言以便得到 最佳响应结果的一套策略方法。 提示词可以包含以下任意要素:
指令:想要模型执行的特定任务或指令。
上下文:包含外部信息或额外的上下文信息,引导语言模型更好 地响应。
输入数据:用户输入的内容或问题。
输出指示:指定输出的类型或格式。
这些要素并不一定都出现,也不一定按照某种固定的格式来构造。 一个好的提示词应当具有具体性、简洁性和明确性的特点。例如:
`帮我写一篇文章` //这句话可能不是一个好的提示词 `请帮我写一篇关于大模型现状和未来发展的文章,包括大模型发展的时 间线、主流厂商及产品简介、未来发展趋势以及总结,字数1000以内。 ` //这句话比上一句好很多
如果说智能体是大模型的上层应用的话,那么提示词就是开发 大模型应用的编程语言,而提示词工程就是关于该语言编程技巧的 学科,下图展示了大模型和移动互联网的类比。
了解提示词工程有助于我们写出高质量的提示词,从而让大模型高 效地产出优质的结果。下面是一些提示词工程方法。
零样本提示
所谓样本,就是我们在写提示词时,可以包含一个示例,以便 让大模型从中学习,从而更好地完成指令。 零样本提示,就是不包含任何样本的提示。这个术语很高级, 但其实就是指普通的一句话,一般我们和大模型聊天机器人的对 话,大部分都是零样本提示,这两个示例都是零样本提示:
`帮我写一篇文章` //这句话可能不是一个好的提示词 `请帮我写一篇关于大模型现状和未来发展的文章,包括大模型发展的时 间线、主流厂商及产品简介、未来发展趋势以及总结,字数1000以内。 ` //这句话比上一句好很多
但零样本提示并不意味着随便一句话大模型都能给出令人满意 的结果。我们在写提示词时,仍然需要尽可能遵循具体性、简洁性 和明确性的原则。
少样本提示
少样本提示,就是在提示词中包含少量的示例,这样模型可以学习 如何生成更好的回答。举个例子:
`将以下文本分类为中性、负面或正面。 示例: 这太棒了!// 正面 这太糟糕了!// 负面 明天是星期天!// 中性 哇,那部电影太棒了!// 正面 文本:我认为这次假期还可以。`
这个提示词包含了4条样本,要求大模型对"我认为这次假期还 可以。"这句话进行分类。大模型返回结果:
中性
至于多少样本算少样本,并没有一个客观的标准。例如1条、2 条、3条、10条等都属于少量样本。在实际编写提示词时,应结合 具体问题和大模型回答的效果加以灵活调整。
链式思考COT
链式思考(Chain of Thought,COT)也叫思维链,是通过指示模 型输出中间推理步骤从而得到更好的输出结果。 下图的例子演示了标准提示和链式思考提示的区别。
左图显示的是“标准提示”,这是一个少样本提示,其中(原图英 文,下面是翻译):
Q:“Roger有5个网球,他又买了2罐网球,每罐有3个网球,问现在他 有多少个网球?” A:“答案是11。”
是一个样本(不是模型的回答),实际问题是:
Q:食堂原本有23个苹果,用掉了20个做午餐后又购买了6个。问现在食 堂有多少个苹果?
模型输出:"答案是27",显然是错误的。
右图显示的是“链式思考”提示,在样本的答案中增加了推理步 骤(蓝色字体)。模型通过学习样本,在回答中也输出了推理步骤 (绿色字体),这次的计算结果是正确的。
除了包含少样本的COT之外,还有零样本COT。零样本COT其 实非常简单,当你向大模型提出一个问题时,在后面加上一句话"让 我们一步一步地思考"。例如,把上面的例子改成零样本提示:
食堂原本有23个苹果,用掉了20个做午餐后又购买了6个。问现在食堂 有多少个苹果?让我们一步一步地思考
这样模型会输出它的思考过程并给出答案,有助于提高答案的准确性。
除了上面的提到的方法之外,提示词工程还有很多其它的策略 方法,这个领域目前也处于广泛的研究和快速发展之中,新的方法 不断涌现。对提示词工程感兴趣的,可以看下这个网站https://ww w.promptingguide.ai/zh。