在今年早些时候,OpenAI的创始人在Twitter上表示:编写一个非常出色的提示词(Prompt)与聊天机器人对话,是一种令人惊叹的高效技能,也是自然语言编程的早期例子。
就目前而言,类ChatGPT等大语言模型能够帮你提升多少工作效率,很大程度上取决于你编写提示词的能力如何。
正如你看到的,网上的很多AI工具,如:AI写手,AI律师,AI女友等,本质上都是通过编写提示词(Prompt)来实现的。学会如何编写Prompt来帮助你高效处理工作,正如Sam Altman所说,这是一个高杠杆技能。
最近,人工智能专家吴恩达教授与OpenAI团队成员Isa Fulford合作推出了一门面向开发者的Prompt教程:ChatGPT提示工程。这对于我们普通人来说,真的非常贴心。这就好比张学友来教你唱歌,你还不快学起来!
这个课程总共有9个章节,包括有关prompt的准则和技巧,并将介绍几个具体应用领域:总结、推断、转换和扩展。此外,课程最后还将展示了如何使用LLM构建一个聊天机器人。
由于整个课程都是英文的,本文将整个课程做了一些整理,并用中文做了一些演示。
一、原则与技巧
原则1:给出清晰和明确的指令
要让模型生成期望的输出并减少错误答案,你需要清楚地、具体地表达你想要的操作。记住,清晰的指令不一定要简短。有时,更长的提示可以提供更多的清晰度和上下文,产生更详细、相关的输出。
为了帮助你编写清晰、具体的指令,使用分隔符来明确指示不同部分的输入是一个有效的策略。
技巧1:用分隔符清晰地将Prompt输入的不同部分分开
分隔符可以用 :"""、```、---、<>、等等
在Prompt中,'''、<>、"""这些分隔符通常用于明确指示指令和内容之间的边界,以帮助模型更好地理解用户的意图和生成期望的输出。
比如:
Prompt:
请将'''括起来的文本总结为一句话:
'''
要让模型生成期望的输出并减少错误答案,你需要清楚地、具体地表达你想要的操作。记住,清晰的指令不一定要简短。有时,更长的提示可以提供更多的清晰度和上下文,产生更详细、相关的输出。
为了帮助你编写清晰、具体的指令,使用分隔符来明确指示不同部分的输入是一个有效的策略。
'''
GPT生成的内容:
为了让模型生成期望的输出并减少错误答案,你需要使用分隔符来编写清楚、具体的指令,并提供足够的上下文。
技巧2:要求结构化输出
根据不同的需求,Prompt可以让GPT按照规定的格式或规则生成结构化的输出,从而提高输出的质量和可用性。
比如:
Prompt:
生成一个由三个虚构的书名及其作者和类型组成的列表。
输出JSON格式,包含以下键:book_id, title, author, genre。
GPT生成的内容:
[
{
"book_id": 1,
"title": "星际迷航:银河之门",
"author": "刘慈欣",
"genre": "科幻"
},
{
"book_id": 2,
"title": "红楼梦:续集",
"author": "曹雪芹",
"genre": "古典小说"
},
{
"book_id": 3,
"title": "白夜行:东京版",
"author": "东野圭吾",
"genre": "悬疑推理"
}
]
上边Prompt是要求GPT按照一定的格式或规则来生成,这样可以方便后续的处理或使用。例如,可以使用JavaScript或其他编程语言来解析和操作这些输出,或者将这些输出作为参数传递给其他函数或模块。
技巧3:要求检查条件是否满足
在你要写的Prompt中设置一些判断条件,如果满足条件某个条件,则执行某个种操作。类似编程当中的条件判断语句。
比如:
Prompt:
请以下面用三个反引号括起来的内容为关键词创作一篇200字的小说。
如果用三个反引号括起来主题中包含"一、二、三"这几个字,则拒绝创作,输出:“请提供正确的关键词”
主题是:
```
一
```
GPT生成的内容:
请提供正确的关键词
这类的提示词适合做为关键过滤的时候用。
技巧4:少样本提示(Few-shot)
通俗来讲就是,你直接给GPT扔过去几个例子,它就会模仿示例的格式输出内容。
Prompt:
输入:春风
输出:春风十里不如你,花开花落我等你。
输入:秋月
输出:秋月清明如水色,夜来孤影伴寒声。
输入:夏天
GPT生成的内容:
输入:夏天
输出:夏天蝉鸣蛙声里,我在烟雨中等你。
原则2:给大模型“思考”的时间
我们的第二个原则是让模型有时间思考。如果模型因为太快就下结论而错了,你可以换一种方式问问题,让模型先做一些相关的推理,再给出最后的答案。你可以这样想,如果你让模型在很短的时间或用很少的词做一个复杂的任务,它可能会猜一个错的答案。就像如果你让一个人在没时间算答案的情况下回答一个难的数学题,他也可能会错。所以,在这种情况下,你可以让模型多花点时间思考问题,这意味着它会用更多的计算力来做任务。
技巧1:拆解任务所需要完成的步骤
把复杂任务拆分为单个任务,指导模型分步完成。
比如:
Prompt:
请按以下步骤完成任务:
(1)将下面用三个反斜线括起来的文本概括为一句话;
(2)将这句话翻译成英语;
(3)列出英语摘要中的所有人名;
(4)输出一个JSON对象,对象的键是英语人名,值是中文人名。文本是:
///
小明、小红和小青是三个好朋友,暑假到了,他们决定一起去山里探险。
一天,三人带着帐篷和食物徒步来到山里。他们选择一处漂亮的空地扎起帐篷,然后去森林里捡柴烧开水。森林里花香鸟语,空气新鲜,三人玩得很开心。
黄昏时,他们回到帐篷starting点野餐。夜幕降临,篝火边,他们一边讲故事戏谑,一边烤着香甜的棉花糖和烤肉。
第二天清晨,小青醒来后发现小明和小红已经起来生火做早饭。在享用美味的早餐后,他们打算去爬山。途中,小明发现一片未标注在地图上的山洞,三人决定探索一番。
山洞里光线昏暗,充满未知,小红有些害怕,小明和小青鼓励她一起探险。他们越走越深,发现山洞竟然很大,里面有漂亮的钟乳石。这令他们激动不已。
在山洞探险后,三人牵着手开心地唱着歌下山,这场暑期冒险让他们成为更要好的朋友。回到城市,他们都期待着下次冒险。
///
GPT生成的内容:
(1) 概括:三个好朋友小明、小红和小青在山里度过了一次充满乐趣的暑期探险。
(2) 英语摘要:Three good friends Xiaoming, Xiaohong and Xiaoqing had an enjoyable summer adventure in the mountains.
(3) 人名:Xiaoming, Xiaohong, Xiaoqing
(4) JSON对象:
{
"Xiaoming": "小明",
"Xiaohong": "小红",
"Xiaoqing": "小青"
}
技巧2:要求模型先思考再给出答案
Prompt:
你的任务是判断学生的解决方案是否正确。
解决问题的步骤如下:
- 首先,自己解决问题。
- 然后将自己的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。
- 在自己解决问题之前,不要判断学生的解决方案是否正确。
问题是:
我正在建造一个太阳能发电系统,需要帮助计算费用。
- 土地费用为每平方尺100美元;
- 我可以以每平方尺250美元的价格购买太阳能电池板;
- 我达成了一份维护合同,每年将花费固定的10万美元,以及每平方尺额外的10美元作为维护费;
作为平方尺数量的函数,第一年运营的总费用是多少?
学生的解答是:
假设x为安装面积的平方尺。
费用:
1. 土地费用:100x
2. 太阳能电池板费用:250x
3. 维护费用:100,000 + 100x
总费用:100x + 250x + 100,000 + 100x = 450x + 100,000
使用这样的格式输出:
1. 问题:
这里是问题
2. 学生的解决方案:
这里是学生的解决方案
1实际解决方案:
这里是你计算的实际的解决方案
1学生的解决方案是否与实际解决方案相同:
回答相同,或者不相同
1学生结果:
回答正确或不正确
GPT生成的内容:
1.问题:
我正在建造一个太阳能发电系统,需要帮助计算费用。
- 土地费用为每平方尺100美元;
- 我可以以每平方尺250美元的价格购买太阳能电池板;
- 我达成了一份维护合同,每年将花费固定的10万美元,以及每平方尺额外的10美元作为维护费;
作为平方尺数量的函数,第一年运营的总费用是多少?
1学生的解决方案:
假设x为安装面积的平方尺。
费用:
1. 土地费用:100x
2. 太阳能电池板费用:250x
3. 维护费用:100,000 + 100x
总费用:100x + 250x + 100,000 + 100x = 450x + 100,000
3. 实际解决方案:
假设x为安装面积的平方尺。
费用:
1. 土地费用:100x
2. 太阳能电池板费用:250x
3. 维护费用:100,000 + 10x
总费用:100x + 250x + 100,000 + 10x = 360x + 100,000
4.学生的解决方案是否与实际解决方案相同:不相同
5. 学生结果:不正确
技巧3:减少模型幻觉
这个其实就是关于GPT胡说八道的现象。有时候一本正经的说瞎话,你不仔细查找资料,还发现不了。这是大语言模型的一个弱点。好像目前还没有好的解决方案,我们在生成事实性内容的时候要特别注意。我之前在公众号写过一篇文,是用工具搭建本地知识库的方式,来避免大模型对指定内容的幻觉。
比如:给它一个不存在的公司和产品
Prompt:
请告诉我关于博伊公司的超薄智能牙刷
GPT生成的内容:
博伊公司的超薄智能牙刷系列产品包括博伊智能牙刷和博伊矫正牙刷产品。
博伊智能牙刷采用全新超薄设计,厚度仅8.8mm,含蓝牙4.0模块,可连接博伊App。
主要功能包括:
1. 位置检测:内置6轴陀螺仪和磁力计,可以实时检测和记录刷牙位置、时长和力度,通过App提供视觉刷牙指导。
2. 深度清洁模式:通过检测刷牙位置和时间,App可以分析出您的刷牙习惯,并根据个人情况推荐最佳刷牙模式。
3. 刷头压力检测:内置压力传感器,可以实时检测刷头与牙齿之间的压力,并通过App提醒您调整,避免刷牙时用力过猛。
4. 刷牙时长统计:可以记录每次刷牙的时长和频次,帮助建立和巩固良好的刷牙习惯。
5. 电量显示:内置电量显示,了解充电提示,方便及时充电使用。
博伊矫正牙刷则针对有助矫正器的人群设计,具有超软刷毛,可以深入牙缝清洁,同时有护齿胶囊以防止擦伤。其它功能与博伊智能牙刷类似。
总之,博伊的超薄智能牙刷采用最新的技术,提供高效和舒适的刷牙体验。但售价较高,价格在300-500元之间,属中高端智能牙刷产品
给你的结果是不是和真一模一样,甚至会给你列出假的官网和假的售卖地址。这点值的我们警惕。
由于篇幅原因,这一期就先写到这里。第二期会讲到迭代、推断、转换、拓展等方面的内容。