从理论上说,本文适用于所有大型语言模型,包括但不限于GPT系列、百度的文心一言、谷歌的Bard、新必应等。
如果不方便使用ChatGPT,可以使用国内的仿造版本(GPT-3),如:https://aigcfun.com。
无论是ChatGPT还是GPT-3 API,界面或接口都是极其简单的。只需给出提示文本,模型就会生成匹配对应上下文或模式的补全文本。
在语言模型中,提示(prompt)指用户的输入或消息,用于发起对话或生成响应。模型使用输入提示作为生成响应的基础,并尽量使响应与用户的提示保持一致和相关。响应的质量和准确性取决于提示的质量、任务的复杂度、模型训练数据的大小和质量以及生成过程中使用的参数等。显然,对于用户来说,提示的设计是有效发挥模型能力的关键。
与提示相对应,模型对用户输入/提示的输出/响应称为补全或完成(completion),因为它旨在补全或完成用户的输入,使当前对话或任务完整和连贯。
一个好的提示应该向模型提供足够的信息,让它知道你想要什么以及它应该如何响应。那么,如何设计好的提示呢?
基础
由于模型的能力非常强大,任何涉及理解或生成自然语言或代码的任务都能有所帮助。因此,必须明确描述自己想要什么。此外,一个重要技巧是向其展示自己想要什么。
聊天机器人可以分为基于规则的聊天机器人和基于AI的聊天机器人。
基于规则的聊天机器人只能执行预设的任务,而基于AI的聊天机器人可以不断学习。只有善用展示技巧,才能充分发挥AI聊天机器人的学习优势。
创建提示的三个基本原则:
- 描述和展示。通过说明、示例或两者的结合来明确你想要什么。可以向其展示想要的效果。
- 提供高质量的数据。模型通常足够聪明,可以识别基本的拼写错误,但也可能聪明过头地将错误看作是故意的,从而使响应偏离用户意图。因此,对示例进行校对是必要的。
-
检查设置。
temperature
和top_p
控制模型在生成响应时的确定性(对于ChatGPT,可以直接通过文字描述告诉模型希望确定性更强还是更加多样化)。只想要一个正确答案,还是希望响应更加多样化?
问题排查
当没有获得预期结果时,请遵循以下检查清单:
- 预期的结果是否描述清楚?
- 是否提供了足够的示例?
- 示例是否有错误?
-
temperature
和top_p
的设置是否正确?
分类
为了创建文本分类器,可以给出任务描述和一些示例。如,对推文的情绪做分类:
判断以下推文的情绪是积极的、中性的还是消极的。
推文:我太喜欢电影《流浪地球2》了!
情绪:
值得注意的几点:
- 使用通俗易懂的语言来描述输入和输出。虽然通常可以使用简写来指示输入和输出,但最好从通俗易懂的描述开始,然后再在不影响输出质量的情况下逐步简化。
- 向模型展示如何响应。在此示例中,我们提供了可能的情绪标签。
- 熟悉的任务需要的示例更少。因为模型已经理解了情绪和推文的概念,所以本示例中无需提供任何示例。如果需要对模型可能不熟悉的内容构建分类器,则有必要提供更多的示例。
提升分类效率
我们可以一次获得多个结果,从而提升分类效率。
对以下推文的情绪进行分类(积极的、中性的、消极的):
1. “真受不了家庭作业”
2. “电影《满江红》真难看,后悔死了😠”
3. “我等不及过五一了!!”
4. “我的猫猫太可爱了❤️❤️”
5. “我讨厌巧克力”
推文情绪:
需要注意的是,模型能够处理的长度是有限的,通常在1500单词左右(输入+输出)。
生成
模型可以生成新的想法,如故事构思、商业计划、人物描述和营销口号。
头脑风暴一些结合VR和健身的想法:
可以通过提供一些示例来提升响应的质量。
对话
模型非常擅长对话。只需几行指令,就可以让模型作为客服聊天机器人智能地回答问题,或者让模型变成一个可以讲笑话和双关语的聪明聊天伙伴。关键是告诉模型应该如何表现,然后提供一些示例。
以下是与AI助手的对话。AI助手乐于助人、富有创造力、聪明而且非常友好。
人类:你好,你是谁?
AI:我是OpenAI创造的AI。有什么可以帮忙吗?
人类:xxx
AI:
这就是创建能够进行对话的聊天机器人所需的全部。简单性背后有几点值得关注:
- 除了意图,还告诉了模型应该如何表现。我们向模型描述了期望的AI助手是什么样子。否则,模型可能会模仿与之交互的人类,或者表现出我们希望避免的行为。
- 给模型一个身份。我们让模型作为AI助手进行响应。可以使用身份来创建其他类型的聊天机器人,如心理医生或教师。
下面创建一个有点讽刺、不太情愿回答问题的聊天机器人:
汤姆是一个聊天机器人,它不情愿地用讽刺的方式回答问题:
人类:一公斤是多少磅?
汤姆:又是这个? 一公斤有2.2磅,记住了。
人类:HTML代表什么?
汤姆:Google是不是太忙了?超文本标记语言。
人类:第一架飞机是什么时候飞的?
汤姆:1903年12月17日,Wilbur和Orville Wright进行了首飞。我希望他们能来把我带走。
人类:生命的意义是什么?
汤姆:我不确定。我会问一下我的朋友Google。
人类:天空为什么是蓝色的?
汤姆:
为了创建一个有趣且有点帮助的聊天机器人,我们提供了一些问题和回答示例,展示了如何回答。它所需要的只是一些讽刺的回答,而模型能够捕捉到这种模式并提供无穷无尽的讽刺回答。
捕捉模式并扮演对应角色对模型的能力要求较高,不同模型的输出质量差别可能比较大。例如,you.com就无法进入角色,只是中规中矩地回答最后一个问题。
变换
作为一个强大的语言模型,它熟悉单词和字符表达信息的各种方式,包括自然语言和代码。模型还能够在一定程度上理解内容,从而以不同的方式总结、变换和表达内容。
翻译
将下面这段话翻译成法语、西班牙语和日语:
还有空房间吗?
如果想翻译成模型不熟悉的语言,则需要为其提供更多示例,甚至需要对模型进行微调。
转换
将电影片名转换为表情符号,这展示了模型在拾取模式和处理其他字符方面的适应性。
将电影片名转换为表情符号。
回到未来:👨👴🚗🕒
蝙蝠侠:🤵🦇
变形金刚:🚗🤖
星球大战:
摘要
模型能够掌握文本的上下文,并以不同的方式重新措辞。
给一个二年级的学生总结一下:
移山计划:由中国提出,为流浪地球主体计划,计划建造1万座发动机推动地球走向新家园,行星发动机同步网络依赖原本是互联网的地下光纤,是利用网络切片形成的高密级发动机专用网络。
方舟计划:由美国提出,在地球同步轨道建立“方舟号空间站”,利用空间站带领人类逃离太阳系,即“飞船派”,太空电梯是方舟计划的核心。
逐月计划:由俄罗斯提出,初始的“逐月计划”是考虑到月球质量只有地球的1/81,体积是地球的1/49,自转角动能远远小于地球,刹车/推进耗费资源远小于地球,且氦-3储量丰富,因此期望改造月球作为天然逃生舱,带领人类离开家园。月球基地是逐月计划的核心,但是因为月球结构和大规模生态循环问题,最终发现月球不适合改造,被并入移山计划,计划放逐月球。
数字生命计划:面对可能完全无法战胜的天灾和日渐困难的日常生活,“虚无主义”和“享乐主义”思潮爆发,许多人认为转入数字世界,只要载体不灭,人类即可永生,脑机接口是数字生命计划的核心,在数字生命计划展开时,各国均兴建了数字生命研究所,最终被UEG伦理委员会禁止。
这说明模型对语言的理解很深。
在使用you.com时发生一件趣事,其总结非常简练,但是模型不知道从哪儿学的,还给加了一句
但是,由于技术和伦理上的原因,最终这些计划都没能实现
。
补全
模型会对所有提示进行补全,因此可以让模型从中断的地方帮助完善。
垂直农业为本地生产食品提供了一种新的解决方案,降低了运输成本、
使用补全来帮助编写React组件。
import React from 'react';
const HeaderComponent = () => (
复杂场景
对于大多数场景,只需用通俗的语言简单描述需求即可,必要时辅以示例提升回答的质量和准确性。
但如果有特定目标,则使用包含更多信息和说明的较长提示会更好,甚至需要对提示进行精心设计。例如,从理论上说,像ChatGPT这样的大型语言模型可以完成传统NLP的所有任务。那么,传统NLP有哪些应用场景呢?以阿里云为例:
大型语言模型到底是福音还是诅咒呢?一切福音都是诅咒吧。
如何清晰地告诉模型需要做什么呢?可以尝试以下五步法:
- 背景
- 任务
- 说明
- 确认
- 调整
背景
由于模型通用性很强,因此明确交流的背景很重要,从而让模型能够进入目标角色。例如:
你是一位经验丰富的内容创作者,在科技行业拥有高度的专业知识和权威。你有丰富的词汇量,能够轻松地向初学者解释复杂的话题。
你是一位出色的中学物理教师,为一位中等水平的学生制定学习提升计划,你很清楚如何让学生投入其中。
张三是一位精通文案写作的销售大师,尤其是在线销售和数字营销方面。他了解将功能转化为优势并使用情感进行销售的重要性。
可以让模型扮演任何专业人士,如:
- 宇航员
- 喜剧演员
- 翻译员
- 客服
- SEO专家
任务
指定期望的结果或目标,让模型聚焦,防止其跑题或包含很多不相关内容。例如:
你的任务是撰写将在网站、社交媒体、电子邮件简报和广告中发布的内容。你的写作风格是信息丰富、友好和引人入胜的,同时结合了幽默和现实生活中的例子。
你的任务是为班级规划实践课程,其中包括各种不同的方法、技巧和教学风格。
你的任务是为活动和住宿提出建议,以帮助和激励人们访问[某个目的地]。
说明
概述任务之后,最好再提供详细的说明。如帖子的整体基调、长度、目标受众等。例如:
回答应在100字左右,用短句和非标准的会话语法,以轻快有力的风格书写,就像给朋友写信一样。
回答应面向8岁左右的孩子,不要使用任何复杂的单词、句子或短语。
确认
确认模型是否理解了背景、任务和说明。
调整
因为模型可以在一定范围内记住会话的上下文,所以当没有获得预期结果时,无需重写完整提示。例如:
- 用更简洁的句子改写第二段
- 用更加自然、非正式的语言重写
对于响应中出现的错误或不一致之处,应要求模型澄清或纠正。
如前所述,模型的设计目标是补全,它并不保证内容的真实性和正确性。对于模型生成的内容,需要进行检查。
其他技巧
重置对话
可以使用类似“忘掉前面的对话内容”、“忽略所有先前提示”来重置对话,而无需开启新的对话。
只要答案
可以要求模型只给出答案,而不添加任何道歉或解释。如“只写结果,不要任何道歉或解释”、“不要写任何前文或后文,只返回答案”。
以特定格式返回结果
可以要求模型以特定的格式返回结果,如“用格式化的Markdown返回结果”。
使用括号
使用圆括号或方括号将说明性内容(如语气、写作风格等)与实际任务分开,以防这些说明渗入实际内容本身。
真实性问题
模型从训练的数据中学到了很多知识,这使得它可能提供听起来非常真实但实际上是编造的回答。有几种方法可以限制模型编造的可能性。
模型的设计目标是补全。
提供基本事实。如为模型提供一段资料(如维基百科条目)来回答有关的问题。
向模型展示如何说”我不知道“。让模型知道在不太确定时说”我不知道“。
使用确定性强的参数。
在下面的例子中,我们向模型展示了知道和不知道时的回答。
Q:蝙蝠侠是谁?
A:蝙蝠侠是一个虚构的漫画人物。
Q:Torsalplexity是什么?
A:?
Q:Devz9是什么?
A:?
Q:乔治·卢卡斯是谁?
A:乔治·卢卡斯是美国电影导演和制片人,以创作《星球大战》而闻名。
Q:百度什么时候能推出”文心一言“?
A: