赞
踩
解释这个词之前,首先需要解释 prompt 这个词。简单的理解它是给 AI 模型的指令。它可以是一个问题、一段文字描述,甚至可以是带有一堆参数的文字描述。AI 模型会基于 prompt 所提供的信息,生成对应的文本,亦或者图片。
比如我在文心一言里输入 ,这个问题就是Prompt。
而 Prompt Engineering (中文意思为提示工程,后缩写为 PE)则是:
Prompt Engineering 是一种人工智能(AI)技术,它通过设计和改进 AI 的 prompt 来提高 AI 的表现。Prompt Engineering 的目标是创建高度有效和可控的 AI 系统,使其能够准确、可靠地执行特定任务。 因为人类的语言从根本上说是不精确的,目前机器还没法很好地理解人类说的话,所以才会出现 PE 这个技术。另外,受制于目前大语言模型 AI 的实现原理,部分逻辑运算问题,需要额外对 AI 进行提示。
另外,目前的 AI 产品还比较早期,因为各种原因,产品设置了很多限制,如果你想要绕过一些限制,或者更好地发挥 AI 的能力,也需要用到 Prompt Engineering 技术。这个我们在后续的章节会讲到。
所以,总的来说,Prompt Engineering 是一种重要的 AI 技术:
坦率说来,大家对 PE 有一些争议,
前面一节我们解释了 prompt 的各种好处。但也有人认为这个就像当年搜索工具刚出来的时候,出现了不少所谓的「搜索专家」,熟练使用各种搜索相关的奇技淫巧。但现在这些专家都不存在了。因为产品会不断迭代,变得更加易用,无需再使用这些技巧。
但综合我们对产品和用户的理解,以及各位大佬的看法,我们的理解是:
现在 AI 的发展还比较早期,了解和学习 PE 价值相对比较大,但长远来看可能会被淘汰。这个「长远」可能是 3 年,亦或者 1 年。
从用户的角度看,学习 prompt 可以让你更好地使用 ChatGPT 等产品。
从产品的角度看,对于用户来说,prompt 会是个短期过度形态,未来肯定会有更友好的交互形式,或者理解能力更强的 AI 产品。
本章节会简单介绍下 prompt。我们说一下它的基础用法:
在和文心一言对话时,亦或者在使用和设计 prompt 时,有以下几个原则与建议。记住这几个原则,能让你写出更好的 prompt。
如果是直接官网使用 文心一言,那无需在意这个原则。如果是通过 API 的方式使用,则建议先使用最新的模型测试。
这个是对结果影响最大的因素。比如如果你想让 AI 写一首关于 西施 的诗。当我们明确使用七言绝句时,就可以得到我们想要的七言绝句。
比如我们应该尽量减少不要太多等这种无法定量的词汇,可以使用3至5句话,或不少于500字等这种定量的描述。
这个场景应该是使用 AI 产品最常见的方法。以 文心一言 为例,一般就是你提一个问题,文心一言 会给你答案,比如像这样:
在这个场景下,prompt 只要满足前面提到的基本原则,基本上就没有什么问题。但需要注意,不同的 AI 模型擅长的东西都不太一样,prompt 可能需要针对该模型进行微调。另外,目前的 AI 产品,也不是无所不能,有些问题你再怎么优化 prompt 它也没法回答你。
这种直接提问的 prompt ,我们称之为 Zero-shot prompt。模型基于一些通用的先验知识或模型在先前的训练中学习到的模式,对新的任务或领域进行推理和预测。你会在高级篇看到相关的介绍,以及更多有意思的使用方法。
在某些场景下,我们能比较简单地向 AI 描述出什么能做,什么不能做。但有些场景,有些需求很难通过文字指令传递给 AI,即使描述出来了,AI 也不能很好地理解。
比如算一道数学题,先算乘法后算加法,需要给出过程。此时你就可以在 prompt里增加一些例子,我们看看这个例子。
这个是没有任何示例的 Prompt:
这个是给了样例之后的 Prompt,可以看到,符合我们预期的结果:
在问答这个大场景下,还有一个子场景是推理,这个场景非常有意思,而且是个非常值得深挖的场景,prompt 在此场景里发挥的作用非常大。
举个比较简单的例子,将一个古典的鸡兔同笼问题输入到 文心一言 中,会得到这样的解答结果:
除了回答问题外,另一个重要的场景是让 AI 根据你的要求完成一些内容生成任务,根据输出的结果差异,我将其概括为以下几个主要场景:
1.无中生有
2.锦上添花
3.化繁为简
本章,我们先来聊聊「无中生有」场景。顾名思义,就是让 AI 给你生成一些内容。你只需要向 AI 描述你想写的内容,AI 就会按你的要求写出该内容。比如:
1.撰写招聘信息
2.撰写电商平台的货物描述
3.撰写短视频脚本
4.甚至让它写代码都可以
像撰写招聘信息等,你只需要明确目标,将目标定得比较明确即可生成能让你较为满意的答案。本章我想聊下写代码。下面是一个让 文心一言 写代码的案例。
如下是让 文心一言 用python写一段将图片转为灰度图的代码,并在jupyter notebook中展示。
In [1]
from PIL import Image # 读取图片 img = Image.open('image.jpg') # 将图片转换为灰度图像 gray_img = img.convert('L') # 显示灰度图像 gray_img.show() # 保存灰度图像 gray_img.save('gray_image.jpg')
<PIL.Image.Image image mode=L size=512x512 at 0x7F87D99DC250>
除了从 0 生成内容外,你也可以先给 AI 一段已经写好的内容,然后让 AI 对其进行修改,让 AI 帮你将内容改得更好。实际的场景有如:
本章重点介绍下润色场景,下面这是个润色的例子。
技巧:增加角色或人物
我再介绍一个更有效的技巧,就是在 prompt 里增加一些 role(角色)相关的内容,让 AI 生成的内容更符合你的需求。
比如还是上面那个 rewrite 的例子,我在例子前加入这样的一段话,我让 AI 假设自己是一个小学老师,并且很擅长将复杂的内容转变成 7、8岁小朋友也能听懂的话,然后再改写这段话。就会得到下面这样的结果,话语变得更加活泼可爱了。
锦上添花下的第二大的场景是信息解释。它跟改写内容有点像,但又不太一样,信息解释有可能提供超过原文内容的信息。
举几个信息解释的例子,大家应该就能理解了:
以解释代码为例,它阐述了这段代码是拿来干什么的,同时还阐述了各个参数的含义。
内容生成大场景下的第二个场景是化繁为简,这个场景其实很好理解,就是将复杂的内容,转为简单的内容,一般常遇到的场景有:
本章会讲一下信息总结。信息总结还是比较简单的,基本上在 prompt 里加入总结 summarize 就可以了。但如果你想要一些特别的效果,不妨组合使用之前介绍的技巧,比如:
不过在这个场景,还有个技巧需要各位注意——使用 ”“” 符号将指令和需要处理的文本分开。不管是信息总结,还是信息提取,你一定会输入大段文字,甚至多段文字,此时有个小技巧。可以用 “”“ 将指令和文本分开。根据我的测试,如果你的文本有多段,增加 ”“” 会提升 AI 反馈的准确性。像我们之前写的 prompt 就属于 Less effective prompt。为什么呢?据我的测试,主要还是 AI 不知道什么是指令,什么是待处理的内容,用符号分隔开来会更利于 AI 区分。
介绍完信息总结,再聊聊信息提取,我认为这个场景是继场景3推理以外,第二个值得深挖的场景。这个场景有非常多的有意思的场景,比如:
第二个可能比较难理解,举个 文心一言 里的例子,它的 prompt 是这样的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。