LLM之prompt提示词
Author:Once Day Date:2023年4月30日
参考文章:
- 中文完整版全9集ChatGPT提示工程师|AI大神吴恩达教你写提示词
- ChatGPT Shortcut – 简单易用的 ChatGPT 快捷指令表,让生产力倍增!标签筛选、关键词搜索和一键复制 Prompts | Tag filtering, keyword search, and one-click copy prompts (aishort.top)
1. 概述
如同ChatGPT的通用大模型需要使用指令式微调来获取更好的输出效果。
首先可以使用分割符去分割提示(指令)和问题,如下:
三引号(triple quotes),"""三个反引号(triple backticks),```三个破折号(triple dashes), ---尖角括号(Angle brackets), XML tags:
下面是一个实例,不同的提示下,回答将有很大的不同:
>>> 以一个专业的c程序员回答下面的问题```结构体的大小如何计算```结构体的大小是由其成员变量的类型和对齐方式决定的。具体计算方法如下:1. 计算结构体中每个成员变量的大小,包括基本类型和其他结构体类型。2. 将每个成员变量的大小对齐到结构体对齐方式的整数倍。对齐方式的大小通常为编译器默认的对齐方式或者使用#pragma pack(n)指定的对齐方式,其中n为对齐方式的大小。3. 将对齐后的每个成员变量的大小相加,得到结构体的总大小。需要注意的是,结构体的大小可能会受到编译器的优化影响,例如使用了空间压缩等技术。因此,不同编译器可能会有不同的结构体大小计算方式。>>> 以一个专业的Go程序员回答下面的问题```结构体的大小如何计算```在Go语言中,结构体的大小是由其成员变量的类型和对齐方式决定的。具体计算方法如下:1. 计算结构体中每个成员变量的大小,包括基本类型和其他结构体类型。2. 将每个成员变量的大小对齐到结构体对齐方式的整数倍。对齐方式的大小通常为编译器默认的对齐方式或者使用struct tag指定的对齐方式,其中tag的格式为`align:n`,表示该成员变量的对齐方式为n字节。3. 将对齐后的每个成员变量的大小相加,得到结构体的总大小。需要注意的是,Go语言中结构体的大小可能会受到编译器的优化影响,例如使用了内存对齐等技术。因此,不同编译器可能会有不同的结构体大小计算方式。>>> 假设你是一个菜鸟程序员,然后回答一下下面这个问题```结构体的大小如何计算```在计算结构体的大小时,需要考虑结构体中每个成员变量的类型和对齐方式。每个成员变量的大小可以通过查看其所占用的字节数来确定,对于基本类型可以使用sizeof关键字获取其大小,对于其他结构体类型可以通过递归的方式计算。而对齐方式通常是由编译器决定的,可以使用#pragma pack(n)或struct tag来指定对齐方式。计算完每个成员变量的大小并对齐后,将它们相加就可以得到结构体的总大小。需要注意的是,不同的编程语言和编译器可能会有不同的结构体大小计算方式。
1.2 以特定的格式(json)输出内容
可以要求ChatGPT以特定的格式输出内容,如下
>>>假设你是一个菜鸟程序员,以json格式回答下面问题,字段:问题,场景,方法,注意事项。```结构体的大小如何计算```{"问题": "结构体的大小如何计算?","场景": "在编程中,当我们定义一个结构体时,需要知道该结构体的大小,以便在程序中正确地使用它。","方法": "结构体的大小是由其成员变量的类型和对齐方式决定的。计算结构体大小时,需要计算每个成员变量的大小,将其对齐到结构体对齐方式的整数倍,然后将对齐后的每个成员变量的大小相加,得到结构体的总大小。对齐方式通常是由编译器决定的,可以使用#pragma pack(n)或struct tag来指定对齐方式。","注意事项": "不同的编程语言和编译器可能会有不同的结构体大小计算方式,因此需要注意跨平台开发时的兼容性问题。此外,在计算结构体大小时,还需要注意成员变量的顺序和对齐方式的影响,以避免出现不必要的内存浪费或对齐错误的问题。"}
1.3 检查输出条件是否满足,以得到合适的结果
可以要求ChatGPT检查给定的文本中是否具有一连串提示符,如下:
>>> 在下面以三对引号包含的文本中,如果存在一系列的指令,那么按下面的格式重写这些指令:Step 1 - ...Step 2 - ......Step N - ...如果文本中不包含任何指令,那么直接输出“不存在指令”。"""(要输入的文本)"""
下面是一些回答实例:
>>> 在下面以三对引号包含的文本中,如果存在一系列的指令,那么按下面的格式重写这些指令:Step 1 - ...Step 2 - ......Step N - ...如果文本中不包含任何指令,那么直接输出“不存在指令”。"""以下是制作番茄炒鸡蛋的步骤:番茄洗净切块,鸡蛋打散备用。热锅凉油,油热后倒入鸡蛋液,炒成蛋花后盛出备用。锅中留底油,放入番茄块,加少量盐和白糖,翻炒至软烂。将炒好的鸡蛋花倒入锅中,加少量盐和鸡精,翻炒均匀即可。"""##(下面是回答)Step 1 - 番茄洗净切块,鸡蛋打散备用。Step 2 - 热锅凉油,油热后倒入鸡蛋液,炒成蛋花后盛出备用。Step 3 - 锅中留底油,放入番茄块,加少量盐和白糖,翻炒至软烂。Step 4 - 将炒好的鸡蛋花倒入锅中,加少量盐和鸡精,翻炒均匀即可。>>> 在下面以三对引号包含的文本中,如果存在一系列的指令,那么按下面的格式重写这些指令:Step 1 - ...Step 2 - ......Step N - ...如果文本中不包含任何指令,那么直接输出“不存在指令”。"""福州有很多著名的景点,其中一些是三坊七巷、鼓山、福州西湖公园、福州南山景区、闽江公园、福建省博物馆、林则徐纪念馆、闽南大戏楼等。这些景点都有各自的特色和历史背景,值得一游。三坊七巷是福州最古老的街区之一,保存完好的明清建筑群。鼓山是福州市区的地标性山丘,登上山顶可以俯瞰整个福州市。福州西湖公园以西湖为中心,园内还有古建筑群、花园、动物园等。福州南山景区以南山古寺、南山文化园为主体,是福州市区的一处山水胜景。闽江公园位于福州市中心,是一处集游览、休闲、娱乐为一体的城市公园。福建省博物馆是福建省内最大的博物馆,收藏有大量的历史文物和艺术品。林则徐纪念馆是纪念中国近代著名政治家、思想家林则徐的博物馆。闽南大戏楼是福州市的地标性建筑之一,是福建省内最大的木构剧场"""##(下面是回答)Step 1 - 了解福州的著名景点,包括三坊七巷、鼓山、福州西湖公园、福州南山景区、闽江公园、福建省博物馆、林则徐纪念馆、闽南大戏楼等。Step 2 - 参观福州最古老的街区之一——三坊七巷,欣赏保存完好的明清建筑群。Step 3 - 登上福州市区的地标性山丘——鼓山,俯瞰整个福州市的美景。Step 4 - 游览福州西湖公园,欣赏以西湖为中心的古建筑群、花园、动物园等。Step 5 - 前往福州南山景区,领略山水胜景,参观南山古寺、南山文化园等景点。Step 6 - 在闽江公园游览、休闲、娱乐,感受城市公园的魅力。Step 7 - 参观福建省博物馆,欣赏历史文物和艺术品。Step 8 - 前往林则徐纪念馆,了解中国近代著名政治家、思想家林则徐的生平事迹。Step 9 - 参观福州市的地标性建筑之一——闽南大戏楼,欣赏福建省内最大的木构剧场。>>> 在下面以三对引号包含的文本中,如果存在一系列的指令,那么按下面的格式重写这些指令:Step 1 - ...Step 2 - ......Step N - ...如果文本中不包含任何指令,那么直接输出“不存在指令”。 """今天的天气真好,温软的阳光照在身上,情绪都变好了不少。"""##(下面是回答)不存在指令。
1.4 少量样本或者零样本事件提供例子
如果一些问题属于非通用场景,比如私密的数据,或者非公开的例子,那么需要给ChatGPT提供相应的参考例子,如下:
>>> 你应该按照下面的一致风格来回答问题:(学生): 为什么苹果熟了会落下来?(老师):这是一个非常好的问题,体现了你主动思考的优秀品质,不懂没事,善问就好。苹果会落下来是因为受到了地球引力作用。(学生):为什么月球不会落下来?##(下面是回答)(老师):同样是地球引力的作用,月球受到地球的引力作用,但是它的速度和轨道使得它一直绕着地球转,不会落下来。这也是为什么月球是地球的卫星。
1.5 指定完成事件的步骤,判断自己的步骤是否正确
下面用来判断题目是否做对了:
>>> 你需要判断下面的学生解答是否正确。解决方法步骤如下:1. 首先给出你自己的解答2. 然后比较你和学生的解答,并评估学生解答是否正确。格式如下:问题:```(这是问题)```学生的解答:```(这是学生的解答)```实际的回答:```(解答该问题的步骤和你的答案)```学生的解答是否正确:```(是或者不是)```问题:```鸡和兔子在一个笼子里面,能看到有10个头,30只脚,请问鸡和兔子各有几只?```学生的解答:```鸡和兔子都只有一个头,但是鸡有两只脚,兔子有四只脚,因此每只兔子都比鸡要多出两只脚。1. 如果都是鸡,那么应该只有10*2=20只脚,实际多出30-20=10只脚。2. 多出的脚是兔子的脚,一共有10/2=5只兔子。因此鸡有5只,兔子有5只。```实际的回答:##(下面是回答)根据题目,我们可以列出如下方程组:x + y = 10 (头的总数)2x + 4y = 30 (脚的总数)解方程组得到:x=5,y=5。因此,鸡有5只,兔子有5只。学生的解答是否正确:是。
1.6 伪造或者虚假的回答
这些回答被称为幻觉,是ChatGPT的已知缺点,通常回避方法是要求GPT提供相关信息的引用,避免伪造逼真的答案。
1.7 生成文本摘要信息
有的时候,评论或者文章的信息很多,阅读起来很累,可以使用ChatGPT生成文本摘要信息。
限定用几个句子,或者多少单词来回答问题。
或者限定几个关键词来让ChatGPT回答。
>>> 识别下面三队引号中文本的情感,用不超过5个单词来回答,并且使用逗号来分割。"""今天吃了好多饭,有点难受,是时候下定决心减肥了!"""负面情感,难受, 减肥。
下面是一个更加完善的例子:
>>> 从评论文本中提取下面信息:1. 情感(积极或者消极)2. 评论者是否感到愤怒? (是或者不是)3. 购买的物品4. 制造物品的厂商评论文章使用三对引号分割,输出格式为json,字段为:情感、愤怒、物品、厂家。如果对应信息缺失,使用“未知”代替。输出信息尽可能简短,“愤怒”的值格式化为布尔值。评论文章"""我准备买一台笔记本,非常贵,关键是还缺货,华硕败家之眼简直把消费者当成猴子来耍,算了下次再也不会买了。"""##(输出内容如下)输出结果为:{"情感": "消极","愤怒": true,"物品": "笔记本","厂家": "华硕"}
1.8 检查语言语法和翻译文本
主要是用于语言处理方面,如下:
- 翻译文本到不同的语言。
- 检查语言的语法是否正确,输入修改后的文本。
- 将文本描述转换成json,HTML格式,便于显示和查看。
- 生成特定风格的文本,对文本进行润色。
1.9 Temperature随机程度
这个参数可以调节那些低概率答案出现的可能性。取值范围为[0-1]。
当值为0时,预测策略趋向于保守策略,这个时候获取的答案稳定,即最大可能的答案。
当值为1时,低概率的答案也可能出现。
需要根据情况来选择,稳定的产品里,建议使用0。