AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


提示词工程实战:简单易懂的入门指南
发布日期:2024-09-01 18:06:39 浏览次数: 1934 来源:CC的个人笔记



提示词工程(Prompt Engineering)是近年来随着人工智能(AI)蓬勃发展,特别是大语言模型(如GPT-4)惊艳登场而崭露头角的一个新兴领域。它指的是设计和优化提示词,以引导人工智能生成特定类型的输出或行为。提示工程是一种新的计算机编程方式,用提示词让大模型被编程化的手段,通过对提示词进行编排和格式化,最大限度地提高目标任务的性能。


OpenAI 提示词工程指南

首先要介绍的是OpenAI 提示词工程指南,当然还是需要科学上网才能访问。


地址:
https://platform.openai.com/docs/guides/prompt-engineering

下面是我根据官网提示词指南总结的思维导图,下面根据指南要点展开讲讲。

一、写出清晰的指令

  1. 查询中包含详细信息以获得更相关的答案

坏例子:谁是总统?

好例子:2021年墨西哥的总统是谁?选举的频率是多长时间一次?

2.让模型充当某个角色

比如你是一个心理学专家、城市规划师、前端开发工程师之类的。

3.使用分隔符清楚地指示输入的不同部分

如""" """  、  <>  </> 、‘ ’、``` ```

对于简单的任务,使用分隔符可能对输出质量没有太大影响。然而,任务越复杂,澄清任务细节就越重要。不要让模型费力去理解您的具体要求。

4.明确完成任务所需的步骤,即大模型按照步骤一步一步思考(思维链)

5.提供例子,即少量学习的概念(few-shot

下面这张截图是我们在做指标查询时,为了让大模型可以区分近XX年写的提示词,也就是上面提到的“思维链+少量学习的概念。如果例子太少,模型可能会过度依赖这些特定示例,影响其泛化能力。一般来说,例子应该不小于 5,甚至可以达到几十个。

6.明确输出的期望长度

我们在让模型生成文本时,对模型的输出做一些限制,比如:根据我发给你的工作内容,生成一份周报,字数大约在150字。

二、提供参考文本

1.让大模型使用参考文本来回答

2.让大模型使用参考文本中的引用来回答

官网原文Given that all models have limited context windows, we need some way to dynamically lookup information that is relevant to the question being asked. Embeddings can be used to implement efficient knowledge retrieval. See the tactic "Use embeddings-based search to implement efficient knowledge retrieval" for more details on how to implement this.

If the input has been supplemented with relevant knowledge, it's straightforward to request that the model add citations to its answers by referencing passages from provided documents. Note that citations in the output can then be verified programmatically by string matching within the provided documents.

这两段告诉我们使用检索增强生成(RAG)技术来提升体验,所谓的"RAG"(Retrieval-Augmented Generation),即利用更多的信息库和实时信息来弥补模型的不足。这不仅可以补充大型模型可能缺乏的最新语料或新闻,还可以解决事实性问题,某种程度上解决大模型可能产生的幻觉问题等。像现在通义千问、kimi等大模型的联网搜索功能其实就是外挂了一个知识库。


三、将复杂的任务分解成更简单的子任务

  1. 使用意图分类来识别与用户查询中最相关的指令


OpenAI官网举了一个客服应用的例子,比如用户常问客服的问题有账单方面、技术支持、账户管理、一般问题咨询。这四类下面又可以细分,当用户来咨询问题的时候,首先由大模型对问题进行分类,也就是先做意图识别。如用户问如何做故障排除时,大模型将此问题归为技术支持,相应的回答技术支持的步骤和内容,这样得到的回答更精准。

在实际落地应用过程中,我们对用户问题做了分类,如指标类问题、知识类问题、地图操作类问题、其他类问题,首先由大模型对问题进行意图识别之后再分别去请求不同的接口进行处理。

2.对于需要非常长对话的对话应用程序,可以对先前的对话进行总结或过滤

由于模型具有固定的上下文长度,因此在上下文窗口中包含整个对话的用户和助手之间的对话无法无限期地继续。

如当我们与大模型进行第四轮对话时,这个时候可能快超出上下文长度了,然后又需要借助前三轮对话的信息才能更好的回答第四个问题,这个时候可以借助大模型对前三轮对话进行总结,总结的信息和第四轮要问的问题一起提交给大模型。

下图的问题建议功能其实也是对前一轮的对话进行总结,从而推荐相关的几个问题给用户进一步提问。

3.逐段对长文档进行总结,并递归构建完整摘要

OpenAI举了一个总结书本的例子。为了总结一本书这样非常长的文档,我们可以使用一系列查询来总结文档的每个部分。部分摘要可以连接起来再次进行总结,生成摘要的摘要。这个过程可以递归进行,直到整个文档被总结完毕。如果需要使用关于前面部分的信息来理解后面部分的内容,那么一个有用的技巧是在总结某一部分内容时,包含该部分之前文本的持续摘要。

如通过大模型总结和人工整理的方式,按照一个人读书的思维链,对每本书进行结构化整理,增加结构增加章节结构信息,以及章节总结内容,作为索引时的附带信息,以此来增强知识的连贯性。

四、给模型时间“思考”

1.让模型在急于得出结论之前找出自己的解决方案。

这里可以理解为让大模型在回答具体问题之前,先从基本原理进行推理从而得出结论基于这个结论去判断答案是否正确。

2.使用内心独白或一系列查询来隐藏模型的推理过程

对于某些应用,模型用来得出最终答案的推理过程不适合与用户共享。例如,在辅导应用中,我们希望鼓励学生自己解答问题,但模型对学生解答的推理过程可能会向学生透露答案。

“内在独白”是一种可以用来缓解这个问题的策略。内在独白的想法是指示模型将那些不打算展示给用户的输出部分放入一种易于解析的结构化格式中。然后在向用户展示输出之前,对输出进行解析,只展示部分内容。

3.询问模型是否在之前的尝试中遗漏了什么

我理解是让大模型给出最终回答之前先反思一下。假设我们使用一个模型从某个来源中列出与特定问题相关的摘录。在列出每个摘录后,模型需要确定是继续写下一个还是停止。如果源文档很大,模型通常会过早停止,未能列出所有相关摘录。在这种情况下,通过后续查询提示模型查找之前遗漏的摘录,通常可以获得更好的性能。

五、使用外部工具

  1. 使用基于嵌入的搜索实现高效的知识检索


跟第二部分提到的策略,提供参考的文本类似,这里说的还是运用RAG的技术。大模型结合RAG也是目前市面上最成熟的大模型应用了,适用于内部存在大量知识性的文档,减少模型编造错误事实的可能性。整体的流程如下:

2.使用代码执行来进行更准确的计算或调用外部API

文中举了一个数学计算的问题,我们都知道语言模型不擅长数学计算,可以让大模型自己编写Python代码来执行数学计算并返回结果,这个也比较好理解,本身编码能力也是评价语言模型的一个重要指标。

在实际落地应用过程中,我们试着让模型自主调用matplotlib库,编写代码绘制图表。

3.给模型提供特定的功能

其实就是函数调用(function call),通过提供一系列函数及其描述,通过大模型对问题的理解,去决定调用哪些函数来执行,从而满足问答。

六、系统的测试变更

参考标准答案评估模型输出。主要叫我们如何对模型输出结果进行评估,包括人的主观评价和程序的客观评价。

26条提示词技巧

参考来源:

[2312.16171] Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4 (arxiv.org)

1.  如果你想要简洁的回答,不用太客气,直接说就行,不用加上“请”、“如果你不介意”、“谢谢”、“我想要”等客套话。


2.  在提问时说明目标受众,例如,告诉 LLM 你的受众是该领域的专家。


3.  把复杂的任务分成几个简单的小问题,逐步解决。


4.  用肯定的语气说“做某事”,避免用否定语气说“不要做某事”。


5.  当你需要更清楚或深入了解某个话题时,可以这样提问:


a.  用简单的语言解释[具体话题]。


b.  向我解释,就像我 11 岁一样。


c.  向我解释,就像我是[领域]的新手一样。


d.  用简单的英文写[文章/文本/段落],就像你在向 5 岁的小孩解释。


6.  加上“如果有更好的解决方案,我会奖励 xxx”。


7.  用具体的例子来提问(即使用几个示例来引导)。


8.  在你的提问前写上“###指示###”,如果相关的话,再加上“###示例###”或“###问题###”,然后再写你的内容。用空行分隔指示、示例、问题、背景和输入数据。


9.  使用“你的任务是”和“你必须”这样的短语。


10.  使用“你将受到惩罚”这样的短语。


11.  使用“像人一样自然地回答问题”这样的短语。


12.  用引导词,比如“一步步来思考”。


13.  在提问中加上“确保你的回答没有偏见,避免刻板印象”。


14.  让 LLM 向你提问,直到它有足够的信息来回答你。例如,“从现在起,请你问我问题,直到你有足够的信息……”。


15.  如果你想测试对某个话题的理解,可以这样说:“教我[定理/话题/规则],最后加个测试,等我回答后告诉我是否正确,但不要提前给答案。”


16.  给 LLM 指定一个角色


17.  使用分隔符


18.  在提问中多次重复某个特定的词或短语。


19.  将链式思维(CoT)和少量示例的提示结合使用。


20.  使用输出引导语,在你的提问结尾加上预期回答的开头部分。


21.  想写详细的文章、段落或文本时,可以这样说:“请为我写一篇详细的[文章/段落],内容涉及[话题],并加入所有必要的信息。”


22.  如果你要修改特定文本但不改变风格,可以这样说:“请修改用户发送的每个段落,只需改进语法和词汇,使其听起来自然,但保持原有的写作风格,确保正式的段落仍然正式。”


23.  当你有复杂的代码提示需要分成不同文件时,可以这样说:“从现在起,每当你生成跨多个文件的代码时,生成一个[编程语言]脚本,以自动创建指定的文件或修改现有文件以插入生成的代码。”然后提问。


24.  当你想用特定的词、短语或句子来开始或继续一段文字时,可以使用以下提示:“我提供给你开头部分[歌词/故事/段落/文章...]: [插入歌词/词语/句子]。请根据提供的词语完成它,并保持一致的流畅性。”


25.  明确指出模型必须遵循的要求,以关键词、规则、提示或指令的形式。


26.  想写与提供的样本相似的文本时,可以这样说:“请根据提供的段落[/标题/文本/文章/答案]使用相同的语言。”



30分钟的提示工程实用入门

视频链接地址:

https://weibo.com/1233486457/5033333079933031

  1. 描述多一点,提供更多的背景信息
  2. 给一些例子(少量学习的理念)--参考一些播客或文章的标题
  3. 使用结构化文本--生成图表展示
  4. 思维链(让模型一步一步地思考)
  5. 角色扮演,分配一个角色
  6. 翻转方法(写一个提示词,让模型问你问题,从你那里获取信息,以便生成更有帮助的回复)
  7. 反思、回顾和完善

ChatGPT 提示词十级技巧: 从新手到专家
视频链接地址:
https://weibo.com/1727858283/5031218725257887

在这个视频中,我将所有这些经验总结为了10个级别的提示词设计技巧。我们会从基础开始,一直深入到最近在新加坡提示词设计比赛中夺冠的专家技术。那我们开始吧。

第1级 - 基础请求

在这个级别,你只需直接告诉ChatGPT你想要什么。不需要过多思考。有时这样做会有好结果,有时则不然。

举例:让ChatGPT总结一篇维基百科文章。

第2级 - 基本格式化  

一些微小的格式调整可能会带来意外的大影响。比如,仅仅在提示词中添加一些破折号,就可以大大帮助ChatGPT理解你的提示词各部分的含义。

其他一些简单的格式调整,比如友好地表达,避免使用否定句,甚至"恳求"式的表达,有研究指出,在提示词中保持礼貌,可以提高大语言模型的准确性。

第3级 - 精准请求

第三级的关键是明确且专注地表达你希望从聊天机器人那里得到什么。

糟糕请求示例

太过模糊,如"让回答漂亮一些"。

良好请求示例

清晰指示所需内容,如请用标题、小标题和表格回答;制作特定列的表格等。

告诉大模型想要得到什么,不想得到什么

第4级 - 示例说明

给出示例输入和示例输出,这被称为"少样本学习"。ChatGPT会模仿你给出的示例格式。

示范

提供示例LinkedIn页面信息及期望的输出格式。

第5级 - 自我反省

让ChatGPT自我评估并反思自己是否遗漏了什么。这利用了大语言模型在评估方面的优势。

示例

"嘿ChatGPT,你漏掉了什么?"

第6级 - 系统提示与定制指令

提供背景信息和期望方向给ChatGPT,以指导其按你所期望的方式回答。具体格式见视频介绍。

第7级 - 人格化应用(角色扮演)

让ChatGPT模仿某个专家角色回答,可以提高准确性。

例子

解谜题时,让ChatGPT扮演逻辑思维专家的角色。

第8级 - 思维链

要求ChatGPT解释思考过程,一步步来。通常通过添加"让我们一步步来思考"这一语句。

第9级 - 自我提示

让ChatGPT自己生成一个提示词,它在这方面往往比人类做得更好。 解决近3年/4年的时候

第10级 - CO-STAR模型

根据新加坡提示工程大赛的获胜框架CO-STAR,构建完整的提示词:

- C - Context (背景信息)

- O - Objective (明确目标)

- S - Style (希望的风格、写作风格)

- T - Tone (希望回答语调)

- A - Audience (目标受众) --体制内、规划师

- R - Response (回应类型,如表格等)

示例

首先,我提供了一个我经营魔毯生意的背景。

接着,我设定目标是撰写一个 Facebook 帖子,以吸引人们购买。

我设定我需要的风格,基本上是模仿成功公司的方式。

我要求有优雅且具有说服力的语调。

我设定目标观众为 30 岁左右的人群。

最后,我指定了回应的格式。四句话,不需要话题标签,但需要加入一些表情符号。

基本上,使用 CO-STAR 的指南,你需要提供的所有信息 ChatGPT 都能处理,以便精确地回答你的问题。

魔塔社区的提示词小游戏


学了以上提示词技巧之后,可以去玩一下魔塔社区的提示词小游戏,还挺有意思的,刚好可以检验学习效果。

地址

https://modelscope.cn/studios/LLMRiddles/LLMRiddles/summary

总结

整个写提示词的实践下来,最大的感受是大模型像一个小孩,你需要不断的教他,才能发挥它的最大潜力,又像一个知识渊博的教授,你需要不断的提出好问题,你才能得到想要的答案。

建议大家还是看英文一手文档,写得简单易懂,这样不会遗漏很多关键信息。

上面四篇提示词技巧,发现有很多类似的技巧,比如思维链、示例、角色扮演、符号、格式化、反省等等。

日常不管是用这些提示词技巧从大模型那里获得更好的回答还是用来开发大模型应用,最重要的还是要不断使用和尝试。

每个大模型有自己的提示词偏好,需要不断实验。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询