《AI大模型开发笔记》——Prompt提示词最佳实践

时间:2024-11-24 09:41:04

为什么需要提示词优化

什么是 Prompt enginnering?
提示词:解释一下什么是大语言模型的Prompt enginnering


图1. 什么是Prompt Enginnering?

通过上面ChatGPT的说明,我们可以看到,prompt工程化就是如何写prompt提示词的一些技巧。
那么,为什么需要进行提示词优化呢?

  • 第一点,对个人使用者: 提高使用大语言模型的效率,让大模型更好的为我们服务。
  • 第二点,对于开发者:改善大语言模型输出的稳定性。
    (详细解说,请参考视频: https://youtu.be/cVPFbRuXoY0 )

最近OpenAI官方发布了一个如何来写Prompt的best practices(最佳实践)。这里,给大家分享看看OpenAI都介绍了哪些prompt的方法和技巧。

共分为六个策略:

  • 给出清晰的指示
  • 提供参考文字
  • 将复杂任务拆分为更简单的子任务
  • 给GPT时间思考
  • 使用外部工具
  • 系统性的进行测试

策略一:给出清晰的指示

GPT 无法读取您的想法。如果你认为输出内容太长,可以要求简短回复。如果输出内容太简单,可以要求专家级写作。如果您不喜欢输出的格式,可以示范您想看到的格式。GPT在猜测您想要的内容方面越少,您得到想要的内容的可能性就越大。

技巧1:在查询中包含详细信息以获得更相关的答案

【观看视频解说】

为了获得高度相关的回应,请确保请求提供任何重要的细节或背景信息。否则,您就是让模型来猜测您的意思。

更好
我该如何在Excel中加数字? 视频解说 我该如何在Excel中对一行美元金额求和?我想要自动地对一个工作表的所有行做这个操作,并且让所有的总数显示在右边的一个名为“总计”的列中。
谁是总统? 2021年墨西哥的总统是谁,选举是多久举行一次?
编写代码来计算斐波那契数列。视频解说 编写一个TypeScript函数来高效地计算斐波那契数列。请充分注释代码,解释每一部分的作用以及为什么以这种方式编写。
总结会议记录。 用一段文字总结会议记录。然后用markdown列出发言人及其各自的要点。最后,如果有的话,列出发言人建议的下一步行动或待办事项。

技巧2:要求模型扮演一个角色

系统消息(system message)可以用来指定模型在回复中所扮演的角色。

  • 例子:
 系统:当我请求帮助撰写某些内容时,您将回复一份文件,在每段中至少包含一个笑话或幽默评论。
 用户:给我的钢螺栓供应商写一张感谢便条,感谢他们及时且在短时间内完成交货。这使我们能够完成一份重要的订单。

技巧3:使用分隔符清晰地标示输入的不同部分

像三重引号、XML标签、章节标题等分隔符可以帮助划分文本的不同部分以便进行不同的处理。

  • 例1:
  用户: 用俳句来总结用三重引号界定的文本。"""在此插入文本"""
  • 例2:
  系统: 您将获得两篇关于同一主题的文章(用 XML 标签分隔)。先总结一下每篇文章的论点。然后指出哪一个提出了更好的论点并解释原因。
  用户: <article>在这里插入第一篇文章</article> <article>在这里插入第二篇文章</article>
  • 例3:
  系统: 您将获得论文摘要和建议的标题。论文标题应该让读者清楚地了解论文的主题,但也应该引人注目。如果标题不符合这些标准,请提出 5 个替代方案。
  用户: 摘要:在此插入摘要 标题:在此插入标题

对于这种简单的任务,使用分隔符可能不会对输出质量产生影响。然而,任务越复杂,消除任务细节的歧义就越重要。不要让 GPTs 费力去理解你究竟要求它们做什么。

技巧4:指定完成任务所需的步骤

一些任务最好通过一系列步骤来明确指定。明确地写出这些步骤可以使模型更容易遵循它们。

系统: 按照以下分步指示来回应用户输入。
      步骤1 - 用户会提供三重引号内的文本。用“Summary: ”作为前缀,将这段文本总结为一句话。
      步骤2 - 将步骤1中的总结翻译成西班牙语,并以“Translation: ”作为前缀。
用户: """insert text here"""

技巧5:提供示例

为所有示例提供适用的通用指示通常比通过示例演示任务的所有排列更高效,但在某些情况下,提供示例可能更容易。例如,如果您希望模型模仿一种回应用户查询的特定风格,而这种风格很难明确描述。这被称为“少样本(few-shot)”提示。

系统
以一致的风格回答。
用户
教我关于耐心。
助手
雕刻最深山谷的河流源于一个朴素的泉眼;最宏伟的交响乐源于单个音符;最复杂的挂毯始于一根孤立的线程。
用户
教我有关海洋的知识。

技巧6:指定输出的期望长度

你可以要求模型生成具有给定目标长度的输出。目标输出长度可以用单词、句子、段落、项目符号等的数量来指定。然而,请注意,指示模型生成特定数量的单词的精度不高。模型更可靠地生成具有特定数量的段落或项目符号的输出。

  用户: 用大约 50 个单词总结由三重引号中的文本。"""在此插入文本"""

  用户: 将用三重引号界定的文本总结为两段。"""在此插入文本"""

  用户: 将由三引号中的文本总结为 3 个要点。"""在此插入文本"""

参考文献

  • [1] https://platform.openai.com/docs/guides/gpt-best-practices