Prompt Engineering for Large Language Models

题目

大型语言模型的快速工程

在这里插入图片描述

简介

    随着 OpenAI 的 ChatGPT 和 Google 的 Bard 等软件的普及,大语言模型(LLM)已经渗透到生活和工作的许多方面。例如,ChatGPT 可用于提供定制食谱,建议替换缺失的成分。它可用于起草研究提案、用多种编程语言编写工作代码、在语言之间翻译文本、协助政策制定等等(Gao 2023)。用户通过“提示”或自然语言指令与大型语言模型进行交互。精心设计的提示可以带来明显更好的输出。在这篇评论中,将解释 LLM 即时工程的常见策略。此外,还将讨论 LLM 提示工程的注意事项、推荐资源和当前研究方向。将不会涵盖基于微调的即时工程策略。本文的目标是向非技术受众介绍实用且经过验证的即时工程技术。

    “逐步思考” 最著名(且易于实施)的提示工程技术之一就是简单地将“逐步思考”添加到提示末尾。东京大学和谷歌的研究人员发现,添加这句话可以提高 GPT-3(text-davinci-002 模型)在多项任务上的准确性。例如,它将 MultiArith 测试的准确率从 17.7% 提高到 78.7% (Kojima 2022)。多算术问题是需要多个步骤才能解决的算术问题。Prystawski 和合作者提出了“一步一步思考”为何以及如何如此有效的解释(Prystawski 2023)。据传闻,“一步一步思考”对于更先进的 GPT 模型(如 GPT-4)的帮助较小(增加的价值较少)。

在这里插入图片描述

图 1. 提示“一步一步思考”后的 GPT-4 响应示例

少样本学习(Few-shot Learning)

    少样本学习(Few-shot Learning)是“给LLM提供你想要的例子”的一种奇特方式。通过提供您想要的输出示例,LLM更有能力产生所需的输出(Zhao 2021,Brown 2020)。这可能部分归因于这样一个事实:提示通常有许多可能的有效输出(未确定),因此提供您正在寻找的内容的具体示例有助于限制潜在的输出空间。确保示例的多样性和平衡性非常重要。例如,假设您正在提示 GPT 执行情感分类任务(预测如果一个句子是肯定的还是否定的)。如果您提供了 8 个示例,其中 7 个是积极的,这可能会使 GPT 偏向于预测句子是积极的。此外,示例必须涵盖您感兴趣的场景,这一点很重要。例如,如果您仅使用标记为“积极”和“消极”的示例来指导 GPT,它可能不会将句子分类为中性,而是强制将它们分为“积极”和“消极”。 ”或“负面”。

在这里插入图片描述

图 2. GPT-4 提供的响应很长,但格式不符合要求。这也会消耗更多的代币(花费更多的时间并增加成本)。

在这里插入图片描述

图 3。通过提供两个示例,GPT-4 理解提供了一个简洁的响应,将所提供的句子分配为“积极”。

思维链

    与“一步一步思考”类似,思维链提示引导LLM将复杂的任务分解为多个中间步骤(Wei 2022,Wang 2022)。它的灵感来自于人类解决复杂问题的方式:将问题分解为更简单的步骤。思维链提示提供了复杂问题的演练。例如,为了让LLM更好地解决数学应用题,用户提供了一个逐步完成的示例解决方案。这个想法是,LLM指的是解决新问题的逐步推理。一般来说,思维链提示对于解决复杂问题很有用,但对简单问题提供的好处很少或没有。研究表明,用新行分隔样本推理中的每个步骤比用句点分隔步骤可提供更好的结果 (Fu 2023)。
在这里插入图片描述

图 4.GPT-4 将遵循提示中提供的推理链并应用它们来解决复杂的多步骤问题。

要求代码

    虽然LLM很难准确地执行复杂的计算,但他们擅长编写可以执行复杂计算的代码。一个简单的策略是简单地要求LLM编写代码来解决问题,并在 Google Colab 或 Visual Studio Code 等开发环境中运行代码(Weng 2023)。然而,并非所有LLM都接受过编写代码的培训。此外,LLM往往更擅长广泛使用且已在互联网上广泛记录的编程语言,例如 Python。他们能够从训练数据中无数的 Python 示例中学习。相反,LLM在 OCaml 等较晦涩的语言方面往往较弱。然而,可以对特定编程语言的LLM进行微调,并扩充其训练数据集以包含更多特定编程语言的示例。
在这里插入图片描述

图 5。虽然 GPT-4 无法准确分解大数,但它可以轻松提供可以实现这一功能的 Python 代码。

角色提示

    一些用户在告诉LLM他们(指LLM)是相关领域的专家时报告了更好的结果(学习提示 2023)。例如,“你是编码专家。”当用户需要代码时,将被添加到提示符之前。以一种非常“挥手”的方式,一种理论认为,这种策略可以帮助LLM集中注意力并了解其知识的哪些部分可以“冒泡”到最高层。角色提示是一种简单的方法,可以推动LLM以特定的创作风格(例如作者的风格)生成文本。

在这里插入图片描述
在这里插入图片描述

图 6. GPT-4 以美国诗人 E. E. 卡明斯的风格写了一首诗,卡明斯以其独特的句法而闻名。

提示黑客攻击

    鉴于许多LLM(例如 ChatGPT)都经过审核和微调以防止生成露骨或有害内容,因此已经制定了许多策略来欺骗LLM绕过其限制。值得注意的是,用户能够让 Bing 的悉尼LLM生成有害内容并揭示隐藏指令(Warren 2023)。提示黑客或注入的另一个流行示例是“忽略之前的所有指令”并执行其他操作(Shane 2022)。这用于发现LLM在幕后使用的提示。然而,出于道德方面的考虑,以及这些黑客攻击通常会很快被修补并变得无关紧要,因此这里不会讨论这些即时黑客攻击。一些人认为LLM是否可以完全抵御即时黑客攻击或“即时注入”,这是一个悬而未决的问题。 Greshake 和合作者对不同类型的提示黑客进行了回顾(Greshake 2023)。

注意事项

    提示的主要限制之一是LLM的上下文长度,这本质上是LLM可以考虑和生成的输入量。上下文长度正在迅速增加,GPT-4 的上下文长度为 32,000 个令牌(约 24,000 个单词),而 Anthropic 的 Claude 的上下文长度为 100,000 个令牌(75,000 个单词)。一些用户报告说,由于提示中提供了更多令牌,性能下降。快速工程的另一个考虑因素是成本。例如,少量提示可能会使提示长度增加数倍,从而导致更高的成本。 OpenAI 的 GPT-4 模型每 1,000 个输入代币的成本为 0.03 美元,并且可以快速累加。在像LLM驱动的教育技术这样的商业应用中,简化提示以尽可能具有成本效益可能是一个优先事项。随着LLM变得更加高级(更多参数、更多训练数据),提示似乎变得不再那么重要。目前尚不清楚这种趋势是否会无限期地持续下去,或者提示是否总是有用的。最后,有很多可以基于薄弱基础的轶事提示工程建议。进行勤奋的研究并了解什么有效、什么无效非常重要。

推荐资源

Lilian Weng 的提示工程指南技术性更强,但有很多有用的示例和参考:https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/
学习 Prompting 的开源提示工程课程:https://learnprompting.org/docs/intro

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python-leetcode-使用最小花费爬楼梯

746. 使用最小花费爬楼梯 - 力扣(LeetCode) 解法 1:动态规划(O(n) 时间,O(n) 空间) class Solution:def minCostClimbingStairs(self, cost: List[int]) -> int:n len(cost)dp [0] * (n 1) # 额外多…

服务器IPMI用户名、密码批量检查

背景 大规模服务器部署的时候,少不了较多的网管和监测平台,这些平台会去监控服务器的性能、硬件等指标参数,为了便于管理和控制,则需要给服务器IPMI带外管理添加较多的用户,这就需要对较多的服务器检查所对应的IPMI用…

docker-compose部署开源堡垒机Orion-Visor——筑梦之路

git clone --depth1 https://github.com/dromara/orion-visorcd orion-visor docker compose pull# 配置,此处我保持默认cp .env.example .env# 启动进行数据库初始化docker compose up -d# 访问http://[ip]:8081进行登陆Adminer# 依次导入这些初始化sql orion-visor/sql/init-…

【大模型系列篇】DeepSeek开源周,解锁AI黑科技

🔥 Day1:FlashMLA —— GPU推理加速器 专为处理长短不一的AI推理请求而生,就像给Hopper GPU装上了智能导航,让数据在芯片上跑出3000GB/s的"磁悬浮"速度。✅ 已支持BF16格式|580万亿次浮点运算/秒FlashMLA G…

scala基础

Scala基础 scala基础Scala介绍第一个scala代码object和class的区别关键区别伴生类和伴生对象: 字节码解析在java中创建三个类 反编译代码编译User.class源码后的结果编译Emp.class源码后的结果 注释Scala类型推断&至简原则变量var和val之间的区别可变变量不可变…

智能家居遥控革命!昂瑞微HS6621EM:用「芯」定义AIoT时代的语音交互标杆

AIoT爆发期,遥控器为何成为智能家居的「隐形战场」? 随着Meta、苹果等巨头加速布局空间计算,智能家居生态正从「单一设备联网」向「全场景无感交互」跃迁。作为高频使用的入口设备,语音遥控器的性能直接决定用户体验天花板。昂瑞微…

绕过密码卸载360终端安全管理系统

一不小心在电脑上安装了360终端安全管理系统,就会发现没有密码,就无法退出无法卸载360,很容易成为一个心病,360终端安全管理系统,没有密码,进程无法退出,软件无法卸载,前不久听同事说…

MongoDB 笔记

一、基础概念 MongoDB 的特点是什么? MongoDB是一种NoSQL数据库,具有以下特点: 文档存储模型 MongoDB 使用 BSON(Binary JSON) 格式存储数据,数据以文档的形式组织,类似于JSON对象。文档可以包…

小程序Three Dof识别 实现景区AR体验

代码工程 GitCode - 全球开发者的开源社区,开源代码托管平台 dof

ABAP语言的动态程序

通过几个例子,由浅入深讲解 ABAP 动态编程。ABAP 动态编程主要通过 RTTS (Runtime Type Services) 来实现,包括 RTTI 和 RTTC: 运行时类型标识(RTTI) – 提供在运行时获取数据对象的类型定义的方法。运行时类型创建(R…

【安卓】BroadcastReceiver 动态声明为 RECEIVER_NOT_EXPORTED 后无法接收任何 Intent 的问题

一、问题起因 自 Android 14 (API 级别 34) 起,使用 context.registerReceiver(receiver, filter, flags) 动态注册广播接收器时,必须显式地声明 RECEIVER_NOT_EXPORTED 或 RECEIVER_EXPORTED 。 如果声明为 RECEIVER_EXPORTED ,任何第三方应…

unity pico开发二:创建基本的交互

文章目录 导入UnityXR Interaction ToolKit构建基础内容 导入UnityXR Interaction ToolKit 检查一下packagemanager,unityxr interactionToolkit是否自动导入 我们需要升级到一个不超过3.x的版本,因为pico还不支持3.x的内容 然后右侧samples里导入初始…

[STM32]从零开始的STM32 DEBUG问题讲解及解决办法

一、前言 最近也是重装了一次keil,想着也是重装了,也是去官网下载了一个5.41的最新版,在安装和配置编译器和别的版本keil都没太大的区别,但是在调试时,遇到问题了,在我Debug的System Viewer窗口中没有GPIO&…

学习threejs,使用ShaderMaterial自定义着色器材质

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.ShaderMaterial1.1.1…

查看ITHOR全部仿真家庭场景

1. 目标 按序号显示所有120个家庭场景统计单个场景里物体数量 2. 代码 import time from ai2thor.controller import Controller# 统计当前场景中的物体数量 def count_objects_in_scene(controller):objects controller.last_event.metadata["objects"]object_c…

ES6 特性全面解析与应用实践

1、let let 关键字用来声明变量,使用let 声明的变量有几个特点: 1) 不允许重复声明 2) 块儿级作用域 3) 不存在变量提升 4) 不影响作用域链 5) 暂时性死区 6)不与顶级对象挂钩 在代码块内,使用let命令声明变量之前&#x…

VSCode轻松调试运行C#控制台程序

1.背景 我一直都是用VS来开发C#项目的,用的比较顺手,也习惯了。看其他技术文章有介绍VS Code更轻量,更方便。所以我专门花时间来使用VS Code,看看它是如何调试代码、如何运行C#控制台。这篇文章是一个记录的过程。 2.操作 2.1 V…

【多模态】Magma多模态AI Agent

1. 前言 微软杨建伟团队,最近在AI Agent方面动作连连,前两天开源了OmniParser V2,2月26日又开源了Magma,OmniParser专注在对GUI的识别解析,而Magma则是基于多模态技术,能够同时应对GUI和物理世界的交互&…

spring Boot入门

目录 Spring Boot 概述 新建Spring Boot项目 方式一:使用Spring Initializr创建SpringBoot项目 方式二:使用Maven方式构建Spring Boot项目 Spring Boot 概述 简介 •Spring Boot是基于Spring框架开发的全新框架,其设计目的是简化Java…

手机隐私数据彻底删除工具:回收或弃用手机前防数据恢复

软件介绍 有这样一款由吾爱网友chenwangjun 原创开发的数据处理软件,名为 AndroidDiskClear。它的核心功能十分强大,能够将你手机里已经删除的各类文件,像图片、普通文件、文字信息等彻底清除干净,有效杜绝数据恢复类软件的二次恢…