26 种 prompt 套路,驯服大模型

news2024/10/6 20:37:50

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。

针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。

总结链接如下:

《大模型面试宝典》(2024版) 发布!

喜欢本文记得收藏、关注、点赞。更多实战和面试交流,也欢迎与我们交流


使用自然语言前缀(prefix)或提示(prompt)来引导语言模型行为和输出的想法早在GPT-3和ChatGPT时代之前就已出现。2018年,Fan等人首次在生成式AI的语境中使用了prompt。此后,Radford等人在2019年发布的GPT-2中也采用了prompt。

不过,prompt的概念可以追溯到更早的一些相关概念,如控制码(control code)和写作提示(writing prompt)。而"prompt engineering"这一术语则是在2021年前后由Radford等人和Reynolds & McDonell等人提出的。

有趣的是,早期对prompt的定义与当前普遍理解略有不同。比如在2020年的一项工作中,Brown等人给出了这样一个prompt示例:“Translate English to French:llama”,他们认为其中的"llama"才是真正的prompt,而"Translate English to French:“是一个"任务描述”。相比之下,包括本文在内的大多数近期工作都将输入给语言模型的整个字符串视为prompt。

利用prompt来驾驭语言模型完成各类任务的技术范式经历了从概念萌芽到逐步成熟的过程。随着GPT-3等大规模语言模型的问世,prompt engineering迅速成为了自然语言处理领域的研究热点,并衍生出诸多创新方法。

Prompt的六大构成要素

  1. 指令(Directive):这是Prompt的灵魂所在。通过精心设计的指令,我们可以向模型传达任务的核心诉求。举个例子,如果我们想要生成一篇关于春天的诗歌,可以使用"请写一首歌颂春天美好的诗"这样的指令。指令的表述要明确、具体,避免歧义。

  2. 示例(Example):这是In-Context Learning的关键。通过在Prompt中提供几个精选的示例,我们可以让模型快速理解任务的输入输出格式和要求。比如,在情感分类任务中,我们可以提供几个样本文本及其情感标签(正面/负面),让模型学会判断情感倾向。示例要典型、多样,覆盖任务的主要场景。

  3. 格式控制(Output Formatting):这是规范模型输出的利器。通过格式控制标记,我们可以让模型以特定的格式组织输出内容,如生成CSV格式的表格、Markdown格式的文档等。例如,在数据分析任务中,我们可以要求模型以表格形式输出统计结果,每一行对应一个指标,用逗号分隔。

  4. 角色指定(Role):这是激发模型创造力的神奇钥匙。通过为模型赋予一个虚拟的身份,我们可以让它以特定的视角、风格生成内容。比如,我们可以让模型扮演一位历史学家,以严谨的笔调评述一段历史事件;也可以让它化身为一名诗人,用优美的语言描绘大自然的风光。

  5. 风格指令(Style Instruction):这是调控模型语言风格的调色板。通过风格指令,我们可以要求模型以特定的语气、情感倾向、字数限制等生成内容。例如,我们可以指示模型用严肃的口吻撰写一份商业报告,或是用幽默风趣的笔调创作一个段子。

  6. 补充信息(Additional Information):这是为模型提供背景知识的补给站。很多任务需要一定的领域知识作为辅助信息。比如,在撰写一篇医学论文时,我们可以为模型提供一些疾病的定义、治疗方案等背景资料,帮助模型更好地理解和表述主题。

26 种 prompt 套路

此外,还有大佬整理了26 种 prompt 套路,觉得挺有用,以此分享给大家。

图片

论文地址:
https://arxiv.org/abs/2312.16171

相关代码:
https://github.com/VILA-Lab/ATLAs

  1. 如果你想要简洁的回答,不用太客气,直接说就行,不用加上“请”、“如果你不介意”、“谢谢”、“我想要”等客套话。

  2. 在提问时说明目标受众,例如,告诉 LLM 你的受众是该领域的专家。

  3. 把复杂的任务分成几个简单的小问题,逐步解决。

  4. 用肯定的语气说“做某事”,避免用否定语气说“不要做某事”。

  5. 当你需要更清楚或深入了解某个话题时,可以这样提问:

    • 用简单的语言解释[具体话题]。

    • 向我解释,就像我 11 岁一样。

    • 向我解释,就像我是[领域]的新手一样。

    • 用简单的英文写[文章/文本/段落],就像你在向 5 岁的小孩解释。

  6. 加上“如果有更好的解决方案,我会奖励 xxx”。

  7. 用具体的例子来提问(即使用几个示例来引导)。

  8. 在你的提问前写上“###指示###”,如果相关的话,再加上“###示例###”或“###问题###”,然后再写你的内容。用空行分隔指示、示例、问题、背景和输入数据。

  9. 使用“你的任务是”和“你必须”这样的短语。

  10. 使用“你将受到惩罚”这样的短语。

  11. 使用“像人一样自然地回答问题”这样的短语。

  12. 用引导词,比如“一步步来思考”。

  13. 在提问中加上“确保你的回答没有偏见,避免刻板印象”。

  14. 让 LLM 向你提问,直到它有足够的信息来回答你。例如,“从现在起,请你问我问题,直到你有足够的信息……”。

  15. 如果你想测试对某个话题的理解,可以这样说:“教我[定理/话题/规则],最后加个测试,等我回答后告诉我是否正确,但不要提前给答案。”

  16. 给 LLM 指定一个角色。

  17. 使用分隔符。

  18. 在提问中多次重复某个特定的词或短语。

  19. 将链式思维(CoT)和少量示例的提示结合使用。

  20. 使用输出引导语,在你的提问结尾加上预期回答的开头部分。

  21. 想写详细的文章、段落或文本时,可以这样说:“请为我写一篇详细的[文章/段落],内容涉及[话题],并加入所有必要的信息。”

  22. 如果你要修改特定文本但不改变风格,可以这样说:“请修改用户发送的每个段落,只需改进语法和词汇,使其听起来自然,但保持原有的写作风格,确保正式的段落仍然正式。”

  23. 当你有复杂的代码提示需要分成不同文件时,可以这样说:“从现在起,每当你生成跨多个文件的代码时,生成一个[编程语言]脚本,以自动创建指定的文件或修改现有文件以插入生成的代码。”然后提问。

  24. 当你想用特定的词、短语或句子来开始或继续一段文字时,可以使用以下提示:“我提供给你开头部分[歌词/故事/段落/文章…]: [插入歌词/词语/句子]。请根据提供的词语完成它,并保持一致的流畅性。”

  25. 明确指出模型必须遵循的要求,以关键词、规则、提示或指令的形式。

  26. 想写与提供的样本相似的文本时,可以这样说:“请根据提供的段落[/标题/文本/文章/答案]使用相同的语言。”

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

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

相关文章

微服务中的相关概念

Eureka Eureka 是由 Netflix 开发的一个服务发现和注册中心,广泛应用于微服务架构中。Eureka 主要用于管理和协调分布式服务的注册和发现,确保各个服务之间能够方便地找到并通信。它是 Netflix OSS(Netflix Open Source Software&#xff09…

Java基础 - 练习(二)打印菱形

Java基础练习 打印菱形&#xff0c;先上代码&#xff1a; // 方法一&#xff1a;基础&#xff0c;好理解 public static void diamond() {//控制行数for (int i 1; i < 4; i) {//空格的个数for (int k 1; k < 4 - i; k) {System.out.print(" ");}//控制星星…

【科研必备神器】人口迁徙大数据科研辅助利器安装使用教程

今天&#xff0c;给大家介绍一款用于对人口迁徙大数据进行分析的神器--人口迁徙数据解析器&#xff0c;可以获取对目标城市迁入、迁出的迁徙数据详情&#xff0c;如&#xff0c;排名前100名的迁徙来源地的迁徙时间、城市名、省份名及迁徙比例。下面&#xff0c;给大家介绍下这款…

Google推出开源代码大模型CodeGemma:AI编程新纪元,代码自动完成和生成技术再升级

论文标题: CodeGemma: Open Code Models Based on Gemma机构: Google LLC论文链接: https://arxiv.org/pdf/2406.11409.pdf CodeGemma模型概述 CodeGemma是基于Google DeepMind的Gemma模型系列&#xff08;Gemma Team et al., 2024&#xff09;开发的一系列开放代码模型。这些…

RK3588/算能/Nvidia智能盒子:加速山西铝业智能化转型,保障矿业皮带传输安全稳定运行

近年来&#xff0c;各类矿山事故频发&#xff0c;暴露出传统矿业各环节的诸多问题。随着全国重点产煤省份相继出台相关政策文件&#xff0c;矿业智能化建设进程加快。皮带传输系统升级是矿业智能化的一个重要环节&#xff0c;同时也是降本增效的一个重点方向。 △各省份智能矿山…

Linux中DNS搭建

文章目录 一、DNS介绍1.1、DNS是什么1.2、DNS的工作原理1.3、DNS的域名结构 二、Bind介绍2.1、bind概述2.2、bind主要配置文件 三、DNS安装四、主要配置文件解析&#xff08;除/etc/named.conf&#xff09;4.1、/etc/named.rfc1912.zones4.2、/etc/rc.d/init.d/named4.3、/etc/…

git idea分支cherry-pick

git idea分支cherry-pick cherry-pick请注意操作前更新代码&#xff01;&#xff01;&#xff01;操作步骤 cherry-pick cherry-pick 挑拣樱桃&#xff0c;对应在分支开发中就是把提交记录从A分支挑拣到B分支 请注意操作前更新代码&#xff01;&#xff01;&#xff01; 操作…

kettle从入门到精通 第七十一课 ETL之kettle 再谈http post,轻松掌握body中传递json参数

场景&#xff1a; kettle中http post步骤如何发送http请求且传递body参数&#xff1f; 解决方案&#xff1a; http post步骤中直接设置Request entity field字段即可。 1、手边没有现成的post接口&#xff0c;索性用python搭建一个简单的接口&#xff0c;关键代码如下&#…

JavaFX按钮

当用户单击按钮时&#xff0c;JavaFX Button类可以触发事件。Button类扩展了Labeled类&#xff0c;可以显示文本&#xff0c;图像或两者都可以。 以下代码显示了如何向Button添加单击操作侦听器。 import javafx.application.Application; import javafx.event.ActionEvent; im…

[14] CUDA_使用Opencv处理图像

CUDA_使用Opencv处理图像 1. Opencv中的图像表示 Opencv 提供了Mat 类来存储图像&#xff0c;如下&#xff1a; cv::Mat img; imgcv::imread("cameraman.tif);定义图像的示例&#xff1a; //定义单通道图像 cv::Mat img(6,6,CV_8UC1); //32位浮点型 Mat img2(256,256,…

异步爬虫:aiohttp 异步请求库使用:

使用requests 请求库虽然可以完成爬虫业务&#xff0c;但是对于异步任务来说&#xff0c;它是做不到的&#xff0c; 这时候我们需要借助 aiohttp 异步请求库来完成异步爬虫的编写&#xff1a; 话不多说&#xff0c;直接看示例&#xff1a; 注意&#xff1a;楼主使用的python版…

MyBatis逆向工程和MyBatisX插件的使用

文章目录 1.ORM思维2.逆向工程3.MyBatisX插件的使用 1.ORM思维 ORM&#xff08;Object-Relational Mapping&#xff0c;对象-关系映射&#xff09;是一种将数据库和面向对象编程语言中的对象之间进行转换的技术。它将对象和关系数据库的概念进行映射&#xff0c;最后我们就可以…

同三维T80006EH单路高清HDMI编码器

同三维T80006EH单路高清HDMI编码器 1路HDMI输入&#xff0c;1路3.5音频输入和输出&#xff0c;支持高清1080P60&#xff0c;支持SD卡录制 支持可解1路网络音频流输出&#xff0c;双向互动 一、产品简介&#xff1a; T80006EH高清编码器&#xff08;采集盒&#xff09;是一款…

【Linux】环境设置MySQL表名忽略大小写

目录 说明 一、摘要 二、查看服务器上MySQL情况 方式一&#xff1a;通过Linux方式 方式二&#xff1a;借助可视化工具&#xff08;Navicat&#xff09; 三、MySQL设置忽略表名大小写的参数&#xff08;lower_case_table_names&#xff09; 四、网上解决方案 方法一&…

卫士通电科网安安全IpSec网关Ukey开发对接

官方公开的开发文档,有几个坑,着重说一下踩坑的记录过程。 1、通过官方的客户端接口模拟程序获取前端参数:随机数和token 2、java程序调用官方sdk,postman请求测试: 3、贴出关键的java集成类: import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; impor…

玄机平台流量特征分析-常见攻击事

前言 熟悉常见的攻击流量特征&#xff0c;我们就可以通过主机的一个流量情况来判断主机遭受了何种攻击。这里来看看玄机平台的一道题目。 步骤1.1 这里需要我们找出恶意扫描者&#xff0c;也就是黑客的ip。下载好附件之后用wiresharke打开&#xff0c;直接筛选http协议的流量…

多路h265监控录放开发-(1)建立head窗口并实现鼠标拖动整个窗口

头文件&#xff1a; //鼠标事件 用于拖动窗口//一下三个函数都是QWidget的可重载成员函数void mouseMoveEvent(QMouseEvent* ev) override;void mousePressEvent(QMouseEvent* ev) override;void mouseReleaseEvent(QMouseEvent* ev) override; 源文件&#xff1a; / /// 鼠标…

Linux---系统的初步学习【 项目三 磁盘管理与文件系统】

项目三 磁盘管理与文件系统 3.1 项目知识准备 3.1.1 硬盘 ​ 如果从存储数据的介质上来区分&#xff0c;硬盘可分为机械硬盘&#xff08;Hard Disk Dirve&#xff0c;HHD&#xff09;和固态硬盘&#xff08;Solid State Disk&#xff0c;SSD&#xff09;&#xff0c;机械硬盘…

用户需求分析揭秘:最佳实践与策略

大多数产品团队都有自己处理客户需求的一套流程。但是那些潜在的客户和他们的需求呢&#xff1f;如果在产品管理上已经有一定的资历&#xff0c;很可能对此见惯不怪了。 通常&#xff0c;这些需求是销售人员跑来告诉你的&#xff0c;大概就是说&#xff1a;“超棒的潜在客户一…

Datakit管理openGauss6.0集群,监控运维超方便

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复&#xff0c; 安装迁移&#xff0c;性能优化、故障…