LLM提示工程的技巧

news/2024/7/22 1:34:33/文章来源:https://blog.csdn.net/keeppractice/article/details/139248167
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.luyixian.cn/news_show_1053594.aspx

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

相关文章

小红书推流机制底层逻辑

小红书推流机制底层逻辑 很多做运营的朋友问小红薯怎么玩❓ 小红书的核心逻辑流量是不是玄学❓ 今天就来说说小红书的流量算法机制🔥 ①电脑审核 ②分配初始流量 ③增加流量 ④推荐结束

[Android]联系人-删除修改

界面显示 添加按钮点击,holder.imgDelete.setlog();具体代码 public MyViewHolder onCreateViewHolder(NonNull ViewGroup parent, int viewType) {//映射布局文件,生成相应的组件View v LayoutInflater.from(parent.getContext()).inflate(R.layout.d…

Leetcode—2769. 找出最大的可达成数字【简单】

2024每日刷题(139) Leetcode—2769. 找出最大的可达成数字 实现代码 class Solution { public:int theMaximumAchievableX(int num, int t) {return num t * 2;} };运行结果 之后我会持续更新,如果喜欢我的文章,请记得一键三连…

SwiftUI中EnvironmentObject的使用(多界面共享数据)

SwiftUI的EnvironmentObject是一个强大的工具,它允许你在多个视图之间共享数据(使用一个可观察对象)。当你有一个复杂的视图层次结构,并且需要在没有直接连接的视图之间共享相同的可观察对象时,它特别有用。 我们之前传递数据主要是通过init…

方正畅享全媒体新闻采编系统 binary.do SQL注入漏洞复现

0x01 产品简介 方正畅享全媒体新闻生产系统是以内容资产为核心的智能化融合媒体业务平台,融合了报、网、端、微、自媒体分发平台等全渠道内容。该平台由协调指挥调度、数据资源聚合、融合生产、全渠道发布、智能传播分析、融合考核等多个平台组成,贯穿新闻生产策、采、编、发…

Kubernetes核心组件Ingress详解

1.1 Ingress介绍 Kubernetes 集群中,服务(Service)是一种抽象,它定义了一种访问 Pod 的方式,无论这些 Pod 如何变化,服务都保持不变。服务可以被映射到一个静态的 IP 地址(ClusterIP&#xff09…

分类内按规则拆分一行变多行

Excel的A列是分类列,B列是由">"连接起来的多个字符串,可以看成是合并后的明细: AB1IDRule: Condition2470210642217Test3470251569449Doors & Hardware > Door Jambs> 119mm4470251602217Bathroom > Stone Tops &…

python爬虫之pandas库——数据清洗

安装pandas库 pip install pandas pandas库操作文件 已知在本地桌面有一名为Python开发岗位的csv文件(如果是excel文件可以做简单修改即可,道理是通用的) 打开文件: 打开文件并查看文件内容 from pandas import DataFrame import pandas as pd data_c…

使用ssh连接ubuntu

一、下载连接工具 常见的连接工具右fianlshell、xshell等等。在本文章中使用的finalshell,工具可以去官网上下载,官网下载。 二、Ubuntu中配置shh 1、使用下面指令更新软件包(常用于下载安装或更新软件时使用,更新到最新的安装…

音视频开发9 FFmpeg 解复用框架说明,重要API说明

一,播放器框架 二 常用音视频术语 容器/文件(Conainer/File): 即特定格式的多媒体文件, 比如mp4、flv、mkv等。 媒体流(Stream): 表示时间轴上的一段连续数据&#xff0…

【计算机毕业设计】基于SSM+Vue的线上旅行信息管理系统【源码+lw+部署文档】

目录 摘 要 第1章 绪论 1.1背景及意义 1.2 国内外研究概况 1.3 研究的内容 第2章 相关技术 2.1 Java简介 2.2 SSM三大框架 2.3 MyEclipse开发环境 2.4 Tomcat服务器 2.5 MySQL数据库 第3章 系统分析 3.1 需求分析 3.2 系统可行性分析 3.2.1技术可行性:技术背景 …

讯方·智汇云校助力多所高校斩获华为ICT大赛2023-2024全球总决赛佳绩

2024年5月26日,华为ICT大赛2023-2024全球总决赛闭幕式暨颁奖典礼在深圳举行。讯方技术14所合作院校的18支队伍在此次大赛中荣获系列大奖。 本届大赛为华为历届最大规模的线下比赛,共吸引了全球80多个国家和地区、2000多所院校、17万余名学生报名参赛&am…

MySQL进阶之(九)数据库的设计规范

九、数据库的设计规范 9.1 范式的概念9.1.1 范式概述9.1.2 键和相关属性 9.2 常见的范式9.2.1 第一范式9.2.2 第二范式9.2.3 第三范式9.2.4 第四范式9.2.5 第五范式(域键范式) 9.3 反范式化9.3.1 概述9.3.2 举例9.3.3 反范式化新问题9.3.4 通用场景 9.4 …

回文链表(快慢指针解法之在推进过程中反转)

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝抱怨深处黑暗,不如提灯前行…

@ConfigurationProperties结合Nacos配置动态刷新之底层原理分析

Hello,我是大都督周瑜,本文给大家分析一下ConfigurationProperties结合Nacos配置动态刷新的底层原理,记得点赞、关注、分享哦! 公众号:IT周瑜 应用背景 假如在Nacos中有Data ID为common.yml的配置项: m…

单调栈--

1.每日温度 那么单调栈的原理是什么呢?为什么时间复杂度是O(n)就可以找到每一个元素的右边第一个比它大的元素位置呢? 单调栈的本质是空间换时间,因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素,优点是整个数…

【前端学习——react坑】useState使用

问题 使用useState 时,例如 const [selectedId, setSelectedId] useState([false,true,false]);这样直接利用,无法引发使用selectedId状态的组件的变化,但是selectedId是修改了的 let tempselectedId;temp[toggledId]selectedId[toggledId…

前端学习--React部分

文章目录 前端学习--React部分前言1.React简介1.1React的特点1.2引入文件1.3JSX🍉JSX简介与使用🍉JSX语法规则 1.4模块与组件🍉模块🍉组件 1.5安装开发者工具 2.React面向组件编程2.1创建组件🍉函数式组件&#x1f349…

【从零开始学习RabbitMQ | 第二篇】如何确保MQ的可靠性和消费者可靠性

目录 前言: MQ可靠性: 数据持久化: Lazy Queue: 消费者可靠性: 消费者确认机制: 消费失败处理: MQ保证幂等性: 方法一: 总结: 前言: …

安全性基础知识

安全性基础知识 导航 文章目录 安全性基础知识导航一、网络攻击二、两类密码体制-对称密钥密码体制网络安全内容 三、数字签名与信息摘要四、数字信封五、PKI六、防火墙技术七、入侵检测系统八、计算机病毒九、常见的防病毒软件十、网络安全协议 一、网络攻击 二、两类密码体制…