Prompt万能框架与常用评估指标

引言

在人工智能的飞速发展中,大型语言模型(LLM)已成为研究和应用的热点。LLM以其强大的语言理解和生成能力,在诸如自然语言处理、文本生成、问答系统等多个领域展现出巨大潜力。然而,要充分发挥LLM的能力,有效的Prompt设计变得至关重要。Prompt,或称为提示词,是用户输入给模型的指令或问题,用以引导模型生成特定的输出。Prompt工程,即Prompt的设计与优化,已成为人机交互中的一门艺术和科学。

什么是Prompt

回顾GPT的发展历程可分为四个阶段:GPT-1、GPT-2、GPT-3和ChatGPT。GPT-1作为早期基于Transformer架构的模型,采用"pretrain + finetune"范式,但受限于模型规模,未被广泛应用。GPT-2引入了新范式,通过大规模预训练,无需监督数据即可完成多种任务,开启了zero-shot学习的先河。GPT-3进一步扩大了模型和数据规模,实现了在zero-shot任务中的显著效果,尤其在无需编程技能的场景下。ChatGPT作为GPT-3的优化版,专注于多轮对话,成为AI市场化的重要里程碑。随着GPT系列的发展,Prompt技术应运而生,成为提升模型性能和适应性的关键。

从领域发展的角度我们可以看到 3 种不同的研发范式:

  1. Transformer 之前:有监督训练(train)
  2. GPT-1 & BERT:无监督预训练(pre-train) + 有监督微调(finetune)
  3. GPT-2 & GPT3:无监督预训练(pre-train) + 提示词(Prompt)

模型能力的研发越来越不依赖 “训练” 的过程,而是更大程度的依赖 “预训练”,依赖 “模型” 本身的能力。在 BERT 所代表的范式下,我们还可以通过 “微调” 在参数层面影响模型。而到了以 “GPT3” 为代表的范式下,也就是我们现在用的大模型,我们不再借助 “微调” 的方式调试模型,而是通过 “输入” 直接影响 “输出” 的质量,而如何在应用中得到一个好的 “输入” 就是 “Prompt 工程” 需要做的事。

Prompt工程的重要性

Prompt工程的重要性体现在其对LLM性能的影响上。一个精心设计的Prompt可以显著提高模型的准确性、相关性和创造性。在实际应用中,Prompt工程可以帮助我们更好地利用LLM解决复杂问题,提高工作效率,甚至在某些情况下,发掘出模型潜在的能力。

Prompt设计基础

理解LLM的工作原理

在设计Prompt之前,理解LLM的工作原理至关重要。LLM通常基于变换器(Transformer)架构,通过预训练和微调来学习语言模式。模型能力的应用越来越向 “预训练” 的部分倾斜,绝大多数能力在 “预训练” 阶段形成的,而非通过进一步的训练构建。而在这种思想的基础上,Prompt 则像一个个约束条件,通过增加限制,让这些 “预训练” 阶段构成的能力更精准的调用起来。因此,Prompt 就是在提示模型回忆起自己在预训练时学习到的能力。

我们可以把 “知识” 和 “能力” 进行更进一步的分解,更多的是希望使用大模型的能力(理解,总结,生成,推理,e.t.c.),而非知识。 如同RAG 技术一样,我们更倾向于将知识通过外部注入的方式让模型试用,而能力则完全需要依赖预训练阶段。我们要做的是通过 Prompt 调用大模型的能力去解决问题,让这些能力表现的更精准,而并非把他当成一个知识库。

Prompt的结构要素

一个良好的Prompt通常包含以下几个结构要素:

明确的目标

每个Prompt都应有一个清晰的目标,告诉模型需要完成什么任务。目标的明确性直接影响到模型输出的相关性和准确性,而不是模糊地说“告诉我关于苹果的信息”,更好的方式是“列出苹果的营养价值”。

充足的上下文

上下文为模型提供了完成任务所需的背景信息。充足的上下文可以帮助模型更好地理解Prompt的意图和需求。如在询问“这个角色在故事中的作用是什么”时,提供故事的摘要或关键情节可以引导模型给出更准确的回答。

指定的风格和语气

根据任务的性质和目标受众,指定Prompt的风格和语气。这可以影响模型生成文本的正式程度、亲和力和说服力。如在撰写一个产品广告时,选择“热情和激励人心”的风格可能会比“事实陈述”的风格更能吸引用户。

预期的受众

了解目标受众可以帮助定制化Prompt,确保生成的内容能够引起受众的共鸣。如为儿童设计教育内容时,使用简单、直观的语言比使用复杂或技术性的语言更有效。

回复格式

指定模型输出的格式,如文本段落、列表、表格或JSON。这有助于将模型的输出直接应用于特定的使用场景。

Prompt设计的挑战与机遇

尽管开源小型模型和训练技术如LoRa的兴起使得在较低成本下对模型进行微调成为可能,但这并不意味着Prompt工程变得不再重要。由于大模型的体量巨大,即使是开源模型,通过LoRa等技术进行的微调对参数的影响也是有限的,更多是一种参数对齐过程,可能引发遗忘问题,且无法保证长期的知识更新。相比之下,利用超长上下文模型和RAG(Retrieval-Augmented Generation)等技术被认为是更可靠的方法。此外,大模型的智能涌现基于scaling law,其能力的提升依赖于参数量的增加,而非单一任务的训练。因此,Prompt工程作为新范式下调度和对齐模型能力的关键手段,其作用无法被传统训练和微调所取代。

Prompt设计基础是Prompt工程的起点。理解LLM的工作原理,掌握有效Prompt的结构要素,可以帮助我们更好地与模型沟通,实现更加丰富和深入的人机交互。


Prompt万能框架

静态prompt模板

在编写 Prompt 时,从0到1的编写出第一版 Prompt 往往是最难的,而基于已有 Prompt 利用各种技巧进行优化则相对简单。为了解决这个问题,通过使用一套 “万能模版”,把一个 Prompt 拆分成了 “立角色 + 述问题 + 定目标 + 补要求” 这四个部分,希望通过结构化的拆分完成这最困难的一步,无论面对什么任务,利用这个模版都可以得到一个“及格”的 Prompt。

Prompt 的作用就是根据我们的问题调用模型的能力,用户通过提问的方式,明确的让模型知道我们想要什么,我们的目标是什么,从这个基本思想出发,Prompt 应该包含以下几点:

  1. 问题是什么:首先你要告诉模型你的问题是什么,你的任务是什么,要尽量描述清楚你的需求。
  2. 你要做什么:下面你需要告诉大模型具体要做什么,比如做一份攻略,写一段代码,对文章进行优化,等等。
  3. 有什么要求:最后我们往往还需求对任务补充一些要求,比如按特定格式输出,规定长度限制,只输出某些内容,等等。

描述清楚以上内容,即可让LLM理解相关任务表述,举例来说:

例1:生成产品摘要

问题是什么:你的任务是帮我生成一个产品的简短摘要。

你要做什么:我会给你产品的需求文档,及用户对产品的评价,请结合这些信息概括产品的功能及现状,为我生成一份产品摘要。

有什么要求:请尽量概括产品的特点,并用轻松幽默的语言风格进行编写,摘要的字数不要超过50个字。

例2:生成代码注释

问题是什么:你的任务是帮我的代码生成注释。

你要做什么:我有一段 python 代码,需要你对代码的内容进行分析,并为代码添加注释。

有什么要求:请结合代码内容,尽量详细的补充注释,不要遗漏,每条注释请以 “comment:” 作为前缀。

例3:生成测试用例

问题是什么:你的任务是帮我设计一款产品的测试用例。

你要做什么:我会提供给你产品的需求文档,需要你结合需求的功能描述进行测试用例的编写。

有什么要求:请结合需求中功能的结构,对测试点进行梳理,并有层级的输出测试用例,请保证每一个功能的测试点没有遗漏。

细化相关内容

初版的 Prompt 还只是一个雏形,由于各部分信息还不完整,往往不能达到我们的预期,框架提供了 Prompt 的骨架,还需要我们进一步补充相关内容,对框架的每一部分进行更详细的分解,通过内容的补全一步步的提升模型的效果。

角色

在描述清楚任务后,我们就需要调度模型的能力去完成我们的任务,不同的任务需要用到不同的能力,这往往依赖认为的拆分。角色”,他就像大模型里自带一个“能力包”,可以很容易的对模型能力进行调用。每一个角色,都对应着该角色包含的若干能力,我们可以通过设定角色,“提示”大模型使用该角色对应的能力,这与前文“Prompt 到底是什么” 中介绍的想法极其匹配,充分说明是“Prompt” 提示的作用,通过简单的“提示”调用出大模型预先训练的能力,这也就是“角色”如此有用的原因。

角色模版:

现在你是一位优秀的{ {你想要的身份}},拥有{ {你想要的教育水平}},并且具备{ {你想要的工作年份及工作经历}},你的工作内容是{ {与问题相关的工作内容}},同时你具备以下能力{ {你需要的能力}}

举例来说

例:心理咨询师

现在你是一位优秀的 { {心理咨询师}},拥有 { {心理咨询、临床心理学等专业的硕士或博士学位}},并且具备 { {多年的心理咨询工作经验,在不同类型的心理咨询机构、诊所或医院积累了丰富的临床实践经验}},你的工作内容是 { {为咨询者处理各种心理问题,并帮助你的咨询者找到合适的解决方案}},同时你具备以下能力:

{ {

  1. 专业知识:你应该拥有心理学领域的扎实知识,包括理论体系、治疗方法、心理测量等,可以为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科技之歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值