Prompt Engineering -- 如何充分利用大型语言模型的能力?

前言

本文介绍了ChatGPT所依赖的大型语言模型 (LLM) 所具备的一些能力,以及这些能力的来源。之后介绍了Prompt Engineering的概念,通过几个例子解释了Prompt是如何发挥LLM所具备的能力的。这些例子包括:

  1. 让 OpenAI的GPT-3.5,回答公司的报销政策相关的问题
  2. 让OpenAI的GPT-3.5 回答用户计算数据指标的问题
  3. Github Copilot 利用 Prompt Engineering生成代码的方式

通过这些例子,可以看到Prompt Engineering 的重要性,可能已经超越之前的模型训练与微调,为基于LLM的智能产品的开发,打开了新的大门。

什么是LLM?

ChatGPT的病毒式传播现在有点让人审美疲劳了。人们已经开始担心这是一场泡沫,喧嚣过后一片狼藉,就像之前AI引起的泡沫一样。不过即使目前针对ChatGPT大范围的讨论和病毒式传播,有泡沫的迹象,但是这些讨论和传播背后的主要推动力,我相信还是使用过ChatGPT之后,被其能力震惊的大众,也就是说,这即使是一场泡沫,也是一场有群众基础的泡沫。而不是某种由大公司或者行业带动起来的…

支撑ChatGPT的,是OpenAI开发的一个大型语言模型(Large Language Model, LLM) GPT-3.5。

那基于Transformer架构的语言模型到底是干什么的?The Illustrated GPT-2 (Visualizing Transformer Language Models) https://jalammar.github.io/illustrated-gpt2/ 是一篇详细介绍 Transformer Language Model的博客,这里只用最简单但忽略了很多细节的方法介绍语言模型。

语言模型是一种机器学习模型,它可以根据已有的一句话(编程代码也行)作为输入,预测下一个可能的单词,并且将预测出的单词,添加进原句子中,再次输入模型,预测新的下一个单词。这被称为自回归(Augoregression)。例如上图中,原始的句子是 “recite the first law ” ( 背诵第一定律,此处指“阿西莫夫机器人三定律“ , h t t p s : / / z h . w i k i p e d i a . o r g / w i k i / ” (背诵第一定律,此处指“阿西莫夫机器人三定律“, https://zh.wikipedia.org/wiki/%E6%9C%BA%E5%99%A8%E4%BA%BA%E4%B8%89%E5%AE%9A%E5%BE%8B),其中 “ (背诵第一定律,此处指阿西莫夫机器人三定律,https://zh.wikipedia.org/wiki/” 符号此处是开始预测的标记。一个已经训练完成的语言模型GPT-2,会将这句话作为输入,预测出单词 “A” 。

下一步, 新的句子 “recite the first law $ A” 会作为输入,模型基于输入预测第二个单词 “robot”,得到新的句子“recite the first law $ A robot”,以此类推。这种语言模型被用在机器翻译,聊天机器人等多个场景。

在这里插入图片描述

而大型语言模型,就是参数量更大的语言模型 (废话…)

LLM所具备的能力

博客( https://yaofu.notion.site/How-does-GPT-Obtain-its-Ability-Tracing-Emergent-Abilities-of-Language-Models-to-their-Sources-b9a57ac0fcf74f30a1ab9e3e36fa1dc1#33b2afbf2038478680cb249e5d517948 ) 详细解释了LLM的各项能力以及来源,我这里作简要的总结。

目前我们通过GPT3.5 (也就是ChatGPT),能够观察到LLM所具备的一些能力,包括

  1. 语言能力。LLM 能够组织流畅的语言
  2. 世界知识。LLM “记住”了庞大的训练文本中的知识
  3. 上下文学习能力(In Context Learning) 。LLM 能从输入的文本中学习到知识,且提取知识时,不需要finetune更新参数
  4. 逻辑推理能力。LLM 展现出了逻辑推理能力,虽然目前观察到的情况是,它并不总是能做出正确的逻辑推理
  5. 理解并遵循人类指令的能力

以上的列举的能力除了与训练数据,训练方法相关以外,与模型的大小也密切相关。即使用同样的数据与训练方法,模型越大,能力越强。当模型尺寸超过某一阈值时,这些能力会出现巨大飞跃。这些能力的出现与增长,其实还没有被完全理解,目前被称为“突现能力” (Emergent Ability)。

而这些能力的出现,也不是在 GPT-3.5上突然展现的,每个能力的出现,都是一个单独的故事:

  1. 2020年, GPT3 作为当时最大的模型,展现了语言能力世界知识,以及一定的上下文学习能力
  2. 2021年末,Google 的PaLM模型团队在大模型中发现了逻辑推理能力,目前对大模型逻辑推理能力来源的一个猜测是在训练数据中引入了代码数据。
  3. 2022年初, OpenAI 使用了RLHF(Reinforcement Learning by Human Feedback) 方法训练出了 InstructGPT模型,模型展现出了对人类指令的理解和遵循能力。并且在输出文字时,更接近人类的表达方式。

这些LLM的突现能力,最终汇集在2022年11月发布的 ChatGPT上,产生了席卷世界的病毒式传播。自由聊天是能让人直观感受LLM各项能力的一种交互方式,但是有如此突现能力的LLM, 只用来纯粹的聊天,属实是浪费了。

我们可以使用Prompt Engineering 来充分发挥LLM的各项突现能力,完成多样的任务。

什么是Prompt Engineering?

Prompt Engineering,(中文翻译暂且叫指引工程),简单的说,就是组织一段自然语言(Prompt),输入进LLM模型,引导模型根据Prompt(指引),输出期望的内容。

而在设计Prompt时,一般Prompt可以由不同部分组成。包括任务描述,用户输入,必要时可以增加一些Example。下图描述了一个典型的Prompt的组成。

在这里插入图片描述

Prompt 示意图. 来源: https://microsoft.github.io/prompt-engineering/

下面通过通过两个简单的例子,来理解 Prompt Engineering,这里使用的AI model,就是 OpenAI 的 GPT-3.5 模型 (名字为 text-davinci-003)。关于APi的使用方式,可以参考官方文档 https://platform.openai.com/docs/quickstart

LLM回答公司政策问题

很多机构都有机构独有的政策,例如公司里的报销,请假,公章使用流程等。当我们要查询某件事应该如何做,或者针对某件事的政策时,找到文件通读,并自己理解,回答问题;要么直接询问了解政策的行政人员。通过Prompt,LLM模型可以在拿到与用户问题匹配的政策资料文件后,使用合适且简短的语言,准确回答用户的提问。即使LLM的训练数据中,并不包含这些特定的政策文件。

在这里插入图片描述

使用Prompt 指引LLM回答用户有关报销的提问。其中左侧为输入进模型的Prompt文本,由三部分组成:

  1. 任务描述
  2. 用户输入的问题
  3. 与相关报销有关的公司政策文本

右侧为模型的输出,此处使用的是OpenAI text-davinci-003。我们可以看到,模型输出了关键的报销注意事项(需要使用英文字幕), 报销提交流程与打印, 以及用户报销项目的Code。

下图黄色高亮部分,是我根据模型提供的答案,找到的信息来源。可以看到,模型在一长段文本中,可以跳过不相关的文本,而是提取关键信息, 并组织了合适的语言回答问题。

在这里插入图片描述

而在这个例子中,我们可以观察到模型的语言能力,上下文学习能力,对人类指令的理解能力

LLM 回答业务人员针对数据的疑问

我在过去几年中参与过多个数据仓库与数据平台相关的项目。这类型项目的挑战之一,就是梳理复杂的数据关系,构建数据模型,最终能够快速提供给业务人员有关数据的洞见。这些洞见的基础,就是计算出各项指标。

通过Prompt,LLM可以根据业务人员的业务问题,直接生成计算指标的SQL语句。如果我们可以在数据平台中集成这样的功能,那么可以让不懂技术的业务人员可以更快的得到数据与洞见。

下图展示了将两张 Postgres SQL表作为上下文,并结合用户需求以及简单的“output SQL query”指令,输入进模型后,得到了正确SQL语句。模型同样为 text-davinci-003。

在这里插入图片描述

在用户需求描述中,并没有明示或者暗示需要将两张表JOIN起来,但是结果的SQL语句确实有这一部分。另外,在需求描述中,将在Product表中不存在的 product,其name 设置为“Unknown”,这一需求也能被准确的实现。

在这个例子中,LLM展示了它的世界知识(其掌握了Postgres SQL的知识),逻辑推理能力,以及对指令的理解能力

Github Copilot 中的 Prompt Engineering

已经被广泛使用的Github Copilot,背后是OpenAI推出的另一个语言模型系列 codex。如果使用过Github Copilot,可以发现它对用户的代码库也有一定的理解,即可以根据代码库的情况,结合用户需求输出代码。

其背后的原理也是将代码库的代码,作为 Prompt的一部分。这篇博客 (https://thakkarparth007.github.io/copilot-explorer/posts/copilot-internals.html#secret-sauce-1-prompt-engineering) 通过逆向工程,分析了Github Copilot的工作流程,其中有 Copilot 组织 Prompt的部分。下图是一个发送到API的Prompt的示例。

在这里插入图片描述

Github Copilot 组装这个 Prompt的大致过程是:

  1. 找到当前用户光标所在的位置 (Entry Point),并根据 IDE确定当前文件在工程中的相对路径,以及语言类型
  2. 找到IDE中用户打开过的最近的相同编程语言的20个文件,这些文件为相关文件 (Relevant Docs)
  3. 从相关文件中提取代码片段,并放进Prompt中。这一部分的逻辑还是比较复杂的
  4. Prefix 计算。Prompt分为 Prefix和Suffi。Prefix计算相对更复杂,其有多个不同的元素(Elements),可以观察到的元素有 BeforeCursor, AfterCursor, SimilarFile, ImportedFile, LanguageMarker, PathMarker. 填充每个元素内容的逻辑可以在博客中找到答案。
  5. Suffix 计算。比起Prefix Prompt,Suffix部分更简单,即在填充完Prefix Prompt后,再从当前光标后,找到内容,填入允许的尽可能多的文本。

而通过这一系列Prompt Engineering步骤,Copilot就可以作为你的 AI pair。

Prompt 的限制

对OpenAI的 text-davinci-003模型来说,Prompt的长度时有限制的。OpenAI规定,Prompt 与模型回答的文本总长度,需要在 2048 tokens以内, 大约相当于 1500 个单词。所以我们在Prompt中组织上下文时,需要控制长度。这就需要我们根据用户需求,先定位出大致的上下文,再将上下文与用户输入结合成Prompt。

不过这是 OpenAI API的限制,并不是LLM模型的极限,可以想象当LLM允许更长的输入后,可以将尽可能多的上下文放进Prompt。例如在根据用户需求生成SQL时,可以将数据库表与字段的解释也放进Prompt。

总结

通过在 Prompt 中传入上下文,我们可以让 LLM 更好可以回答它本身训练数据中没有的问题,换句话说,让模型理解最新发生的事情,并不总是需要重新训练它,才能为它注入新的世界知识。而可以利用它的逻辑推理,上下文学习能力,让它通过Prompt理解这个世界在发生什么。我推测这也是在ChatGPT后很快就上线了的 New Bing搜索,在回答用户提问时,总能找到最新的资料的原因。

另外通过上面的几个例子,可以看到 Prompt Engineering 对于使用LLM的重要性,甚至可以得出一个推论:在LLM上利用Prompt Engineering解决问题,在很多情况下,优于为了解决问题而使用专门的数据集训练一个普通模型。这个推论,相信会被之后层出不穷的产品验证。

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值