分享

最新最全最火的Prompt指南来了!

 老林37 2023-04-03 发布于北京
    近日GitHub上的一个项目整理了提示工程(Prompt Engineering)的指南、论文、讲座和资源,可以说是史上最全的prompt资料包。该项目包含与提示工程相关的最新论文、学习指南和工具,旨在为从业者和开发者提供研究和学习的参考。目前该指南已经获得了超过9k的“点赞量”,也登上了GitHub的热榜。

图片

项目主要包含以下内容:

图片

即Prompt Engineering相关的讲座、指南、论文、工具和库、数据集、博客和一些教程等资料。
    本期主要给大家分享讲座和指南中的相关内容和示例。讲座部分包含以下内容:
图片
包含了长达一小时的讲座视频,讲座中的代码示例,以及一份配合讲座的50页资料。视频包含四个部分:提示工程的介绍、先进的提示工程技术、工具&应用、总结以及未来的发展方向。

图片

什么是prompt?

    Prompt包括输入给语言模型(为了实现所需任务)的指令和文本。提示工程指开发和优化prompt,以有效地将语言模型(LM)用于各种任务中。提示工程可以帮助人工智能工程师和研究人员改进和高效地使用语言模型。

图片

Prompt包含四部分:

(1)指令:希望模型执行的具体任务或指示

(2)背景:补充的外部信息或上下文信息,可以引导模型产生更好的输出

(3)输入数据:想要解决的问题或者是输入

(4)输出指示:输出的类型或格式

为什么学习prompt engineering?

(1)对推动相关研究至关重要

(2)有助于测试和评估LLM的局限性

(3)结合LLM实现各种创新应用

    视频还介绍一些使用不同prompt的常见任务示例,小编也在openai的playground进行了相应的实操。

Text summarization

图片

实操:

图片
Question Answering

图片

实操:

图片

Text Classification:

图片

实操:

图片

Role Playing:

图片

实操:

图片

Reasoning:

图片

实操:

图片

图片

许多先进的prompt技术已被用于提高复杂任务的性能:

(1)Few-Shot prompts

    Few-Shot prompts允许我们在提示中提供一些示例,以引导模型产生更好的输出。

图片

(2)Chain-of-thought (CoT) prompting

    我们可以进一步改进prompt去指示大模型对任务进行推理,这对于一些需要推理的任务非常有用。

    可以将CoT prompt与Few-Shot prompt相结合,以获得更好的结果。

图片

还可以在没有示例的情况下进行Zero-Shot CoT。

Zero-Shot CoT

图片

(3) Self-Consistency

    自洽性旨在改进用于CoT 提示的贪心解码策略。这一想法是通过Few-Shot CoT对多种多样的推理路径进行采样,并在这些采样中选择最一致的答案。这有助于提高CoT提示在涉及算术和常识推理任务上的性能。

图片

(4)Knowledge Generation Prompting

    该技术通过将附加知识作为上下文的一部分来提高复杂任务(如常识推理)的结果。上下文中使用的知识由模型生成,并用于进行预测。最终选择置信度最高的预测结果。

第一步是生成知识。下图是如何生成知识的示例。

图片

然后使用生成的知识增强上下文,以获得答案建议。

图片

最终选择最高置信度的回答作为最终答案。

(5)Program-aided Language Model (PAL)

    思维链提示是引导模型更好地执行复杂推理任务的一种很好的方法,然而有时CoT还不够,因为这种方法只依赖于从模型中生成的文本。程序辅助语言模型(PAL)使用LLM读取问题并生成中间推理步骤,可以更好地解决推理任务。

图片

指南部分主要包括以下内容:

图片

    指南中的内容与讲座视频中的内容基本一致,对于开发者来说该指南是一个很好的进行prompt engineering的操作手册。其中会有一些细节上的建议,比如当你想了解“antibiotics(抗生素)”是什么意思的时候,你可以像下图一样设计prompt。

图片

而不是简单的设计成——Explain antibiotics ,指南的作者认为“A:”是一种用于回答问题的显式提示格式。

    与视频中不同的是指南中还讲了Adversarial Prompting部分,对抗性提示是提示工程中的一个重要部分,因为它有助于帮助开发者了解LLM所面临的风险和安全问题。

图片

    通过prompt劫持模型输出的一种流行方法如下,即Ignore Previous Instructions:

图片

    这种攻击的思想是,它通过插入一条指令来劫持模型输出,以忽略原始指令并执行插入的指令,这可能会导致模型产生有害的输出。

    另一种常见的提示攻击旨在泄露可能包含机密或专有信息的提示,即Prompt Leaking:

图片

    上面的输出返回示例中的内容可能是机密信息。这里的建议是要非常小心地传递提示,也许可以尝试一些技巧来避免泄漏。

    一些模型会避免响应不道德的指令,但如果以巧妙的方式将请求情境化,则可以绕过道德检测,即Jailbreaking:

图片

指南中也提到后续会更新一些应对Adversarial Prompting的策略和技术。

    感兴趣的读者可以去观看视频并按照示例去实际操作,从而熟练掌握prompt的相关技术。

                        
作者 | 谢建业
审校 | 陈浩 刘逸川
限于水平,难免有错漏之处,欢迎读者斧正。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章