大模型提示工程
大模型提示工程
转:提示词(Prompt)工程入门(非常详细),零基础入门到精通,看这一篇就够了_prompt提示词工程-CSDN博客
提示词工程,或称Prompt Engineering,是一种专门针对语言模型进行优化的方法。它的目标是通过设计和调整输入的提示词(prompt),来引导这些模型生成更准确、更有针对性的输出文本。
1. 原则
2. 清晰的指令
编写清晰的指令不意味着简短的指令,因为在许多情况下,更长的提示实际上更清晰且提供了更多上下文,这实际上可能导致更详细更相关的输出。
比如说以下指令:
请描述一下风。
请描述一下西北风。
请描述一下春天的风。
什么是CSP?
什么是计算机网络中的CSP(内容安全策略)?
什么是计算机网络中的CSP(内容安全策略)?并详细描述其原理。
为指令添加一些详细的背景信息,输出的结果会更加符合我们的预期。
2.1. 分隔符(☆)
大模型基于概率生成,每次生成的话不一样
2.2. 结构化输出
使用网页,直接复制文本
使用接口,就用代码
2.3. 参考示例(☆)
2.4. 角色扮演
或者
我希望你能充当我的私人健康教练,作为一个健身30年的老教练,为我的个人健康与减肥设计专业的建议,我是一个未参加过专业训练的初级健身人员,身高1。65m,女性,体重60kg(体脂率是36偏高),平时我的工作是早9晚6一天8小时,周末可能会加一天的班,平时的时间集中在晚上早上7点半以前和周末,我目前身体健康,并无健身器材方向的锻炼要求,我想减重到50kg,你应该利用你的运动科学知识、营养建议和其他相关因素来为我创建适合我的计划。在今后对话中,不再需要我额外的说明。 |
2.5要求模型检查是否满足条件
如果任务做出的假设不一定满足,我们可以告诉模型先检查这些假设,如果不满足,指示并停止执行。
你还可以考虑潜在的边缘情况以及模型应该如何处理它们,以避免意外的错误或结果。
在如下示例中,我们将分别给模型两段文本,分别是制作茶的步骤以及一段没有明确步骤的文本。 我们将要求模型判断其是否包含一系列指令,如果包含则按照给定格式重新编写指令,不包含则回答未提供步骤。
1 # 有步骤的文本 2 text_1 = f""" 3 泡一杯茶很容易。首先,需要把水烧开。 4 在等待期间,拿一个杯子并把茶包放进去。 5 一旦水足够热,就把它倒在茶包上。 6 等待一会儿,让茶叶浸泡。几分钟后,取出茶包。 7 如果你愿意,可以加一些糖或牛奶调味。 8 就这样,你可以享受一杯美味的茶了。 9 """ 10 prompt = f""" 11 您将获得由三个引号括起来的文本。 12 如果它包含一系列的指令,则需要按照以下格式重新编写这些指令: 13 14 第一步 - ... 15 第二步 - … 16 … 17 第N步 - … 18 19 如果文本中不包含一系列的指令,则直接写“未提供步骤”。" 20 """{text_1}""" 21 """ 22 response = get_completion(prompt) 23 print("Text 1 的总结:") 24 print(response) 25 26 # >>>>>>> 输出 <<<<<<< 27 Text 1 的总结: 28 第一步 - 把水烧开。 29 第二步 - 拿一个杯子并把茶包放进去。 30 第三步 - 把烧开的水倒在茶包上。 31 第四步 - 等待几分钟,让茶叶浸泡。 32 第五步 - 取出茶包。 33 第六步 - 如果你愿意,可以加一些糖或牛奶调味。 34 第七步 - 就这样,你可以享受一杯美味的茶了。 35 36 # 无步骤的文本 37 text_2 = f""" 38 今天阳光明媚,鸟儿在歌唱。 39 这是一个去公园散步的美好日子。 40 鲜花盛开,树枝在微风中轻轻摇曳。 41 人们外出享受着这美好的天气,有些人在野餐,有些人在玩游戏或者在草地上放松。 42 这是一个完美的日子,可以在户外度过并欣赏大自然的美景。 43 """ 44 prompt = f""" 45 您将获得由三个引号括起来的文本。 46 如果它包含一系列的指令,则需要按照以下格式重新编写这些指令: 47 48 第一步 - ... 49 第二步 - … 50 … 51 第N步 - … 52 53 如果文本中不包含一系列的指令,则直接写“未提供步骤”。" 54 """{text_2}""" 55 """ 56 response = get_completion(prompt) 57 print("Text 2 的总结:") 58 print(response) 59 60 # >>>>>>> 输出 <<<<<<< 61 Text 2 的总结: 62 未提供步骤。
泡一杯茶很容易。首先,需要把水烧开。 如果文本中不包含一系列的指令,则直接写“未提供步骤”。 |
今天阳光明媚,鸟儿在歌唱。 根据以上文本,如果它包含一系列的指令,则需要按照以下格式重新编写这些指令: |
2.6长文章处理
如果大语言模型支持的token比较少,如何处理长文章?
示例:将文章拆开几部分,发送给大模型
我将向您发送几条消息,如果文本中没有包含"</endoftext>"你只需要回复OK,如果收到后,则将前面的消息合并一起生成一份详尽的中文摘要。以下是内容第一部分: |
2.7让大模型引导
如果对一个行业没有清晰的认识,可以反问大模型:
假设你是一个互联网方向上的资深专家,我是向你来咨询互联网发展历史的小白客户,需要详细而确切的信息,但我不太懂如何提问。请逐步引导我,让我的需求更具体。完成后回复“已完成背景收集,开始进行回复‘互联网发展历史’”。提问我问题的时候,请一个问题一个问题的进行询问,同时,我如果回答不知道,可以考虑问下一个问题。 |
3. 让模型思考
3.1. 指定步骤(☆)
大模型只是提供的便利,没有那么智能
大模型幻觉(一本正经胡说八道)需解决
3.2. 指导模型求解
判断学生的解决方案是否正确。
问题:我正在建造一个太阳能发电站,需要帮助计算财务。
土地费用为 100美元/平方英尺
我可以以 250美元/平方英尺的价格购买太阳能电池板
我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元作为平方英尺数的函数
首年运营的总费用是多少。
学生的解决方案:
设x为发电站的大小,单位为平方英尺。
费用土地:100x
太阳能电池板费用:250x
维护费用: 100,000美元+100x
总费用: 100x+250x+100,000美元+100x=450x+100,000美元
(文心一言、kimi和豆包,都回复“错误”)
4. 迭代优化
4.1. 添加长度限制(☆)
分词器不是按字数来分的,不会严格按照字数要求提供,但是相差不大,在可接受范围
4.2. 添加关注偏向(☆)
4.3. 添加表格表述
5. 文本概括
比如摘要
这个熊猫公仔是我给女儿的生日礼物,她很喜欢,去哪都带着。公仔很软,超级可爱,面部表情也很和善,但是相比于价钱来说,它有点小,我感觉在别的地方用同样的价钱能买到更大的。快递比预期提前了一天到货,所以在送给女儿之前,我自己玩了会。
5.1. 限制输出文本长度(☆)
这个熊猫公仔是我给女儿的生日礼物,她很喜欢,去哪都带着。公仔很软,超级可爱,面部表情也很和善,但是相比于价钱来说,它有点小,我感觉在别的地方用同样的价钱能买到更大的。快递比预期提前了一天到货,所以在送给女儿之前,我自己玩了会。
您的任务是生成一个产品的简短摘要,对文本进行概括,30个字。
5.2. 设置关键角度侧重(☆)
这个熊猫公仔是我给女儿的生日礼物,她很喜欢,去哪都带着。公仔很软,超级可爱,面部表情也很和善,但是相比于价钱来说,它有点小,我感觉在别的地方用同样的价钱能买到更大的。快递比预期提前了一天到货,所以在送给女儿之前,我自己玩了会。
您的任务是生成一个产品的简短摘要,对文本进行概括,30个字,侧重在快递服务上。
5.3. 关键信息抽取(☆)
这个熊猫公仔是我给女儿的生日礼物,她很喜欢,去哪都带着。公仔很软,超级可爱,面部表情也很和善,但是相比于价钱来说,它有点小,我感觉在别的地方用同样的价钱能买到更大的。快递比预期提前了一天到货,所以在送给女儿之前,我自己玩了会。
请提取产品运输相关信息
6. 文本转换
6.1. 文本翻译
6.2. 识别语种
6.3. 多语种翻译
6.4. 语气和写作风格调整(☆)
6.5. 文件格式转换
6.6. 拼写和语法纠正
6.7. 综合样例
7. 局限性
虚假知识:模型偶尔会生成一些看似真实实则编造的知识。
如果模型在训练过程中接触了大量的知识,它并没有完全记住所见的信息,因此它并不很清楚自己知识的边界,这意味着它可能会尝试回答有关晦涩主题的问题,并编造听起来合理但实际上并不正确的答案,我们称这些编造的想法为幻觉。
比如,我们要求告诉我们 Boie 公司生产的 AeroGlide UltraSlim Smart Toothbrush 产品的信息,事实上,这个公司是真实存在的,但产品是编造的,模型则会一本正经地告诉我们编造的知识。
模型会输出看上去非常真实的编造知识,这有时会很危险,因此,请确保使用我们在本节中介绍的一些技巧,以尝试在构建自己的应用程序时避免这种情况,这是模型已知的一个弱点,也是我们正在积极努力解决的问题。 在你希望模型根据文本生成答案的情况下,另一种减少幻觉的策略是先要求模型找到文本中的任何相关引用,然后要求它使用这些引用来回答问题,这种追溯源文档的方法通常对减少幻觉非常有帮助。
8. Prompt优化策略
1、明确具体:加入场景要求、具体任务
2、提供上下文:正确的区分不同的部分的内容(指令与背景信息使用符号区分)
3、正确的语法:使用正确的语法和拼写,避免使用过于技术性或不常见的术语
4、分步询问:复杂任务分步进行,提供引导或者示例
5、输出要求:提供输出要求,比如,结构化的输出
9. 基础Prompt结构
9.1. 公式
指令 + 输入数据 + 背景 + 输出要求
9.2. 结构说明
10.大语言模型常用场景
10.1周报
假设你是一位高级产品经理,你需要帮我写一份周报,下面是我本周的工作内容: 1、优化了APP的对话界面设计。 2、上线了APP帮助中心的AB实验。 注意你写的周报中需要包含: 【本周工作进展】:本周做了哪些事,产生了哪些结果。 【下周工作安排】:基于本周的结果下周要推进哪些事。 【思考总结】:简要说说本周的收获和反思。 举例:下面是我写过的周报,请按照我书写的风格来完成后续的周报书写,从结构、口吻、表述方式等角度进行复写。