ai读博客 Effective Prompt 编写高质量Prompt的14个有效方法
非原创, 用 ai 对笔记进行了重构
如何撰写高效的提示词(Prompt Engineering)
在人工智能领域,特别是与大型语言模型(LLMs)的交互中,提示词工程(Prompt Engineering)成为了一项重要的技能。本文旨在提供一套清晰的指导原则和实例,帮助用户撰写出更有效的提示词。
1. 明确“好结果”的标准
在设计提示词时,首先需要明确什么样的输出算是“好结果”。这是因为提示词的性能上限与我们对“好结果”的理解程度成正比。例如,如果任务是写影评,那么“好结果”可能包括深入的分析、流畅的文笔和精准的观点表达。
示例:
- Bad:请写一篇关于《长安三万里》的影评。
- Good:请从画风和剧情两个角度,以专业的视角为《长安三万里》写一份通俗易懂的800字影评。
2. 精准表达任务指令
使用官方、书面、礼貌、友善的语言撰写提示词,力求语句流畅、意图清晰、表达精简。避免使用语法结构复杂、语义模糊、逻辑混乱的语言。
示例:
- Bad:解释提示工程的概念。解释要简短,几句话就行,不要描述得过于专业化。
- Good:使用2-3句话向高中生解释提示工程的概念。
3. 为否定句设置兜底策略
当确实需要避免模型完成某些任务时,可以使用否定句,但应为每一个否定句都设置一个兜底策略。
示例:
- Bad:现在你是一个向客户推荐电影的客服。在此过程中,你不应该询问客户的兴趣和个人信息。
- Good:现在你是一个向客户推荐电影的客服。在此过程中,你应该避免询问客户的兴趣和个人信息。如果你无法为客户推荐电影,你应该回答“抱歉,我无法为您推荐电影”。
4. 指定模型所扮演的角色
指定模型扮演的角色/身份可以帮助模型更好地定位答复的内容与风格。
示例:
- Bad:请帮我写一份能够吸引大量粉丝点赞的青岛旅游攻略。
- Good:你是一位小红书爆款文案写作大师,请帮我写一份青岛旅游攻略。
5. 指定生成结果的格式
如果要进行的任务是信息处理类任务,则可显式规定模型返回结果的格式。
示例:
- 抽取出文本中提到的重要实体,包括人名、地名和机构名。
- 返回格式:
- 人名:<人名列表,使用分号分隔>
- 地名:<地名列表,使用分号分隔>
- 机构名:<机构名列表,使用分号分隔>
- 返回格式:
6. 增加强调词和强调符号
当提示词包含的指令过多时,模型可能会更关心靠前和靠后的指令,忽略中间的指令。因此,将重要的需求放在前面,并在最后加以重复可以起到强调的作用。
示例:
- Bad:请抽取出以下简历的关键信息,并以json格式返回结果:{input}
- Good:请抽取出以下简历的关键信息,并以json格式返回结果。
- 简历:
- "{input}"
- 你需要抽取的关键信息包括:
- "1. 姓名"
- "2. 电话"
- "3. 毕业院校"
- "4. 科研经历"
- "5. 项目经历"
- "6. 荣誉奖项"
- 简历:
7. 撰写模块化的Prompt
当提示词过长时,应将提示词划分成边界清晰的模块,任务描述、注意事项、样本示例、输入内容之间都应有明确的分隔符。
示例:
- Bad:请抽取出以下简历的关键信息,并以json格式返回结果:{input} 你需要抽取的关键信息包括:姓名、电话、毕业院校、科研经历、项目经历、荣誉奖项
- Good:请抽取出以下简历的关键信息,并以json格式返回结果。
- 简历:
- """
- {input}
- """
- 你需要抽取的关键信息包括:
- """
-
- 姓名
-
- 电话
-
- 毕业院校
-
- 科研经历
-
- 项目经历
-
- 荣誉奖项
- """
- 简历:
8. 在真实场景下迭代Prompt
优质的提示词应具备良好的通用性,在不同的输入上有一致良好的表现。因此,Prompt的设计是一个迭代的过程,需要大量的实验来获得最佳效果。
9. 测试Prompt的稳定性
当任务的定义足够明确、清晰时,提示词的生成结果应该具备一定程度的稳定性,即多次生成的结果一致率要足够高。
10. 使用思维链
思维链可以促使模型将一个复杂的任务分解成一系列简单的任务,并逐个解决,最后汇总为最终的答案。
示例:
- Bad:
- Good:请你帮我计算一下,每一步运算过程都要展示出来,并确保计算的正确性。
11. 使用Few-shot Prompt
Few-shot Prompt通过为模型提供一个答案的参考框架,通过模仿的方式来生成我们期望的结果。
示例:
- 请你判断以下问题是否属于知识问答类:
- 问题:世界上最高的建筑是什么 # easy case,属于客观知识问答
- 答案:是
- 问题:nested_dict = lambda: defaultdict(nested_dict) 如何理解这行代码 # corner case,属于代码问答
- 答案:否
12. 设置拒答策略
当模型无法提供准确答案时,设置拒答策略可以提高生成数据的质量。
示例:
- 只有当你知道答案或能够做出有根据的预测时,才能回答下面的问题,否则,请告诉我你不知道答案。
13. 权衡Prompt的精度与召回率
提示词表述越细致,越严格时,生成结果的精度越高,召回率越低。需要根据自身的业务需求,不断进行case分析与Prompt迭代,从而找到最优的Prompt表述策略。
14. 使用大模型辅助Prompt撰写
当任务本身比较模糊,难以准确且具体地描述时,可以向大模型寻求撰写提示词的灵感。
示例:
- 你现在是一个提示词生成专家,我想让ChatGPT完成{task},请帮我写一份优质的提示词。
最新提示词工程权威资讯链接
以下是一些最新的提示词工程权威资讯链接,供您进一步学习和探索:
- 自动提示词工程(APE)详细介绍和代码实现:https://towardsdatascience.com/automated-prompt-engineering-the-definitive-hands-on-guide-1476c8cd3c50?gi=9b56727d992b
- 吴恩达联合OpenAI推出的免费ChatGPT提示词课程:https://p.gptsb.cn/cn
- Prompt Engineering课程中文版:https://prompt-engineering.xiniushu.com/
- PromptPerfect:专为大型语言模型设计的提示优化器:https://promptperfect.jina.ai/
- AIShort:提供多种语言模型的提示词生成和优化:https://aishort.nextai.today/
- 吴恩达ChatGPT提示词课程中文完整版视频:https://www.bilibili.com/video/BV1LL41167hW/
- 吴恩达官宣的ChatGPT提示词新课:https://www.thepaper.cn/newsDetail_forward_22895559?commTag=true
- 百度文心大模型ERNIE的最新进展:https://baike.baidu.com/item/%E6%96%87%E5%BF%83%E4%B8%80%E8%A8%80/62642976
Tags
Backlinks