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}
      • """
    • 你需要抽取的关键信息包括:
      • """
        1. 姓名
        1. 电话
        1. 毕业院校
        1. 科研经历
        1. 项目经历
        1. 荣誉奖项
      • """

8. 在真实场景下迭代Prompt

优质的提示词应具备良好的通用性,在不同的输入上有一致良好的表现。因此,Prompt的设计是一个迭代的过程,需要大量的实验来获得最佳效果。

9. 测试Prompt的稳定性

当任务的定义足够明确、清晰时,提示词的生成结果应该具备一定程度的稳定性,即多次生成的结果一致率要足够高。

10. 使用思维链

思维链可以促使模型将一个复杂的任务分解成一系列简单的任务,并逐个解决,最后汇总为最终的答案。

示例:

  • Bad:(1362+5145)145(151742+24)=?(1362+5145)*145-(1517*42+24)=?
  • Good:请你帮我计算一下(1362+5145)145(151742+24)=?(1362+5145)*145-(1517*42+24)=?,每一步运算过程都要展示出来,并确保计算的正确性。

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},请帮我写一份优质的提示词。

最新提示词工程权威资讯链接

以下是一些最新的提示词工程权威资讯链接,供您进一步学习和探索:


Tags

  1. prompt
  2. 人工智能
  3. 科普

Backlinks