🍁 展望:若本篇讲解内容帮助到您,请帮忙点个赞吧,再点点您的小手关注下公众号,您的支持是我继续写作的最大动力.
💾 进入公众号,回复 AI, 可免费领取 价值 ¥999 资料 (含 ChatGPT 指令教程、MidJourney 指令教程、PS AI 版本的教材)!!!
🎁 已上线超级艺术二维码小程序,送您一张艺术二维码,欢迎体验和反馈!➕ 关注我, 带您了解更多 AI 资讯和 AI 小技巧.
熊猫AI艺术二维码,,,
艺术二维码
小程序
介绍
许多小伙伴向我反馈,虽然知道很多提示词模版,但关于提示词的基本最佳实践仍然不够清晰。令人惊讶的是,即使有一些小伙伴 使用 GPT 近半年,在与我交流后,我发现他们实际上并没有深入研究这些最佳实践,导致他们在提出问题和优化提示词的时候还是摸不着头脑。
这篇文章是写给对于提示词最佳实践了解一般的新手小伙伴们,大佬们可以忽略啦。
其次,我会针对 不同的策略实际测试一些案例,帮助大家更快地理解这些最佳实践。大家不用担心自己无法理解官方的术语,或者长篇大论的内容,针对比较 难以理解的最佳实践,我会进行 解读和案例的说明。并且,我在每个最佳实践下,我都备注了 适用人群,大家可以看看自己是否适合,这样有助于节省大家的阅读时间。
那话不多说,我们开始吧。
角色
在每项最佳实践的案例中,会涉及到不同的三种角色 USER、ASSISTANT、SYSTEM,这边我先统一介绍下。我们来问下 ChatGPT:
**SYSTEM **这个角色在 ChatGPT 官方页面的对话中,基本上是不会出现的,因为 ChatGPT 主要是为了与用户进行直接的交互。但是如果我们 **利用 ChatGPT 的 API 开发 **来自己的应用,那么 SYSTEM 角色是可以在一些场景中发挥作用的。
如下是一个在 音乐小助手 应用程序的对话场景,我们可以看到,SYSTEM 角色充当了后台角色的作用:
SYSTEM: 提示:您可以问我任何与音乐相关的问题。 USER: 什么是贝多芬的第五交响乐? ASSISTANT: 贝多芬的第五交响乐是......(详细描述)。
此外,如果有小伙伴不了解编程方式,但是想要在 ChatGPT 上尝试 SYSTEM 角色,则可以直接使用即可。
这里"当我请求帮助写东西时,你将在每个段落中至少加入一个笑话或俏皮话。" 在案例中就是 SYSTEM 角色,我们在聊天窗口用 USER 的角色直接发送即可。
当我们对角色具备清晰的了解后,看下面官方提供的案例就不会迷惑啦。
最佳实践 1 - 编写清晰的指令
GPT 无法读取您的思想。如果它们的输出过长,请要求简洁回复。如果它们的输出过于简单,请要求专业水平的写作。如果您不喜欢某种格式,请展示您想要看到的格式。GPT 越少猜测您想要的内容,您获得的可能性就越大。
策略:
- 在查询中包含详细信息,以获得更相关的答案。
- 要求模型扮演某个角色。
- 使用分隔符清晰地表示输入的不同部分。
- 指定完成任务所需的步骤。
- 提供示例。
- 指定输出的期望长度。
- 提供参考文本。
策略 1:在查询中包含细节以获得更相关的回答
适用人群:新手
难度:🌟
为了获得高度相关的回复,请确保请求提供任何重要的细节或上下文。否则,这会让模型进行猜测您的意思,结果也会不尽人意。
更差的指令 | 更好的指令 |
如何在 Excel 中添加数字? | 如何在 Excel 中累加一行美元金额?我想要自动为整个工作表的行求和,所有总数都显示在右侧的名为"Total"的列中。 |
谁是总统? | 2021 年墨西哥的总统是谁?选举多久举行一次? |
编写计算斐波那契数列的代码。 | 编写一个高效计算斐波那契数列的 TypeScript 函数。详细注释代码,解释每个部分的作用以及为什么这样编写。 |
总结会议记录。 | 用一段话总结会议记录。然后,使用 Markdown 列表列出发言者及其主要观点。最后,列出发言者建议的下一步行动或待办事项(如果有)。 |
解读
这个策略的价值在于,通过提供更多的详细信息,用户可以获得更准确、更具体的答案。这样可以减少模型的猜测和误解,从而提高交互的效率和满意度。GPT 模型就像是您的男朋友,但它有时候是真的猜不出来呀(手动 狗头)。
策略 2:要求模型扮演角色
适用人群:新手
难度:🌟
系统消息可以用于指定模型在回复中扮演的角色。
USER 写一封感谢信给我的软件供应商,感谢他们准时并在短时间内交货。这使我们能够交付一份重要的订单。 SYSTEM 当我请求帮助写东西时,你将在每个段落中至少加入一个笑话或俏皮话。
解读
当我们指定一个角色,这样,模型的回答将会根据所采纳的角色特性来进行,使得回答更具特色和针对性。那么输出的质量也会随之提升。
策略 3:使用分隔符清晰标示输入的不同部分
适用人群:新手
难度:🌟
像三重引号、XML 标记、节标题等分隔符可以帮助标示需要以不同方式处理的文本部分。
USER 使用三重引号中的文本撰写一首诗。 """在这里插入文本"""
SYSTEM 你将获得一对关于同一主题的文章(用XML标记分隔)。首先总结每篇文章的论点。然后指出哪篇文章提出了更好的论点,并解释为什么。 USER <article>在这里插入第一篇文章</article> <article>在这里插入第二篇文章</article>
SYSTEM 你将获得一份论文摘要和一个建议的标题。论文标题应该给读者一个很好的论文主题概念,同时也要引人注目。如果标题不符合这些标准,请提出5个备选方案。 USER 摘要:在这里插入摘要 标题:在这里插入标题
对于像这样的简单任务,使用分隔符可能不会对输出质量产生影响。然而,任务越复杂,将任务细节澄清变得越重要。不要让 GPTs 努力理解您究竟在要求什么。
解读
想象一下,您正在组装一款复杂的玩具,但所有的零件都混在一起,没有任何标签或说明。这会让组装过程变得非常困难,对吧?
同样,当模型处理一个复杂的输入时,如果没有清晰的分隔符来区分不同的部分,模型可能会混淆或误解某些内容。使用分隔符就像给玩具零件加上标签和说明,使组装过程变得更加流畅和准确。
策略 4:指定完成任务所需的步骤
适用人群:新手
难度:🌟
某些任务最好指定为一系列步骤。明确写出这些步骤可以让模型更容易跟随。
SYSTEM 使用以下逐步说明来回应用户输入。 步骤1 - 用户将用三重引号提供给您文本。用前缀"Summary: "对这段文本进行一句总结。 步骤2 - 将步骤1中的总结翻译成西班牙语,并使用前缀"Translation: "。
解读
当我们提供固定的步骤,要求模型提供输出,这样模型可以参考步骤更好地输出内容。如下为测试案例:
策略 5:提供示例
适用人群:新手
难度:🌟
通常情况下,提供适用于所有示例的一般说明比通过示例演示任务的所有变体更高效,但在某些情况下,提供示例可能更容易。例如,如果您打算让模型复制一种难以明确描述的用户查询响应风格。这被称为 **"few-shot" **提示。
SYSTEM 用一致的风格回答。 USER 教我什么是耐心。 ASSISTANT 刻出最深峡谷的河流起源于一处平凡的泉眼;最壮丽的交响乐源于一颗单独的音符;最复杂的挂毯始于一根孤立的线缕。 USER 教我关于海洋。
策略 6:指定所需的输出长度
适用人群:新手
难度:🌟
您可以要求模型生成指定长度的输出。目标输出长度可以根据词数、句子数、段落数、项目符号数等来指定。但请注意,指示模型生成特定数量的单词并不具有高精确度。模型更可靠地生成具有特定段落或项目符号数量的输出。
USER 用大约50个词总结由三重引号分隔的文本。 """在这里插入文本""" USER 用2个段落总结由三重引号分隔的文本。 """在这里插入文本""" USER 用3个项目符号总结由三重引号分隔的文本。 """在这里插入文本"""
解读
这里就不过多解读了,相信大家都能理解不同时间内(字段长度相当于一个人说话的时间),一个人思考的时间和回答的内容长度也是不一样。
额外需要注意的是,有些小伙伴反馈,明明指定了让 GPT 输出 70 字,但是很多时候并不是 70 个字。我们来看下模型的回复。
这里的思路和提问方式,源自小七姐的在线答疑,在此感谢小七姐。
我反复提问了多次后,发现始终 GPT 不能给出正确的字数。最终请它分析后,理解了原因是什么。
那解决方案就是,我们可以指定相对宽泛一些的字数范围,如 70 ~ 90 字。
最佳实践 2 - 提供参考文本
GPT 可以自信地编造假答案,特别是当被询问奇特的话题、引用和网址时。就像一张笔记可以帮助学生在考试中取得更好的成绩一样,为 GPT 提供参考文本可以帮助它以较少的虚构进行回答。
策略:
- 指示模型使用参考文本进行回答。
- 指示模型使用参考文本中的引用进行回答。
策略 1:指示模型使用参考文本回答问题
适用人群:新手
难度:🌟
如果我们能够为模型提供与当前查询相关的可信信息,那么我们可以指示模型使用提供的信息来组成其答案。
SYSTEM 使用由三重引号分隔的所提供的文章来回答问题。如果答案在文章中找不到,写下"I could not find an answer." USER <插入文章,每篇文章由三重引号分隔> 问题:<插入问题>
鉴于 GPT 有限的上下文窗口,为了应用此策略,我们需要某种方式动态查找与被提问的问题相关的信息。可以使用提供指定内容来实现高效的知识检索。
解读
我觉得最大的好处是 减少错误:因为模型可能会 幻想 从而发明答案,尤其是当被问及一些偏门的话题或需要引用和 URL 时。通过提供参考文本,我们可以减少模型发明答案的可能性。
如下为测试数据:
策略 2:指示模型使用参考文本的引文进行回答
适用人群:新手
难度:🌟
如果输入已经被相关知识补充,直接要求模型通过引用所提供文档的段落来添加引文到其回答中就很简单了。请注意,可以通过在所提供的文档中进行字符串匹配来编程验证输出中的引文。
SYSTEM 你将得到一个由三重引号分隔的文档和一个问题。你的任务是只使用提供的文档来回答问题,并引用用来回答问题的文档段落。如果文档不包含回答此问题所需的信息,那么只需写下:“信息不足”。如果提供了问题的答案,必须用引文进行注释。使用以下格式引用相关段落 ({"citation": …})。 USER """<插入文档>""" 问题:<插入问题>
测试数据:
PS: 其余4个案例请见公众号剩余两篇。
关注公众号:熊猫Jay字节之旅,了解更多 AI 技巧 ~