赞
踩
目录
ChatGPT 的问世带动了一大批AI大模型开源并开始投入商用,尤其是从去年下半年开始,各类大模型纷纷问世,加之国内的互联网大厂也纷纷投入大模型赛道,让大模型的黑科技也能被很多不懂AI的小伙伴开始尝鲜,举例来说,像国内阿里的通义千问,百度的千帆大模型,腾讯的混元大模型等,都是很不错的AI大模型产品,得到了很多业内人士的认可,但对于很多初学大模型或不懂大模型的人来说,如何真正用好AI大模型,并利用大模型强大的对话能力为日常事务助力增效呢?这就需要全面而系统的学习prompt提示词工程。
Prompt提示词工程(Prompt Engineering)是在自然语言处理(NLP)领域中一种重要的技术和方法,主要用于指导预训练的大规模语言模型(Large Language Models, LLMs)生成高质量、准确且有针对性的输出。
Prompt Engineering,也称为“指令工程”或“提示词工程”,是指通过设计、实验和优化输入提示词(Prompt)来引导预训练语言模型生成所需的响应或完成特定任务的技术。
一个有效的prompt通常包含以下几个关键要素:
引导语或指示语:明确告诉模型需要完成什么样的任务;
上下文信息:提供必要的背景知识,帮助模型更好地理解问题;
任务描述:明确地描述您期望模型执行的具体任务;
输出格式指示:如果需要特定格式的输出,需要在prompt中指明;
角色设定:为模型定义一个角色,以缩小问题范围并减少歧义;
Prompt 提示词工程的作用在于指导和控制大规模语言模型(LLMs)的行为,使其能更准确、更有针对性地生成文本或完成人们下发的特定任务。下面结合实践经验总结了Prompt提示词工程的主要作用:
指导模型行为
明确任务:通过精确的prompt,可以明确地告诉模型需要执行什么任务,比如回答问题、创作故事、提供建议等;
上下文设置:提供必要的背景信息,帮助模型更好地理解问题的上下文环境,从而给出更加贴切的回答;
控制内容输出质量
提高输出内容准确性:精心设计的prompt可以帮助模型生成更准确、相关度更高的内容;
减少输出内容偏差:通过提供适当的指导,可以减少模型可能产生的偏见或错误信息;
规定输出格式
格式化输出:如果需要特定格式的输出,可通过prompt指定输出格式,比如表格、列表、段落、markdown等;
标准化答案:对于需要标准化回答的场合,比如考试答案或官方声明,可以通过prompt来规范输出;
促进创造性应用
创意生成:规范的prompt可以激发模型创造力,生成新颖的想法、故事或艺术作品;
角色扮演:通过定义角色或情境,使模型能够在特定角色下进行对话或创作;
无需反复训练
灵活调整:通过修改prompt,可以在不改变模型本身的情况下调整其输出,从而实现快速迭代和测试;
节省资源:避免了重新训练模型所需的大量时间和计算资源;
助力教育和培训
教学辅助:在教育领域,可通过设计特定的prompt来帮助学生或老师解决习题或进行学术研究;
模拟对话:在培训场景中,使用prompt来模拟真实世界中对话或情景,帮助员工准备客户互动;
支持决策的制定
数据分析:通过恰当的prompt,可以从大量数据中提取有用的信息,支持决策过程;
趋势预测:基于历史数据,通过prompt引导模型进行趋势分析和未来预测;
自然语言理解和生成
多语言支持:通过适当的prompt,可以使模型支持不同语言之间的转换和理解;
复杂任务处理:对于复杂的自然语言处理任务,如机器翻译、摘要生成等,prompt可以显著提升性能;
Prompt Engineering 广泛应用于各类场景中,例如:
问答系统:通过特定的prompt引导模型回答问题;
文本生成:提供初始文本或上下文,让模型继续写作或创造新的内容;
代码生成:根据描述性prompt生成代码片段;
翻译任务:通过prompt指导模型完成语言间的翻译;
通过Prompt Engineering,用户可以更好的控制和指导AI模型的行为,使其在不需要重新训练的情况下适应不同的应用场景。这是一种非常实用的技术,尤其对于那些无法或不便对模型进行微调的情况更为重要。
学习 Prompt提示词工程 对于有效利用大规模语言模型(LLMs)来说非常重要,一方面可以为今后快速学习和使用各类大模型提供基础的技能储备,同时也为利用大模型拓展个人综合能力,为日常工作助力提效打开全新的视野,下面详细总结了学习Prompt提示词工程的作用:
提高交互效率
快速响应:通过学习如何构造有效的prompt,用户可更快的从模型中获取所需的信息或结果;
减少试错:了解最佳实践可以减少不必要的尝试,提高与模型交互时的成功率;
控制内容输出质量
精准表达:掌握prompt技巧可以帮助使用者更准确的表达意图,从而获得高质量的输出内容;
减少误解:清晰而具体的prompt有助于减少模型对指令的误解,降低错误率;
创造性应用
激发创意:通过设计富有创造性的prompt,可以推动模型产生新颖的想法、故事或解决方案;
艺术创作:对于AI艺术生成等领域,恰当的prompt能够帮助创造出独特且吸引人的作品;
专业领域应用
行业知识:在医疗、法律、金融等行业,学习如何编写专门领域的prompt可以让专业人士更有效地利用模型解决问题;
满足特定需求:针对特定业务流程或工作流,定制化的prompt可以提高工作效率并降低成本;
教育与培训领域
个性化学习:在教育场景中,个性化的prompt可以根据学生水平和兴趣定制学习材料,提高学习效果;
模拟实践:在职业培训中,通过模拟真实世界的场景,可以帮助员工更好地准备实际工作中的挑战;
决策支持
数据分析:在商业智能和数据分析领域,精准的prompt可以帮助用户从海量数据中提取有价值的信息;
策略制定:对于战略规划和市场分析,恰当的prompt可以辅助做出更好的决策;
社交媒体和营销
内容生成:在社交媒体和内容营销中,高效的内容生成能力可以提高品牌曝光度和用户参与度;
个性化体验:通过个性化的prompt,可以创建更加贴近用户需求的内容,提高用户满意度;
促进技术发展
模型优化:随着模型的不断进步,学习最新的prompt技巧可以让使用者保持持续的领先;
社区贡献:分享有效的prompt和经验可以促进社区的发展和技术的进步;
避免偏见和错误
减少偏见:通过精心设计的prompt可以减少模型输出中的偏见和歧视;
提高准确性:避免误导性的prompt可以确保模型输出的准确性;
在真正开始使用大模型之前,需要系统学习Prompt 的使用,就像我们学习一门技术,一门编程语言,一门外语等,第一步,一定是先学习其基础的语法、结构,而后通过反复的大量的练习和实践,才能理解并掌握,下面我们也按照这样的思路来系统学习Prompt 。
由于下文中将会涉及到较多的操作演示,在开始学习之前,请先准备好1~2个大模型的客户端工具,选择有很多,比如ChatGpt,通义千问网页客户端,千帆大模型等都是可以的,我这里使用的是通义千问的网页客户端进行演示,地址:通义
下面也列举国内的几个热门的大模型地址,以供学习使用:
在学习mysql查询语法的时候,还记得下面mysql的查询语法的完整结构吗
- SELECT [DISTINCT] select_list
- FROM table_references
- [WHERE where_condition]
- [GROUP BY group_by_list]
- [HAVING having_condition]
- [ORDER BY order_by_list]
- [LIMIT limit_count [OFFSET offset_count]];
其实Prompt 也有下面的完整语法结构,参考下面这个简单的公式:
指令 + 输入数据 + 背景 + 输出要求
具体是什么意思呢?看下面的详细解释
名称 | 描述 | 示例 |
---|---|---|
指令 词(必须) | 此部分为prompt的指令,告诉模型应如何响应 | "简述"、"解释"、"翻译"、"总结"、"润色"、“写一篇文章"等 |
输入数据 (必须) | 提供给模型的问题或具体內容,应清晰、完整,以确保模型生成满意的答案,注意控制长度,必要的时候建议分段发送 | 当需要总结时,提供原始的文本内容;当需要编写SQL代码时,提供的数据库表和字段信息 |
背景 (非必须) | 与任务相关的其他信息,提供额外信息以帮助模型更好地理解需求 | 同样是写关于计算机的科普文章,是写给小学生还是计算机专业大学生,得到的内容会完全不同 |
输出要求 (非必须) | 期望模型输出的指标或结构,比如:类型、字数 | “请输出五条‘XX’相关的事实,并按重要性排序:1. ...,2. ...,3. ...”,请按照markdown、表格...形式进行输出 |
依据上面的Prompt语法结构,下面列举几个示例加以说明。
对大模型来说,你可以将它作为一个拥有丰富知识库的大脑,只有指令足够的明确、清晰,它的理解成本才能最小,得到的回答也更贴合你的需要,比如输出下面这样的指令:
使用通俗的语言,解释一下蝴蝶效应是什么意思
大模型响应内容如下
在某些场景下,我们需要大模型帮我们完成一些总结,概括,或者根据提供的内容,得到分析的结论,再比如,我们提供一个mysql的建表需求,为我们生成建表的sql和初始化数据等,那么你就需要提供一些原始的内容文本信息,这样大模型才能根据你提供的内容理解并得到你想要的,如下,提供了一个需求描述,希望大模型生成一张建表语句和初始化sql,下发的指令如下:
请根据我提供的信息,生成一张mysql用户表,该表包括5个字段,主键,用户名,密码,邮箱,电话,之后,再初始化几条数据
大模型的响应内容如下,从响应的结果来看,大致是符合要求的,一般来说,其生成的内容,在拿来使用之前还需要人工做一些微调
在日常工作中,为了向同事或其他人清晰阐述我们的意思,并充分理解需求,有时候需要在真正提出需求之前提供需求的背景,提出背景不是必须的,但是很重要,清晰的背景可以为对方提供更完整的联想空间,从而对接下来需求的理解更加深刻,这对于大模型来说也是适用的,有了背景,大模型可以根据背景信息从知识库中一定程度上缩小检索的范围,得到的内容输出也更贴合要求,比如像大模型提供下面的指令:
针对小学生(小学生即为参考背景),发出下面的指令:
假如你现在面对的是一群小学生,请解释一下什么是量子力学
不难发现,得到的回答通过较多的形象的比喻来阐述量子力学的解释,符合小学生的理解这个阶段定位,而小学生即为我们的需求背景
如果是面对研究生(研究生即为参考背景),再看看大模型给出的回答
假如你现在面对的是高校的硕士研究生,请解释一下什么是量子力学
显而易见,在面对不同的群体时,大模型给出的输出内容是不一样的,这就是提供背景参考带来的效果,而这一点,恰恰是很多初次使用LLM类型的大模型用户容易忽视的一点。
在使用Prompt 提示词工程之前,有一些基本的原则需要遵循,只有掌握了基本的编写原则,才能让大模型更好的辅助我们得到更符合预期的输出内容
在编写Prompt提示词工程时,遵循一定的原则可帮助我们更有效地利用自然语言处理技术和生成高质量的内容。以下是一些重要的原则:
指令明确
清晰表达意图:确保你提供的prompt指令明确地传达了您想要达到的目标;
减少模糊:减少输入指令中可能导致歧义的表述;
指令具体
提供具体细节:给出具体的背景、条件和期望的结果;
使用精确词汇:比如,在请求生成特定类型的文章时,明确指出风格、受众等信息;
指令结构化
组织逻辑顺序:如果prompt包含多个部分或步骤,尽量按照逻辑顺序排列它们;
分段落或项目符号:对于较长的prompt,使用段落或项目符号来增加可读性(后文会提到);
保持指令简洁
保持简短:尽可能使用较少的文字来表达意思,减少大模型的理解和学习成本;
去除冗余:避免不必要的重复或无关紧要的信息;
保持指令一致性
维持指令的统一风格:如果你正在创建一系列相关的prompt,确保它们在风格和语气上保持一致;
使用相同的术语:对于特定领域的prompt,使用前后一致的专业术语;
尽量使用自然语言
采用日常语言:使用人们日常交流时使用的语言风格,也是为了减少大模型的理解成本;
避免过于技术化的术语:除非是面向专业读者,否则尽量使用通俗易懂的语言;
情境相关性
考虑实际情境:确保prompt的指令内容与预期的应用场景相关联;
提供上下文信息:如果需要,提供足够的背景信息来帮助模型理解情境;
指令的引导性
给出示例:提供一个或多个参考案例来展示所期望的结果,案例也是为大模型提供快速的联想并缩减检索范围;
使用指令词:使用诸如“描述”、“解释”、“列举”等词汇来明确指示任务;
根据指令结果反馈循环
评估结果:检查生成的内容是否符合预期,并据此不断调整prompt;
迭代改进:根据反馈不断优化prompt,以获得更好的结果;
指令需遵守伦理道德
尊重隐私:避免使用敏感或个人信息;
避免偏见:确保prompt不会促进任何形式的歧视或偏见;
注意指令的安全性
避免有害内容:确保prompt不会导致生成有害、非法或不适当的内容;
设置限制:对于某些应用,可以设置过滤机制来防止不良内容产生;
在编写 Prompt 提示词时,合理使用分隔符,可以让大模型能够更好的理解指令要表达的意思,从而得到更符合要求的输出,下面总结了一些常用的指令,这在实际使用大模型时,可以通过实践来逐步理解并掌握,有一些常用的建议可以记住。
用于定义标签或者类别,后面跟具体的内容,参考示例:
问题: 量子力学是谁创立的,请给出回答
最简单的分隔符,用于分割单词或短语
Generate a list of five fruits: apple orange banana strawberry kiwi
用于指示转换或者映射关系
Text -> Summary
A long time ago in a galaxy far, far away...
用于分隔选项或者并列的概念
Write an essay on the following topics: science | technology | society
用于列出多个项
List three colors: red, blue, green
用于列表或者指示顺序
- Introduction
- Main points
- Conclusion
用于包含附加信息或者注释
Write a story about a character (name: John) who travels through time.
用于表示模板中的变量或者占位符
{Name} is a famous {Occupation}.
用于表示可选的信息或者参数
[Optional] Include a bibliography at the end of the report.
用于定义变量或者属性
Title = The Art of Programming
Author = Jane Smith
一些特殊字符包括:
#
:用于注释或标签。
:
:用于冒号后接的内容是前一部分的说明或解释。
;
:用于分割列表中的项目。
=
:用于等式或赋值
\n
或 \r\n
:用于分割不同的段落或逻辑单元
<start> 和 <end>:用于标记文本的开始和结束。
<speaker1> 和 <speaker2>:用于区分对话中的不同发言者。
<question> 和 <answer>:用于区分问题和答案。
<tag> 和 </tag>:用于标记文本的特定部分
你应该通过提供尽可能清晰和具体的指令来表达希望模型执行的操作,这将引导模型给出正确的输出,并减少你得到无关或不正确响应的可能。
编写清晰的指令不意味着简短的指令,因为在许多情况下,更长的提示实际上更清晰且提供了更多上下文,这实际上可能导致更详细更相关的输出。
策略一:使用分隔符
分割符可以清晰地表示输入的不同部分;
分隔符可以是:```,"",<>,,<\tag>等;
日常编写指令时可以记住一些常用的分隔符,可以很好的提升使用大模型的工作效率;
你可以使用任何明显的标点符号将特定的文本部分与提示的其余部分分开;
这可以是任何可以使模型明确知道这是一个单独部分的标记;
使用分隔符是一种可以避免提示注入的有用技术;
提示注入,是指如果用户将某些输入添加到提示中,则可能会向模型提供与您想要执行的操作相冲突的指令,从而使其遵循冲突的指令而不是执行您想要的操作;
输入里面可能包含其他指令,会覆盖掉你的指令,对此,使用分隔符是一个不错的策略。
如下的案例中,我们给出一段话并要求 大模型对内容进行总结,在该示例中我们使用 ``` 来作为分隔符:
- 请帮我提炼如下内容的大纲:
- ```
- 新势力造车的现状呈现出激烈的竞争和两极分化的趋势。
-
- 新势力造车企业在面对传统车企的电动化转型和市场竞争时,面临着巨大的挑战。一方面,部分传统车企在电动化转型道路上展现出坚定的决心,凭借其实力雄厚、成本管控能力强以及产品实用质优价廉的特点,适应大众市场,更有可能在激烈竞争中生存下来。相比之下,新势力造车企业虽然车型定位偏向个性化,拥有特定的客群,但由于缺乏自我造血能力,依赖外部融资,难以长期维持。2024年,造车新势力之间的竞争将更加激烈,两极分化将更加严重,一些企业可能会因为无法适应市场变化而被淘汰。
-
- 从市场格局来看,自主品牌领跑新能源汽车市场的趋势依旧明显。比亚迪、广汽埃安、长城汽车、长安汽车等企业保持了强劲的增长势头,而合资品牌也在加速新能源转化,如上汽大众ID.家族实现了单月新车交付量的显著提升。造车新势力阵营中,理想汽车、蔚来汽车、小鹏汽车等企业通过不断创新和产品升级,试图在市场中占据一席之地。然而,也有一些企业因为市场策略失误或资金问题而面临困境,如威马汽车和天际汽车等
-
- 总的来说,新势力造车企业在面对传统车企的竞争和市场变化时,需要不断创新和提升自身实力,以适应市场的需求和变化。同时,企业也需要关注成本控制和资金管理,以确保能够在激烈的市场竞争中生存下来
- ```
然后大模型给出如下的输出,以markdown这种看起来比较舒服的排版方式输出了出来
利用上文提到的分隔符,也可以使用下面这种格式的内容让大模型输出一段摘要信息
- 文章内容:
-
- ```
- - 新势力造车企业在面对传统车企的电动化转型和市场竞争时,面临着巨大的挑战。一方面,部分传统车企在电动化转型道路上展现出坚定的决心,凭借其实力雄厚、成本管控能力强以及产品实用质优价廉的特点,适应大众市场,更有可能在激烈竞争中生存下来。相比之下,新势力造车企业虽然车型定位偏向个性化,拥有特定的客群,但由于缺乏自我造血能力,依赖外部融资,难以长期维持。2024年,造车新势力之间的竞争将更加激烈,两极分化将更加严重,一些企业可能会因为无法适应市场变化而被淘汰。
- - 从市场格局来看,自主品牌领跑新能源汽车市场的趋势依旧明显。比亚迪、广汽埃安、长城汽车、长安汽车等企业保持了强劲的增长势头,而合资品牌也在加速新能源转化,如上汽大众ID.家族实现了单月新车交付量的显著提升。造车新势力阵营中,理想汽车、蔚来汽车、小鹏汽车等企业通过不断创新和产品升级,试图在市场中占据一席之地。然而,也有一些企业因为市场策略失误或资金问题而面临困境,如威马汽车和天际汽车等
- - 总的来说,新势力造车企业在面对传统车企的竞争和市场变化时,需要不断创新和提升自身实力,以适应市场的需求和变化。同时,企业也需要关注成本控制和资金管理,以确保能够在激烈的市场竞争中生存下来
- ```
-
- 请结合上面的内容,输出一段摘要
结构化的输出,这可以使大模型的输出结果更容易被用户解析和使用,仍然以上面的输出摘要为例,在大模型第一次输出结果之后,我们可以让它以表格的形式进行输出,如下:
仍然以上面的结果为例,如果希望以markdown的格式输出,那么还可以指定具体的格式要求,如下:
- 将上述的输出结果以 markdown 的形式呈现出来,格式如下:
- 1、XXX
- - XXX
- - XXX
- 2、XXX
- - XXX
- - XXX
在使用大模型进行提问时,一方面大模型自身对于单次输入的内容回答长度有限制,超过一定的长度限制后,反馈的输出结果准确性不好,另一方面,这也并不符合现实的对话场景下,通过一次性的问答就能得到我们预期的答案,简而言之,当你需要向大模型提问的内容很长,又希望得到相对精准且全面的回复,可以参考这几个经验:
将一次性提问的长文本内容,拆分成具有前后逻辑关联的较短的多个文本;
分多次进行提问,在一定的时间限度和语境内,大模型会记录上文的已回答的内容语义;
每次提问时,可基于大模型上一次的回复,进行递进式的提问,或者针对已经回复的内容进行微调,然后重新发起提问;
每次提问的文本内容不要太长,即指令尽量简短清晰,避免给大模型过多的理解成本;
下面看一个具体的示例,为了让大模型为我们提供5个短视频营销文案的标题,我们分多次提问,从而逐渐逼近最符合我们需求的输出内容;
指令一:
作为一个专业的营销策划师,请为我拟定5个关于创意短视频的文案标题
指令二:
注意,我的短视频受众群体主要是年轻的女性,内容尽量与时尚、好玩、有趣这些标签相关,请重新拟定
指令三:
基于你的回答,我现在想进一步缩小范围,提供时尚穿搭方面的,请重新拟定
通过上述大模型的回复,不难发现,通过这种模拟真实对话场景的提问,大模型可以不断的根据上下文的语义环境进行输出内容的调整,从而得到我们预期的结果。
也即上文提到的情境相关性,在一些复杂的场景中,比如你需要大模型帮你分析某个科学或技术问题,那么你必须提供相对完整的语境内容,否则大模型就是瞎猜了,为什么这么说呢,设想你是一个想写一篇针对某个技术观点的文章,但是你并不很懂技术,如何让大模型帮你写出一篇这样的文章呢?答案是,你要向大模型提出你的需求,比如你希望你的文章包括哪些章节,每个章节还包括哪些具体的子标题,每个章节中要重点突出哪些观点等,如下是一个具体的操作示例,是关于借助大模型我我们生成一个文章的提纲。
指令一:
我想写一篇关于移动还联网发展历程的文章,请为我拟定一个大纲
回复内容
指令二:基于回复的内容,进行内容的校正,同时提供一些背景素材,以丰富回复的内容
在你拟定的大纲中,我觉得并没有突出一些电商、短视频等移动app,比如抖音、小红书、拼多多等app在发展历程中带来的影响,请重新拟定
回复内容
可以看到,在第二个指令中,基于第一个指令的回复内容并提供了新的背景信息之后,大模型就及时调整了回复的内容,按照需求将新的需求补充进去了。
本文通过较大的篇幅详细介绍了Prompt 提示词工程的理论,并结合实际操作演示了Prompt的原则如何在真实的业务场景中的使用,简而言之,再多的理论指导不如上手实践,以本文的理论作为支撑,配合大量的练习巩固对Prompt 提示词工程的理解,才能得到更深的体会和收获,从而为日常的生活和工作助力,本文到此结束,感谢观看。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。