Netflix 机器学习科学家的提示词优化经验分享

news2025/2/23 21:53:31

编者按: 如何充分发挥大模型的潜能,用好大模型,关键在于如何优化向它们发送的提示词(prompt),是为提示词工程(prompt engineering)。

本文Netflix 机器学习科学家Cameron R. Wolfe的提示词优化经验分享,阐述了目前提示词的主要构成要素,介绍了与提示词相关的上下文窗口相关信息,并总结了一些行之有效的优化策略,如实事求是,实证为本、先从简单着手、若无必要,尽量简单明了、使用示例等,这些策略应能为在实践中优化提示词提供参考思路。

作者 | Cameron R. Wolfe, Ph.D.

编译 | 岳扬

本文将介绍一些提示词工程(prompt engineering)的基本概念,以及如何应用这些概念来提升大语言模型(LLM)的性能。

1. LLM 的界面极其简便易用

LLMs 如此受欢迎的主要原因之一是它们采用了 text-to-text 的输入输出界面(译者注:用户只需要在Web或客户端界面上输入文本提示词,模型就能根据输入的文本生成相应的文本输出。),使得使用起来非常简单直观。在之前,使用深度学习解决一项任务至少需要我们通过一些数据对模型进行微调,以教会模型如何解决这项任务。此外,大多数此类模型都是专门解决单一任务的专家模型。由于 LLMs 具有一种新出现的上下文学习(in-context learning)能力,我们可以通过文本提示词解决各种问题。以往复杂的问题解决过程现在已经被简化为通过自然语言描述解决问题!

“prompt工程作为一个相对新兴的学科领域,其目标是开发和改进优化提示词(prompt),使大模型(LMs)能基于这些提示词充分发挥潜力,高效地被用于各项应用方向和研究领域。” ------ 摘自文献 [1]

2. 什么是提示词工程?

得益于大语言模型基于文本对话的简单交互界面,使用它们已不再是专业人士(数据科学家或机器学习工程师(MLE))的"私房菜"。普通大众只要掌握一定的语言能力,就可以直接与这些模型对话交互,借助它们的能力解决较为复杂的问题。不过,在使用 LLM 解决问题时,我们得到的结果很大程度上取决于提供给模型的文本提示词。由于这个原因,提示词工程(通过大量的实证试验和反复优化,指导如何为特定任务设计高质量的prompt)变得极其受欢迎和具有影响力,行业目前已经积累了诸多有效的技术手段和优秀的实践方法。

3. 提示词的主要构成要素

为大语言模型设计 prompt,有多种不同的方法。但是,大多数 prompt 设计策略通常会包含以下几个共同的组成要素:

  • 要处理的输入数据(Input Data): 大模型需要处理的输入数据,比如待翻译或分类的句子、待总结的文档等。
  • 具体的示例(Exemplars):在 prompt 中介绍输入数据和期望输出之间的对应关系,明确地指导模型产生所需的输出形式,提高任务完成的准确性,使得大模型完成预期的文本输入到模型输出的映射转换。
  • 指令型文本(Instruction):使用自然语言文字对期望的模型输出的性质、格式等进行描述和指导。
  • 结构化和格式化的元素或标签(Indicators):通过标签、格式化元素( tags、formatting elements)等方式在 prompt 中引入一些人工结构,使其不只是简单的自然语言文本,而是带有一些额外的语义信息和视觉提示,从而指导模型的输出更契合要求。
  • 上下文(Context):prompt 中提供给大模型的一些背景信息、情况说明、限制条件等内容,有助于模型更好地把握语境,理解 prompt 的全部含义,从而生成更准确、更符合预期的输出结果。

在下图中展示了一个真实的 prompt 实例,它将上述所有提示词的主要构成要素都整合到了一个句子分类任务的提示词中。

4. 上下文窗口(The context window)

在预训练阶段,模型有一个固定的最大输入长度,如果输入的内容超过这个长度,模型的输出就可能失常。这个预训练时设定的序列长度限制,就决定了模型实际运行时能够一次性处理的最大文本长度,被称为上下文窗口(The context window)。如果文本序列的长度大大超过了这一预设的上下文长度,那么模型的行为就可能无法预测,并产生错误的输出。不过,有一些方法可以用来扩展模型的上下文窗口,例如 Self-Extend [2] 或位置插值法(positional interpolation)[3]。

近期关于 LLMs 的最新研究强调了创建长上下文窗口(long context windows)的重要性,从而使得模型能够在每个提示词(prompt)中处理更多的信息(例如,更多的示例对(Exemplars)或更多的上下文内容)。然而,并非所有的 LLM 都能完美地利用上下文 !通常通过 “大海捞针测试”(needle in the haystack test) [4] 来评估 LLM 利用长上下文窗口信息的能力,这项测试具体包括:

  1. 在上下文中嵌入一个随机 fact(译者注:独立存在、真实无误但与上下文无关的陈述性信息,可以检验模型在真实应用场景中对关键信息的识别和提取能力。)。
  2. 要求模型检索这个 fact。
  3. 反复地改变上下文长度以及 fact 在上下文中的位置,并在各种上下文配置下反复测试。

这项测试会生成如下图所示的测试结果(摘自文献 [4]),我们可以很容易地发现上下文窗口的不足之处。

5. 我的提示词(prompt)工程策略

针对不同的大型语言模型,提示词工程的具体细节会有很大区别。但是,有一些通用的原则是非常有用的,可以用来指导如何设计提示词:

  • 实事求是,实证为本:提示词工程的首要步骤是建立一个可靠的评估机制(例如通过测试用例评估、人工评估或让大模型进行评估),从而轻松地评估或测量提示词工程中 prompt 的优化效果。
  • 先从简单着手:刚开始接触提示词工程时,不应当直接尝试 “chain-of-thought prompt” 这种复杂技术,而应先从最简单的形式着手,然后逐步添加复杂元素,同时根据提示词的性能变化(见上文)来判断是否有必要继续增加提示词的复杂度。
  • 追求明确具体而直接:尽可能消除 prompt 中的任何歧义,尽量使用简洁、明确、直接和具体的自然语言来描述期望大模型输出的内容。
  • 使用一些具体的示例(exemplars):如果很难具体描述期望的理想输出,可以尝试在提示词中添加一些具体的示例,通过具体实例消除歧义,明确期望输出的形式。
  • 若无必要,尽量简单明了:有些情况下确实需要使用很多复杂的 Prompt 策略(如解决多步推理问题),但我们在使用这些方法之前应三思而后行。要根据经验,通过判断实践效果和采用评估方法来确定是否必须引入复杂提示词策略。

综上所述,本文介绍的提示词工程策略主要是:i) 先加大投入构建一个非常好的评估框架 ;ii) 从简单的 Prompt 形式入手 ;iii) 根据实际需求,逐步适度引入复杂提示词策略,以便尽可能达到理想的性能水平

Thanks for reading!


Cameron R. Wolfe, Ph.D.

I’m a researcher with an interest in deep learning and a passion for explaining scientific concepts to others.

END

参考资料

[1]https://www.promptingguide.ai/zh

[2]https://arxiv.org/abs/2401.01325

[3]https://arxiv.org/abs/2306.15595

[4]https://github.com/gkamradt/LLMTest_NeedleInAHaystack

本文经原作者授权,由 Baihai IDP 编译。如需转载译文,请联系获取授权。

原文链接:

https://x.com/cwolferesearch/status/1786025095959298234

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1824421.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音视频素材在哪找无版权?免版权可以剪辑视频素材网站分享

在抖音视频制作中,素材的选择至关重要。今天,我就为大家推荐几个宝藏网站,帮你找到既好用又无版权纠纷的视频素材。无论你是新手还是老手,这些网站都能满足你的需求。 蛙学府 首先推荐的是蛙学府。这个网站提供丰富的视频素材&am…

STM32硬件接口I2C应用(基于HMC5883L)

目录 概述 1 STM32Cube控制配置I2C 1.1 I2C参数配置 1.2 使用STM32Cube产生工程 2 HAL库函数介绍 2.1 初始化函数 2.2 写数据函数 2.3 读数据函数 3 认识HMC5883L 3.1 HMC5883L功能介绍 3.2 HMC5883L的寄存器 4 HMC5883L驱动程序实现 4.1 驱动函数实现 4.2 完整驱…

xgo 原理探索

Go 单测 mock 方案 Mock 方法原理依赖优点缺点接口 Mock为依赖项定义接口,并提供接口的 Mock 实现。需要定义接口和 Mock 实现。灵活,遵循 Go 的类型系统;易于替换实现。需要更多的样板代码来定义接口和 Mock 实现。Monkey Patching&#xf…

AIGC绘画设计—揭秘Midjourney关键词魔法:让你的AI绘画瞬间起飞

在这个数字化飞速发展的时代,AI技术正以前所未有的速度改变着我们的生活和创作方式。在艺术创作领域,Midjourney作为一款强大的AI绘画工具,正逐渐受到越来越多创作者和爱好者的青睐。今天,我就来为大家揭秘Midjourney背后的关键词…

11.3 Go 标准库的使用技巧

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Kafka消息能正常发送,但是无法消费问题排查

这里是小奏,觉得文章不错可以关注公众号小奏技术 kafka version kafka_2.13-3.5.0 背景 线上的kafka集群要进行扩容,原先的2broker,扩容之后变成了新增3个broker,然后下掉了原先老的broker。 新集群看着没问题,但是出现了一个…

Java面向对象-抽象类和抽象方法

Java面向对象-抽象类和抽象方法 1、代码案例展示2、抽象类和抽象方法的关系: 1、代码案例展示 1、在一个类中会有一类方法,无需重写,直接使用 2、在一个类中会有一类方法,会对这个方法进行重写 3、一个方法的方法体去掉&#xff…

蚓链数字化营销教你寻找快准直达市场路径小绝招

在当今数字化的商业世界中,蚓链数字化营销成为了企业开拓市场、实现增长的有力工具。它犹如一盏明灯,为您照亮寻找快速直达市场路径的方向。 绝招一:深入的市场调研。利用蚓链数字化营销的大数据分析能力,全面了解目标市场的规模、…

Permute 3 mac:一键转换,格式无忧

Permute 3是一款强大而灵活的多媒体格式转换工具,它以其高效、易用和广泛兼容的特性,成为了众多用户处理媒体文件的得力助手。 Permute 3 Mac版获取 首先,Permute 3支持广泛的媒体格式,无论是视频、音频还是图片,都能…

Python酷库之旅-比翼双飞情侣库(08)

目录 一、xlrd库的由来 二、xlrd库优缺点 1、优点 1-1、支持多种Excel文件格式 1-2、高效性 1-3、开源性 1-4、简单易用 1-5、良好的兼容性 2、缺点 2-1、对.xlsx格式支持有限 2-2、功能相对单一 2-3、更新和维护频率低 2-4、依赖外部资源 三、xlrd库的版本说明 …

2024年心理学研究、现代化教育与社会发展国际学术会议(PRMESD 2024)

2024年心理学研究、现代化教育与社会发展国际学术会议(PRMESD 2024) 2024 International Conference on Psychological Research, Modern Education and Social Development 会议地点:南京,中国 网址:www.prmesd.com 邮箱: prmesdsub-con…

【嵌入式】一种优雅的 bootloader 跳转APP 的方式

【嵌入式】一种优雅的 bootloader 跳转APP 的方式 0. 个人简介 && 授权须知1. 前言2. 干净的跳转3.程序的 noinit 段4. 利用noinit段实现优雅的跳转4.1 检查栈顶地址是否合法4.2 栈顶地址 44.3 __set_MSP 5.OTA 过后的运行逻辑 0. 个人简介 && 授权须知 &#…

花卉识别-python-pytorch-CNN深度学习含数据集+pyqt界面

代码下载地址: https://download.csdn.net/download/qq_34904125/89383063 本代码是基于python pytorch环境安装的。 下载本代码后,有个requirement.txt文本,里面介绍了如何安装环境,环境需要自行配置。 或可直接参考下面博文…

利器放送丨如何在PS里使用stable diffusion插件?

各位设计界的领军人物们,你们一定对PS(也就是大家熟知的Photoshop)不陌生吧。同样,对于AI领域的精英们,SD(stablediffusion)这款软件也应该是如雷贯耳。这两款软件,各自独立且功能强…

CAPL通过addTimeToMeasurementStartTime或者getLocalTime获取本地时间

文章目录 getLocalTimeaddTimeToMeasurementStartTimegetLocalTime long tm[9]; getLocalTime(tm); // now tm contains the following entries: // tm[0] = 3; (seconds) // tm[1] = 51; (minutes) // tm[2] = 16; (hours)

基于微信公众号开发h5的前端流程

1.首先公众号进行配置,必须要https域名 还有个txt文件,有弹框提示需要下载放在服务器上 前端处理code的代码封装 // 微信公众号授权 export function wxAuthorize(calback) {// 非静默授权,第一次有弹框 这里的回调页面就是放在服务器上微信…

效率翻倍!ComfyUI 必装的工作流+模型管理插件 Workspace Manager

一、Workspace Manager 安装方式 插件 Github 网址: https://github.com/11cafe/comfyui-workspace-manager 如果你没有安装 Workspace Manager 插件,可以通过以下 2 种方式安装: ① 通过 ComfyUI Manager 安装(推荐&#xff0…

机器,学习没有捷径

1 捷径学习 1.1 你捷径学习了么 深度学习因为其优异的学习能力,已经成为推动人工智能发展当之无愧的主力军。深度学习在NLP和CV等不同的场景下都展现了优异的能力。但深度学习也存在一个与生俱来的问题:捷径学习。 捷径学习中的捷径表示的是一种有缺陷…

yolov8通过训练完成的模型生成图片热力图--论文需要

源代码来自于网络 使用pytorch_grad_cam,对特定图片生成热力图结果。 安装热力图工具 pip install pytorch_grad_cam pip install grad-cam# get_params中的参数: # weight: # 模型权重文件,代码默认是yolov8m.pt # c…

2024高校网络安全管理运维赛题目--复现+题目+wp

比赛官网 比赛官网 部分writeup Signin 如图所示GIF提取,然后简单的ROT13 flag{welcome-to-signin-quiz} 邮件 ----如图所示简单的base64 邮件flag{WeLCoMeto} 邮箱flag{phishHUntInG} Babyre 解析:放到IDA分析,看伪代码 得到AncsA6g…