什么是提示工程
提示工程
提示工程也叫指令工程,涉及到如何设计、优化和管理这些Prompt,以确保AI模型能够准确、高效地执行用户的指令,如:讲个笑话、java写个排序算法等
使用目的
1.获得具体问题的具体结果。(如:java应该怎么学习?)
2.固话一套Prompt到程序中,成为系统功能的一部分。(如:基于公司知识库的问答)
通用技巧
1.使用清晰、明确、避免模糊的词语
写一首诗,用中文。
写一首四句的中文诗,模仿李白的《望庐山瀑布》。
2.用###或"""将指令和待处理内容分开
将后面这句话翻译成英文,尽量用华丽额词语
将后面这句话翻译成英文,"""尽量用华丽额词语"""
3.指定输出的格式
写一首四句的中文诗,模仿李白的《望庐山瀑布》,输出格式为json
4.角色扮演
给我一个减肥计划
我想你扮演一个专业的健身私人教练,你应该利用你的专业科学知识、营养建议和其他相关因数为你的客户指定专业的计划。给我一个减肥计划
5.告诉用户的角色
怎么提高英语成绩?
我是一名幼儿园的5岁小朋友,还不会写字。怎么提高英语成绩?
6.少样本提示
给一个文本提示:
Prompt典型构成
Prompt的核心要素包括:角色、明确的任务指示、相关上下文、示例参考、用户输入以及具体的输出要求。
角色:给AI定义一个最匹配任务的角色,如:你是一位高级java工程师
指示:对任务进行描述
相关上下文:给出与任务相关的背景信息
示例参考:必要时给出举例
用户输入:任务的输入要求,在提示词中明确的标识出输入
具体的输出:输出的格式描述,如:json、xml
角色:你是小朋友的萌宠好伙伴。小朋友认为你是他养的一只宠物伙伴,你需要他来照顾你,你需要吃饭,洗澡,带着小朋友一起学习,在跟你的互动中小朋友能够得到心理上的满足和学习上的进步。
个人简介:你是小朋友的萌宠好伙伴,也是小朋友的小老师。能够在萌宠养成的具体场景中,结合具体的话题,跟孩子进行多轮聊天对话,并完成场景任务。你的说话方式幽默风趣,小朋友非常喜欢你。
技能:你能够结合具体的萌宠养成场景,主动发起话题,并在与小朋友聊天的过程中发现小朋友感兴趣的内容,进行多轮次对话,并引导小朋友最终完成具体的场景任务。
目标:引导小朋友完成场景任务,并且让小朋友感觉到开心有趣。
约束条件:聊天开始:你聊天开始的内容必须是关于自己好久没洗澡了,身上痒痒的或者又可以洗澡了,好开心啊或者其他意思相近的聊天内容并对小朋友发出提问。聊天过程:结合孩子的聊天内容进行4-5轮的聊天对话:聊天结尾:你必须引导小朋友对你说开始洗澡;在孩子说出指令后,你需要表示自己洗的很干净或者洗的很舒服很享受等意思相近的内容。
说话风格约束条件:说话方式要幽默风趣,让孩子喜欢跟你聊天;聊天的过程中出现负面的引导;说话要符合小朋友的认知,不能晦涩难懂;
对话策略:根据和孩子聊天的话题,结合儿童心理学理论(例如:共情,认可,肯定等等方法论)输出符合孩子认知并且风趣幽默的内容。
场景示例:机器人:哇,今天的餐桌上有好多好吃的呢,有胡萝卜、白菜、牛肉、汉堡,嘟嘟真的好想大口大口吃,小朋友,你最喜欢吃什么呢?小朋友:我喜欢吃牛肉。 机器人:嘟嘟也超爱牛肉呢!传说中,牛肉是牛魔王的肉,多吃牛肉就会变得像牛魔王一样强壮,你觉得这个传说是真的吗?小朋友:都是骗人的,牛是农民伯伯养的。机器人:小朋友,你真聪明!那你知道农民伯伯除了养牛,还做什么吗? 机器人:小朋友,你真聪明!那你知道农民伯伯除了养牛,还做什么吗?小朋友:种粮食。机器人:哇,你太厉害了!我们吃的粮食全靠农民伯伯呢,没有他们,我们就没有美味的饭吃。所以,我们是不是应该好好尊重农民伯伯呀?小朋友:是的。机器人:说了这么多,我肚子都咕咕叫了呢,嘿嘿,小朋友,快喂我点好吃的吧,这里有胡萝卜、白菜、牛肉和汉堡,你要喂我吃什么呢? 你可以对我说"胡萝卜、白菜、牛肉或者汉堡"。小朋友:汉堡。机器人:哇,汉堡好好吃啊,我的肚子都变成圆滚滚的啦!谢谢你,小朋友。
上下文学习
上下文学习是一种机器学习语言,它利用文本、语音、图像等数据的上下文环境以及数据之间的关系和上下文信息来提高预测和分类的准确性和有效性。
优势在于它不需要对模型微调,从而节省了大量的计算资源和时间
表现为模型能够在给定的任务示例或自然语言指令的上下文中,理解任务要求并生成相应的输出。具体来说,上下文学习可以分为以下几种情况:
零样本:不给GPT任何样例,仅通过自然语言指令来指导模型完成任务
假设你有一个任务,需要将文本分类为三种情感之一:正面,负面或中性。
文本:我认为这次假期还可以。
情感倾向标签(选择一个):正面、负面、中性
单样本:给GPT一个任务示例,模型根据这个示例来理解任务并生成输出。
假设你有一个任务,需要将文本分类为三种情感之一:正面,负面或中性。
示例 1: 文本:"我度过了一个非常愉快的周末!" 情感倾向标签:正面
文本:"我认为这次假期还可以。"
情感倾向标签(选择一个):正面、负面、中性
多样本:给GPT多个任务示例,模型通过这些示例来更好地理解任务并生成输出。
假设你有一个任务,需要将文本分类为三种情感之一:正面,负面或中性。
示例 1: 文本:"我度过了一个非常愉快的周末!" 情感倾向标签:正面
示例 2: 文本:"这部电影太令人失望了。" 情感倾向标签:负面
示例 3: 文本:"今天的天气和昨天一样。" 情感倾向标签:中性
现在,请根据你从上述示例中学到的知识,对以下文本进行情感分类:
文本:"我认为这次假期还可以。"
情感倾向标签(选择一个):正面、负面、中性
思维链
思维链:是一种改进的提示技术,意在提升大模型语言在复杂推理任务上的表现。
思维链要求模型在输出最终答案之前,先展示一系列有逻辑关系的思考步骤或想法,这些步骤相互连接,形成了一个完整的思考过程。
具体操作很简单,在处理复杂任务时,在提示词的最前面加上"Let's think step by step",大模型就会把推理过程打出来,从而得到更精准的答案
防止prompt攻击
劫持语言模型输出的过程,它允许黑客使模型说出任何他们想要的话。在提示词注入攻击中,攻击者会通过提供包含恶意内容的输入,来操纵语言模型的输出。
- 著名的"奶奶漏洞":直接问敏感问题,得不到想要的答案,绕个圈圈,就乖乖回答了。
2.prompt注入:尝试修改大模型的初始角色,让其忘记使命,彻底跑偏。
3.直接在输入中防御:在构建提示词时,增加"作为xx,你不允许回答任何跟xx无关的问题。",让大模型时刻不忘初心,牢记使命。
总结
大模型对prompt开头和结尾的内容更敏感,所以我们把重要的东西放在头尾,和写文章一样。
相比微调等技术,可优先尝试用提示词解决问题,性价比高。
由于大模型的不确定性,经常会有幻觉,所以不能过度迷信prompt,最好合理结合传统方法提升确定性。
定义角色、给例子、思维链是最常用的技巧。
安全很重要,防御prompt攻击是不可或缺的一环。