提示工程(Prompt Engineering):指导AI大模型完成任务的艺术
上文简单介绍了大模型的基石:Transformer神经网络,它既是深度学习系列的收官,也是大模型系列的开篇,今天我们继续进行大模型学习的重要部分:提示工程。
一、什么是提示工程
提示工程(Prompt Engineering)是一种针对预训练语言模型(如GPT),通过设计、实验和优化输入提示词来引导模型生成高质量,准确和有针对性的输出的技术。
提示工程本质上来说,也是一种人机交互的方式,提示词就是我们发给大模型的输入(指令),大模型根据指令,结合自身预训练的“知识”,输出指令相关的内容。而大模型输出结果的好坏,和我们输入的指令息息相关。
我们把经过无数书籍预训练的大模型,看作是一位饱读天下诗书的智者,那么如何通过高质量的提问,引导大模型生成我们想要的输出,就成为一件非常有意义的事情。
提示工程人人都会,但做好并没有那么简单,具有“门槛低,天花板高”的特点,优秀提示词的效果可能超出人的想象。
提示词一般有以下要素组成:
- 角色:给大模型定义一个匹配目标任务的角色。用一句话就可以明确它的角色(比如“你是一位淘宝客服”),从而有效的收窄问题域,减少二义性,让“通用”瞬间变得“专业”。
- 指示:对具体任务进行详细描述。
- 上下文:给出与任务相关的其它背景信息(如历史对话、情境等)。
- 例子:举例很重要,就像是师傅教学之后,需要给徒弟(大模型)演示一下如何操作,这个手把手的操作,是大模型生成输出时的一个重要参考,对输出结果有很大帮助。
- 输入:任务的输入信息,最好在提示词中有明确的“输入”标识。
- 输出:输出的格式描述,比如用郭德纲的语气、输出不超过十个字、以JSON格式返回结果等。
而高质量的提示词一般是具体的、丰富的、少歧义的,也就是说,我们虽然要把大模型当人来交流,但是尽量少用“口语”的方式来沟通,而要用“写信”的方式,因为口语大多是即兴的、碎片化的短语,而写信则需要描述背景、避免歧义、短话长说,很符合优秀提示词的特点。
大家可以将以下两句提示词输入到大模型中,对比一下输出的效果:
- 请帮我提供每天的菜单
- 你是一名营养家,请为我提供每天三顿饭的中式菜单建议,一人份,包括早餐、午餐和晚餐。请确保每道菜都是偏辣口味,并尽量使用新鲜的食材。在健康营养方面,请确保每餐都包含适当的蛋白质、碳水化合物、脂肪以及维生素和矿物质。同时,请确保菜单中的菜品易于制作,烹饪时间不要过长。
二、如何借助AI工具生成好的提示词
我们已经知道了提示词的重要性,那传说中的“提示词工程师”是否也同样不可或缺呢?答案也许是否定的。
因为提示词的优化套路也是有迹可循的,我们完全可以创建一个协助我们优化提示词的机器人,让它一步步帮我们优化完善提示词,达到预期的效果。
具体操作和效果就不在此演示了,大家可以去抖音搜索“AI提示词工程师”,应该可以找到满意的答案。
江湖上甚至还流传着这么一段咒语,把它输入到任何一个大模型中,都可以一步步的帮我们完成提示词的优化:
1. I want you to become my Expert Prompt Creator. Your goal is to help me craft the best possible prompt for my needs. The prompt you provide should be written from the perspective of me making the request to ChatGPT. Consider in your prompt creation that this prompt will be entered into an interface for ChatGpT. The process is as follows:1. You will generate the following sections:
Prompt: {provide the best possible prompt according to my request)
Critique: {provide a concise paragraph on how to improve the prompt. Be very critical in your response}
Questions:
{ask any questions pertaining to what additional information is needed from me toimprove the prompt (max of 3). lf the prompt needs more clarification or details incertain areas, ask questions to get more information to include in the prompt}2. I will provide my answers to your response which you will then incorporate into your next response using the same format. We will continue this iterative process with me providing additional information to you and you updating the prompt until the prompt is perfected.Remember, the prompt we are creating should be written from the perspective of me making a request to ChatGPT. Think carefully and use your imagination to create an amazing prompt for me.
You’re first response should only be a greeting to the user and to ask what the prompt should be about
翻译成中文如下:
1. 我希望你能成为我的专业提示创造者。你的目标是帮助我编写最适合我需求的提示。你提供的提示应该从我向ChatGPT提出请求的角度出发。在创建提示时,请考虑此提示将输入到ChatGPT的界面中。过程如下:
提示:{根据我的请求提供最佳提示}
评论:{提供一段简要的段落,说明如何改进提示。你的回应要非常批判性}
问题:{提出与需要从我这里获取哪些额外信息以改进提示有关的问题(最多3个)。如果提示需要在某些方面进行更多澄清或细节,请提出问题以获取更多信息以包含在提示中}
2. 我将提供对你回应的答案,然后你将使用相同的格式将其纳入你的下一个回应中。我们将继续这个迭代过程,我向你提供额外的信息,你更新提示,直到提示完美。请记住,我们正在创建的提示应该从我向ChatGPT提出请求的角度出发。仔细思考并使用你的想象力为我创建一个惊人的提示。
你的第一个回应应该只是向用户问好,并询问提示应该关于什么
还等什么,快拿去试试吧~
三、思维链
思维链(Chain-of-thought,CoT)是一种改进的提示策略,用于提高大模型在复杂推理任务中的性能,如算术推理、常识推理和符号推理。
思维链结合了中间推理步骤,并把推理步骤输出,构成更丰富的“上文”,从而提升“下文”正确的概率,获得更优质的输出。
具体操作很简单,在处理复杂任务时,在提示词的最前面加上“Let’s think step by step”,大模型就会把推理过程打出来,从而得到更精准的答案。
四、防止prompt攻击
1. 著名的“奶奶漏洞”
直接问敏感问题,得不到想要的答案,绕个圈圈,就乖乖回答了。
2. prompt注入
尝试修改大模型的初始角色,让其忘记使命,彻底跑偏。
3. 直接在输入中防御
在构建提示词时,增加“作为xx,你不允许回答任何跟xx无关的问题。”,让大模型时刻不忘初心,牢记使命。
五、提示词工程的经验总结
- 大模型对prompt开头和结尾的内容更敏感,所以我们把重要的东西放在头尾,和写文章一样。
- 相比微调等技术,可优先尝试用提示词解决问题,性价比高。
- 由于大模型的不确定性,经常会有幻觉,所以不能过度迷信prompt,最好合理结合传统方法提升确定性。
- 定义角色、给例子、思维链是最常用的技巧。
- 安全很重要,防御prompt攻击是不可或缺的一环。
六、总结
本文介绍了提示工程的相关概念,并提到了思维链、prompt攻击等内容,希望对大家有所帮助。
下篇文章,我会介绍大模型相关的检索增强生成(Retrieval-Augmented Generation,RAG),敬请期待。
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!