什么是提示工程(Prompt Engineering)
提示工程也叫「指令工程」
Prompt 或者我们叫指令
就是你发给大模型的指令,比如「讲个笑话」、「用 Python 编个贪吃蛇游戏」、「给男/女朋友写封情书」等,都算。
这些指令看似简单,但意义非凡,
---"Prompt 是 AGI 时代的「编程语言」
---"Prompt 工程是 AG I 时代的「软件工程」
---"提示工程师是 AGI 时代的「程序员」
---
简单的一波营销文案插入:
1.学会提示工程,就像学用鼠标、键盘一样,是 AGI 时代的基本技能
2.现在提示工程也是「门槛低,落地难」,所以有人戏称 prompt 为「咒语」
3.但专门的「提示工程师」不会长久,因为每个人都要会「提示工程」,AI 的进化也会让提示工程越来越简单
---
使用 Prompt 的两种目的
1.获得具体问题的具体结果,比如「我该学Java 还是 Python?」、「PHP 为什么是最好的语言?」
2.固化一套 Prompt 到程序中,成为系统功能的一部分,比如:「每天生成本公司的简报」、「AI 客服系统」、「基于公司知识库的问答」
常用技巧:
使用 清晰,明确,避免模糊的词语
给openai写首诗,用中文
给openai写一首四句的中文诗,模仿李白的《望庐山瀑布》
用###或者"""将指令和待处理的内容分开¶
例子:
将下面这句话翻译成英文
尽量用华丽的词语
例子:
将下面这句话翻译成英文
"""尽量用华丽的词语""
指定输出的格式
例子:
给openai写一首四句的中文诗,模仿李白的《望庐山瀑布》,输出格式为json
使用 清晰,明确,具体、有针对性的,避免模糊的指令内容:
角色扮演:
反例:
给我一个减肥的计划。
正例:
我想让你扮演一个专业的健身私人教练。 你应该利用你的运动科学知识、营养建议和其他相关因素为你的客户定制专业的计划。给我一个减肥的计划,
告诉用户的角色:
反例:
怎么提高英语成绩?
正例:
我是一名幼儿园的5岁个朋友,还不会写字。怎么提高英语成绩?
少样本提示
反例:
1.生成文本:ChatGPT可]以生成与给定主题相关的文章、新闻、博客、推文等等。您可以提供一些关键词或主题,然后ChatGPT将为您生成相关的文本,
2.语言翻译:ChatGPT可以将一种语言的文本翻译成另一种语言。
3.问答系统:ChatGPT可以回答您提出的问题,无论是事实性的问题、主观性的问题还是开放性的问题。
4.对话系统:ChatGPT可以进行对话,您可以与ChatGPT聊天,让它回答您的问题或就某个话题进行讨论。
5.摘要生成:chatGPT可以从较长的文本中生成摘要,帮助您快速了解文章的主要内容。
6.文本分类:ChatGPT可以将一些给定的文本分类到不同的类别中,例如新闻、体育、科技等等。
7.文本纠错:ChatGPT可以自动纠正文本中的拼写错误和语法错误,提高文本的准确性。
请把上面7段话各自的开头几个词,翻译成英文,并按序号输出
正例:
给一个样本提示
1.生成文本:ChatGPT可以生成与给定主题相关的文章、新闻、博客、推文等等。您可以提供一些关键词或主题,然后ChatGPT将为您生成相关的文本,
2.语言翻译:ChatGPT可以将一种语言的文本翻译成另一种语言。
3.问答系统:ChatGPT可以回答您提出的问题,无论是事实性的问题、主观性的问题还是开放性的问题。
4.对话系统:ChatGPT可以进行对话,您可以与ChatGPT聊天,让它回答您的问题或就某个话题进行讨论。
5.摘要生成:ChatGPT可以从较长的文本中生成摘要,帮助您快速了解文章的主要内容。
6.文本分类:ChatGPT可以将一些给定的文本分类到不同的类别中,例如新闻、体育、科技等等
7.文本纠错:ChatGPT可以自动纠正文本中的拼写错误和语法错误,提高文本的准确性。
请把上面7段话各自的开头几个词,翻译成英文,并按序号输出。例如,第1段话的开头是”生成文本",那么就输出"generate text"
Prompt 的典型构成:
角色:给 AI定义一个最匹配任务的角色,比如:「你是一位软件工程师」「你是一位小学老师」
指示:对任务进行描述。
上下文:给出与任务相关的其它背景信息(尤其在多轮交互中)。
例子:必要时给出举例,
学术中称为 one-shot learning,few-shot learning 或 in-context learning; 实践证明其对输出正确性有帮助。
输入:任务的输入信息;在提示词中明确的标识出输入。
输出:输出的格式描述,以便后继模块自动解析模型的输出结果,比如(JSON、XML)
大模型对 prompt 开头和结尾的内容更敏感。
在代码中设置Prompt
技巧1、使用 清晰,明确,具体、有针对性的,避免模糊的指令内容的示例:
零样本提示:
少样本提示:
另一个少样本提示的例子,同时引起下一个话题---少样本提示词的使用中发现的一些限时
比如在需要多步骤推理的数学运算类问题的解决过程中,直接问数学运算类问题这样的prompt指令,有时候大模型表现不好,可以通过增加
引入的任务类型涉及几个更多的推理步骤。
换句话说,如果我们将问题分解成步骤并向模型演示,
会提升模型正确解决问题的概率
换句话说,成功率
根据上述的例子,我们发现
似乎少样本提示不足以获得这种类型的推理问题的可靠响应。上面的示例提供了任务的基本信息。如果仔细观察,我们会发现引入的任务类型涉及几个更多的推理步骤。换句话说,如果我们将问题分解成步骤并向模型演示,这可能会有所帮助。
Prompt 调优
找到好的 prompt 是个持续迭代的过程,需要不断调优。
高质量 prompt 核心要点:
划重点:具体、丰富、少歧义