LLM提示工程的技巧

1. 从简单开始(Start Simple)

避免在一开始就增加太多的复杂性。 从简单的提示开始,然后在后续提示中添加更多信息和上下文。 这样,提示就是一个迭代过程,提示在此过程中进一步发展。 从简单的开始,就有足够的空间进行实验和实践,以达到最佳结果。

2. 清晰简洁(Be Clear and Concise)

提示语言最好不含任何行话。 坚持使用简单的词汇并专注于提供直接的指示。 尽量避免使用 OpenAI 所说的“空洞的描述”。 任何不必要的文字都可能分散法学硕士手头任务的注意力。

3. 具体的(Be Specific )

在提示交互中,为模型提供给出响应所需的一切信息。 在上面的幼儿示例中,更有效的方法可能是为他们拿着的物品命名,带他们走到垃圾桶,向他们展示如何将其扔进去,然后庆祝成功。 就法学硕士而言,这种方法涉及添加描述性和上下文信息来说明所需的结果。 在某些情况下,这种程度的特异性最终可能与讲故事非常相似。 详细说明所需的背景、结果、长度、格式和风格。 解释某种情况之前和之后发生的情况。 描述所涉及的利益相关者。 这些步骤可能看起来很广泛或与前两个步骤相矛盾,但是阶段设置得越彻底,模型就越能理解参数。

4. 注意结构(Consider the Structure)

对于人类和大语言模型来说,巨大的、不间断的文本块都很难理解。标点符号和段落样式对于人类读者和大语言模型来说都起着至关重要的作用。 使用项目符号、引号和换行符可以帮助模型更好地理解文本,并防止断章取义。

5. 限制无关令牌(Limiting Extraneous Tokens)

一个常见的挑战是在没有无关标记的情况下生成响应(例如: "Sure! Here's more information on...")。

通过组合角色、规则和限制、显式指令和示例,可以提示模型生成所需的响应。

You are a robot that only outputs JSON.
You reply in JSON format with the field 'zip_code'.
Example question: What is the zip code of the Empire State Building?
Example answer: {'zip_code': 10118}
Now here is my question: What is the zip code of Menlo Park?

# "{'zip_code': 94025}"

6. 关注“该做”而不是“不该做” (Focus on the "Do's" not the "Don'ts")

当世界充满可能性时,只从可用选项列表中划掉一两件事并不是很有帮助。 即使有一些选项不可用,本质上仍然存在无限数量的选项。

回到幼儿的例子——如果成人和孩子在一起的环境中,他们不希望孩子触摸附近的物体,因为这些物体易碎、肮脏或禁止进入,那么简单地指导孩子接触附近的物体并不是很有帮助或有效的。 孩子:“别碰任何东西。” 很有可能,这个指令会激发他们触摸周围一切的欲望,因为好奇心会占据他们的最佳位置,他们想知道把手放在哪里。 更有效的选择是开玩笑地指导他们把手放在手上或放在口袋里。 该指示为他们提供了明确且可实现的任务。 

与幼儿一样,法学硕士对“该做”的反应比“不该做”更积极。 通过提供有限的指令,法学硕士可以学习所需的行为,而不会出现任何混乱、分心或神秘感。

7. 使用引导词(Use Leading Words)

现在,是时候探索提示,而不仅仅是提供行为指令,而是专注于教模型推理。 引导词对于指导模型采用更有效的方法解决问题很有用。 通过在提示末尾写入特定单词,将模型推向特定格式。 例如,如果用户希望模型通过用Python编写来响应,他们可以在提示符末尾添加“import”。 同样,通过提供“think step by step”的提示,模型被迫将解决方案分解为多个步骤,而不是仅仅抛出一个大的猜测。

8. 举多个例子(Use Few Shot Prompting )

要使多个例子提示,首先了解举例子提示非常重要。 没有例子的提示仅由一项指令和一项请求组成。 然而,没有例子的编程并不总是有效。 它通常仅在模型已经准确理解该概念时才有效。 当模型不熟悉手头的概念时,举例子可以帮助模型解释概念。 

9. 使用思维链提示(Use Chain of Thought Prompting)

当Few Shot提示未能达到预期效果时,思路链(CoT)提示就是下一个合乎逻辑的步骤。 CoT 包括向法学硕士提供一个初始问题,然后通过一系列自然语言推理步骤得出答案。 从本质上讲,CoT 提示要求用户将一项大任务分解为遵循逻辑进展的较小块。 虽然与少量提示有点相似,但 CoT 提示利用线性步骤来教授推理并鼓励法学硕士解释其推理。

10. Retrieval-Augmented Generation

检索增强生成(RAG)描述了在提示中包含从外部数据库检索的信息的做法。 这是将事实纳入 LLM 申请的有效方法,并且比微调更经济,微调也可能对基础模型的功能产生负面影响。

这可以像查找表一样简单,也可以像包含公司所有知识的矢量数据库一样复杂:

Given the following information about temperatures in Menlo Park:
2023-12-11 : 52 degrees Fahrenheit
2023-12-12 : 51 degrees Fahrenheit
2023-12-13 : 55 degrees Fahrenheit
What was the temperature in Menlo Park on 2023-12-12?

# Sure! The temperature in Menlo Park on 2023-12-12 was 51 degrees Fahrenheit.

What was the temperature in Menlo Park on 2023-07-18 ?

# Sorry, I don't have information about the temperature in Menlo Park on 2023-07-18. The information provided only includes temperatures for December 11th, 12th, and 13th of 2023.

11. 程序辅助语言模型

LLM本质上不擅长执行计算。 虽然法学硕士不擅长算术,但他们非常擅长代码生成。 程序辅助语言通过指示LLM编写代码来解决计算任务来利用这一事实。

Python code to calculate: ((-5 + 93 * 4 - 0) * (4^4 + -7 + 0 * 5))

Here is the Python code to calculate the given expression:

((-5 + 93 * 4 - 0) * (4**4 + -7 + 0 * 5))

# Calculate the expression inside the parentheses
a = -5 + 93 * 4 - 0
b = 4**4 + -7 + 0 * 5

# Multiply a and b
result = a * b

# Print the result
print(result)

12. 自我一致性(Self-Consistency)

LLM是概率性的,因此即使使用思想链,一代人也可能会产生不正确的结果。 自我一致性通过从多代中选择最常见的答案来提高准确性(以更高的计算成本为代价):

John found that the average of 15 numbers is 40.
If 10 is added to each number then the mean of the numbers is?
Report the answer surrounded by three backticks, for example: ```123```

运行上述几次并采用最常见的返回值作为答案将利用self-consistency方法。

13. 使用思维树提示(Use Tree-of-Thought Prompting)

思想树提示是一种新兴方法,目前仍在研究以了解其有效性。 作为 CoT 的下一步,思想树提示反映了涉及多个利益相关者的组织决策过程。 

参考资料

https://llama.meta.com/docs/how-to-guides/prompting/

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

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

相关文章

第十二章:C# 循环

0. 简介 循环语句用于重复执行代码块,直到满足特定条件。C#提供了多种循环语句,包括for循环、while循环和do-while循环。掌握这些循环语句有助于编写高效和简洁的代码。 1. for 循环 for循环用于在已知迭代次数的情况下重复执行代码块。for循环的语法包括初始化语句、条件…

UniApp中,在页面显示时触发子组件的重新渲染

在UniApp中,要在页面显示时触发子组件的重新渲染,可以利用生命周期钩子函数来实现。具体来说,可以在页面的onShow生命周期钩子中调用子组件的方法或者改变子组件的props,从而触发子组件的重新渲染。 首先,确保子组件有…

haploview单倍型分析

只需要vcf文件和候选区间信息。按照下面的代码逻辑即可完成分析。 awk -F"\t" {if($1~/^#/){print $0}else{if($1"Chr_23" && $2>6810142 && $2<6830142){print $0}}} All.SNP.filt.recode.vcf > ud10 awk -F"\t" {p…

HTML静态网页成品作业(HTML+CSS)——川西旅游介绍网页(2个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有2个页面。 二、作品演示 三、代…

【C++】:string类底层的模拟实现

目录 引言1&#xff0c;构造函数2&#xff0c;析构函数3&#xff0c;取出字符串的地址4&#xff0c;计算有效数据个数5&#xff0c;[ ]运算符重载6&#xff0c;简单迭代器7&#xff0c;预开空间(扩容)8&#xff0c;尾插一个字符9&#xff0c;尾插一个字符串10&#xff0c;运算符…

互联网十万个为什么之什么是虚拟化?

虚拟化是在一台物理计算机上同时运行多个虚拟操作系统实例的技术。虚拟操作系统上运行的这些实例被称为虚拟机&#xff08;Virtual Machine&#xff09;或者客户机&#xff08;Guest Machine&#xff09;。每个虚拟机都具备完整的硬件抽象&#xff0c;包括CPU、内存、网络适配器…

【408精华知识】时钟周期、机器周期、总线周期、指令周期、存取周期还傻傻分不清?

在做题时&#xff0c;我们经常能遇到关于“周期”的表述&#xff0c;比如时钟周期、机器周期、总线周期、指令周期、存取周期&#xff0c;类似的表述让我们很容易迷茫&#xff0c;那么接下来我们就看看它们到底是什么、有什么区别&#xff1f; 周期特点时钟周期也称为CPU时钟周…

图片数据增强-resize(不同插值)、各种模糊

各种不同的模糊处理 import os import cv2def apply_blur_to_images(input_folder_path, output_folder_path):# 遍历文件夹下的所有文件for filename in os.listdir(input_folder_path):# 检查文件类型是否为图片if filename.endswith(.jpg) or filename.endswith(.jpeg) or …

手算示例:在神经网络中进行后门攻击及验证

手算示例&#xff1a;在神经网络中进行后门攻击及验证 一、神经网络架构二、初始化参数三、数据集干净数据&#xff08;原始数据&#xff09;带后门数据&#xff08;污染数据&#xff09; 训练步骤四、示例前向传播&#xff08;干净数据&#xff09;计算损失&#xff08;干净数…

每天五分钟深度学习框架pytorch:tensor张量的维度转换大全

本文重点 在深度学习中比较让人头疼的一点就是矩阵的维度,我们必须构建出符合神经网络维度的矩阵,只有将符合要求的矩阵放到神经网络中才可以运行神经网络,本节课程我们将学习以下tensor中维度的变化。 view和shape View和shape,这两个方法可以完成维度的变换操作,而且使…

【C语言实现TCP通信】

要在C语言中实现TCP通信&#xff0c;您可以遵循以下步骤&#xff1a; 创建Socket&#xff1a;使用socket()函数创建套接字&#xff0c;指定协议族为AF_INET&#xff08;IPv4&#xff09;或AF_INET6&#xff08;IPv6&#xff09;&#xff0c;类型为SOCK_STREAM表示使用TCP协议。…

【相机标定系列】【相机模型】SLAM 中常用的相机模型畸变模型总结

Overview 鱼眼镜头的成像原理分类&#xff1a; Dioptric cameras&#xff0c;通过透镜来实现&#xff0c;主要是折射 Catadioptric cameras&#xff0c;使用一个标准相机加一个面镜&#xff08;Shaped mirror&#xff09; polydioptric camera&#xff0c;通过多个相机重叠视…

npm的基本命令和用法

1. 安装与初始化 安装npm 首先&#xff0c;确保你的系统中已安装了Node.js&#xff0c;因为npm随Node.js一同分发。访问Node.js官网下载并安装适合你操作系统的版本。安装完成后&#xff0c;在终端或命令提示符中输入以下命令来验证安装&#xff1a; 1$ node -v 2$ npm -v …

[STM32-HAL库]ADC采集-DMA中断采集-平均值滤波-STM32CUBEMX开发-HAL库开发系列-主控STM32F103C8T6

目录 一、前言 二、实现步骤 1.STM32CUBEMX配置 2.Keil工程程序设计 三、结语 一、前言 本文通过STM32CUBEMX实现对ADC的数据采集和滤波操作&#xff0c;帮助各位开发者完成与模拟量输入的采集工作。 二、实现步骤 1.STM32CUBEMX配置 以STM32F103C8T6为例&#xff0c;打开S…

3D 生成重建015-nerf2mesh从神经辐射场中提取mesh和纹理!

3D 生成重建015-nerf2mesh从神经辐射场中提取mesh和纹理&#xff01; 文章目录 0 论文工作1 论文方法2 效果 0 论文工作 NeRF2Mesh 提出了一种从多视角 RGB 图像重建纹理表面网格的新方法。它克服了传统 NeRF 模型的局限性&#xff0c;由于其隐式表示&#xff0c;传统 NeRF 模…

高斯分步正态分布

高斯分布&#xff0c;也称为正态分布&#xff08;Normal Distribution&#xff09;&#xff0c;是统计学和概率论中最重要的分布之一。它由德国数学家卡尔弗里德里希高斯&#xff08;Carl Friedrich Gauss&#xff09;首先系统研究并命名。以下是关于高斯分布的详细介绍&#x…

基于 Pre-commit 的 Python项目代码风格统一实践

背景信息 统一代码风格首先需要定义参照的规范&#xff0c;每个团队可能会有自己的规范&#xff0c;我们选择的规范是 yapf mypy isort&#xff0c;如果保证所有的研发人员都遵循相关规范呢&#xff1f; 鼓励 IDE 中对应的插件的安装&#xff0c;通过直接对应的插件&#x…

bootstrap实现天平效果

之前提到了&#xff0c;最近&#xff0c;孩子的幼儿园让家长体验“半日助教活动”&#xff0c;每个家长需要讲授15-20分钟的课程。作为一名程序员&#xff0c;实在没有能教的课程&#xff0c;只能做了一个小游戏&#xff0c;带着小朋友们熟悉数字。 在上一章博客中&#xff0c…

【读书】读书笔记——理科生的视角:底层逻辑+数学之美

1&#xff0c;底层逻辑1&#xff08;看清这个世界的底牌&#xff09; 刘润 著 0&#xff09;什么是底层逻辑&#xff1f; 底层逻辑是&#xff1a;事物之间共同点、变化背后不变的东西事&#xff1b;看清事物的本质&#xff0c;才能在复杂变化中从根本上解决问题。 1&#x…

【Java继承】(超级详细!!!)

【Java继承】&#xff08;超级详细&#xff01;&#xff01;&#xff01;&#xff09; 1、 继承的概念2 、继承的语法3、 父类成员访问3.1 子类中访问父类的成员变量3.2 子类中访问父类的成员方法 4、 super关键字5 、子类的构造方法6、 继承关系上的执行顺序7、protected 关键…