sharemore少数派提示词或许需要工程,但提问一定需要智慧

Matrix 首页推荐 

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

文章代表作者个人观点,少数派仅对标题和排版略作修改。

在刚刚过去的 12 月,OpenAI 发布了一份提示词工程指南。这份文档列出了一些和大语言模型助手沟通的基本原则,包括指令要清晰、复杂任务要拆分、最好给出示例、给出操作流程等等。

这些基本规则,和今年 4 月份吴恩达教授的短课程相似——那门课叫《面向开发者的提示词工程》。不过,在吴恩达教授的课程中,介绍的是用大模型开发应用的基本原则,以及大模型的几类常见应用:总结、判断、转换、扩展。容易看出,其中并没有包括人们常见的使用大模型的方式:问答

人们希望大语言模型能直接给出答案。这是更为直觉的用法,或者说,人们希望能像使用搜索引擎那样使用大语言模型,或者像靠谱的人类助手相似,能够三言两语就完成沟通,而不是先做一堆准备工作,先写一篇小作文。

不过这可能难以在短期内实现。提示词工程(Prompt Engineering),目前还是有必要存在的。

prompt

prompt© 由 少数派 提供

捎带说明一下,本文主要讨论的是大语言模型中的提示词工程,因此文中没有使用「生成式人工智能」这个范围更大的术语,而全部都使用了「大语言模型」。

什么是提示词工程

没想到答案,就不要寻找题目。

但凡日常生活中接触到、使用过一些大语言模型产品的人,应该对提示词工程都不陌生。提示词工程是指通过设计和优化输入提示,引导大语言模型更有效、更精确地生成所需的内容。

prompt

prompt© 由 少数派 提供

@宝玉xp 设计了一段效果很好的翻译提示词:

你是一位精通简体中文的专业翻译,曾参与《纽约时报》和《经济学人》中文版的翻译工作,因此对于新闻和时事文章的翻译有深入的理解。我希望你能帮我将以下英文新闻段落翻译成中文,风格与上述杂志的中文版相似。

规则:

  • 翻译时要准确传达新闻事实和背景。
  • 保留特定的英文术语或名字,并在其前后加上空格,例如:「中 UN 文」。
  • 分成两次翻译,并且打印每一次结果:
  1. 根据新闻内容直译,不要遗漏任何信息
  2. 根据第一次直译的结果重新意译,遵守原意的前提下让内容更通俗易懂,符合中文表达习惯

本条消息只需要回复 OK,接下来的消息我将会给你发送完整内容,收到后请按照上面的规则打印两次翻译结果。

这段提示词中包含了角色扮演、规则设定,以及让大语言模型自行回顾和改善。显然,这和人类日常对话的方式不同。这也就意味着,提示词工程是一种需要学习才能掌握的技能——虽然门槛不高,但是还是要学习的。

这和人们期盼的「使用 AI 应该像和人聊天」,显然差距不小。

有一种观点认为,随着 AI 大模型的能力越来越强,对真实世界的理解越来越多,人们将会越来越容易使用自然语言与 AI 沟通,提示词工程将不再有用武之地。2022 年 9 月 13 日,OpenAI 的 Sam Altman 和 LinkedIn 的 Reid Hoffman 有一场对谈。Sam Altman 认为提示词工程是个短期需求:

「5 年后我们将不再需要提示词工程,或者只需在这方面做少量工作。将来的 AI 系统不会因为增补了某个特定词就会产生截然不同的输出,而是可以较好地理解自然语言,用户只需以文本和语音形式输入指令,即可让计算机完成图像生成、资料研究、心理咨询等复杂任务。」

「总的来说,用户只须使用自然语言就可以与计算机交互,当然,如果艺术家能想出更有创造性的描述,也自然就可以生成更好的图像。」

AI 大佬杨立昆也支持这种观点。他认为,之所以需要提示词工程,是因为现在的大语言模型的理解能力还比较弱。

Yann LeCun

Yann LeCun© 由 少数派 提供

Yann LeCun

Yann LeCun© 由 少数派 提供

而另一种观点则认为,考虑 AI 大模型的基本技术原理,提示词工程将会一直存在,而且将成为重要的技术,相当于大语言模型出现之前的编程技术一样。Sam Altman 似乎改变了自己的观点;2023 年 2 月 21 日,他发了一条 Twitter:「写出好提示词是一项高杠杆技能。」

Sam Altman

Sam Altman© 由 少数派 提供

这个观点和今年上半年的许多人相同。不少企业开始招聘「提示词工程师」,提示词工程课程、网站和插件纷纷涌现。虽然生成式人工智能的能力在不断提升,但它们仍然不能理解人类语言的真正含义。大语言模型的原理是统计和概率,而非真正意义上的理解。因此,即使能更好地处理自然语言,但在特定场景下生成高质量、精确的内容仍需精心设计的提示。

换言之,大语言模型学习了许多东西,也能做一些推理和判断,但是它不知道用户面临的具体情境。我们要使用大语言模型来解决问题,需要自己先整理好问题,把它精确描述出来——将存在于思想中、甚至自己意识不到的需求,转化为明确的文本请求。

这样可以解决两个问题:上下文和歧义。前者是因为问题背景的复杂,后者是因为人类语言的模糊。

真正的问题总是复杂的,而人们在日常沟通中已经习惯了双方共同默认的问题背景和情境——这就是为什么网上陌生人沟通往往会吵起来。而大语言模型并没有这些个人化的背景知识。复杂总需要在某个地方得到满足,或者是用户界面(想想拥有无数菜单和可选项的软件),或者是解决方案。ChatGPT 提供了一个简单的用户界面,于是复杂就转移到了解决方案上。结果就是,我们需要跟大模型明确说明它需要解决的问题。

除了这两个问题之外,还有一个更不容易解决的问题:幻觉。

大模型是场梦

世事一场大梦,人生几度秋凉。

今年剑桥词典选出的年度词是 hallucinate。这是个动词,意思是「产生幻觉」,特指大语言模型一本正经地胡说八道。

Cambridge Dictionary

Cambridge Dictionary© 由 少数派 提供

12 月初,OpenAI 的计算机科学家 Andrej Karpathy 写了篇短文,讨论了大语言模型的幻觉问题。他认为,本质上来看,大语言模型就是在做梦。幻觉不是大模型的问题,它是大模型的工作方式。或者说,它不是大语言模型的缺陷,而是大语言模型的特征。

Andrej Karpathy

Andrej Karpathy© 由 少数派 提供

It’s not a Bug, it’s a Feature!

Andrej Karpathy

Andrej Karpathy© 由 少数派 提供

如果把大语言模型视为光谱的一端,另一端则是搜索引擎。搜索引擎完全不做梦,它根据用户的输入内容精确查找,它没有幻觉,但也没有生成内容的能力。把大语言模型当成搜索引擎或者相反,都是错误的。

Karpathy 认为,当人们将大语言模型变成工作助手时,幻觉才成了需要解决的问题。人们需要引导大语言模型助手往正确的方向去做梦。也许检索增强生成(RAG, Retrieval-Augmented Generation)是个方向,但是它并非唯一方向。

提示词工程视角的问题视角

问题其实就是你期望的东西和你体验的东西之间的差别。

所以我们可以看出,所谓提示词工程,就是在理解大语言模型基本原理的基础上,尝试设计一个文本序列,让大语言模型产生更好的结果的一系列活动。

其核心是准确描述问题,限制产生的回应。膜拜提示词工程、背下提示词模板,都没什么意义。提示词会随不同的大语言模型而变,但是规则始终如一。-

neon-god

neon-god© 由 少数派 提供

更普适的技能,其实是问题表述——即识别、分析和界定问题。这是人类自古钻研的领域,早就有了很好的教材:《你的灯亮着吗?》《学会提问》《怎样解题》,等等等等。

今年 6 月的《哈佛商业评论》网站上有一篇文章《AI 提示词工程不是未来》,作者是伦敦国王学院的 Oguz A. Acar。他认为,在使用大语言模型时,应该从规划问题的角度来构建提示词。这包括几个步骤:问题识别、问题分解、问题重构、约束设计。

按照 Gerald M. Weinberg 的定义,问题是现状和理想之间的差距。描述理想中的目标,再描述现状,我们就得到了问题。有些问题简单具体,有些问题则宽泛得多。

对于宽泛的问题,就需要分解。澄清问题的本质和范围,将问题拆分成更小的可管理的子问题,尤其是当问题涉及多方面因素时更该如此。无论是「我怎样才能瘦 20 斤」还是「我怎样才能财务自由」,都不会有简单答案。

有时候,看待问题的角度决定了解决方案的数量和质量,《你的灯还亮着吗》第一章就提供了一个好例子。问题重构让我们在收集信息的过程中持续回顾问题,看看是否有其它看待问题的角度,甚至考虑最初问题的定义是否有偏差。

最后,我们要定义解决方案的输入、过程和输出来限制问题的边界,这会让大语言模型返回更合适的答案。提示词工程中的「Few-Shot Prompting」方法就是一种典型的约束设计方式,它通过举例来让大语言模型理解任务的要求。

没有明确定义的问题,即使是最复杂的提示词也无法得到优秀的结果。而若问题是定义清晰的,提示词在语言上的细微差别,可能并不那么重要。

我觉得,和大语言模型讨论并解决问题的过程和在论坛上求助有些相似,适用于技术论坛的提问规则也适用于它。所以,《提问的智慧》这篇已经有二十年历史的文章依然很有价值。这里是英文版,这里是翻译得很好的中文版。

一句话总结:尝试明确描述问题,一次把问题和想要的解决方案说清楚。

更远的未来

今天的企业已经开始部署和使用自己的大语言模型,例如 Amazon Web Services 的 Amazon Q。企业操纵大语言模型的两种主要方法是微调和 RAG;微调改变了大语言模型的行为和响应,RAG 则通过可信的上下文来补充用户的输入。

也许几年后,我们也可以用类似的方式,把自己的私人大语言模型变成随身分身。也许将来算力、算法、真实世界理解和人机交互等等都会有重大突破,我们无需提示词工程也能获得满意的解决方案。

sunset

sunset© 由 少数派 提供

但是基本规则不会变。2023 年 5 月 25 日,李彦宏在中关村论坛做了一场主题演讲:《大模型将改变世界》。他说,「10 年后,全世界有 50% 的工作会是提示词工程。」

时间会证明这句话是否正确。不过我觉得,他的下一句话才更关键:

「提出问题比解决问题更重要。」

作者注:本文图片除截图外,皆由 DALL·E 3 生成。

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

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

相关文章

代码随想录算法训练营第二十五天| 216.组合总和III,17.电话号码的字母组合

题目与题解 216.组合总和III 题目链接:216.组合总和III 代码随想录题解:216.组合总和III 视频讲解:和组合问题有啥区别?回溯算法如何剪枝?| LeetCode:216.组合总和III_哔哩哔哩_bilibili 解题思路&#xf…

数据结构和算法:图

图 图(graph)是一种非线性数据结构,由顶点(vertex)和边(edge)组成。可以将图 𝐺 抽象地表示为一组顶点 𝑉 和一组边 𝐸 的集合。 如果将顶点看作节点&#…

9.2-源码分析:Dubbo Remoting 层 Buffer 缓冲区

Buffer 是一种字节容器,在 Netty 等 NIO 框架中都有类似的设计,例如,Java NIO 中的ByteBuffer、Netty4 中的 ByteBuf。Dubbo 抽象出了 ChannelBuffer 接口对底层 NIO 框架中的 Buffer 设计进行统一,其子类如下图所示: …

Oracle数据库——子查询五

14.1子查询语法 子查询 (内查询) 在主查询之前一次执行完成。子查询的结果被主查询(外查询)使用 。范例一:谁的工资比 Abel 高? 第一:查询Abel的工资是多少。第二:比较大于这个工资的人数。 注意事项: 子查询要包含在括号内。将子查询放在比较条件的右侧。</

文件名目录名或卷标语法不正确:数据恢复策略与预防措施

一、文件名目录名或卷标语法不正确的现象 在日常使用电脑或移动设备时&#xff0c;我们经常会遇到“文件名目录名或卷标语法不正确”的错误提示。这种错误通常发生在尝试访问、修改或删除文件、目录或卷标时&#xff0c;系统会提示无法完成操作&#xff0c;因为文件名、目录名…

C++格式化输入和输出

格式化输入与输出 除了条件状态外&#xff0c;每个iostream对象还维护一个格式状态来控制IO如何格式化的细节。 格式状态控制格式化的某些方面&#xff0c;如整型值是几进制、浮点值的精度、一个输出元素的宽度等。 标准库定义了一组操纵符来修改流的格式状态。 一个操纵符…

电商系列之商详

> 插&#xff1a;AI时代&#xff0c;程序员或多或少要了解些人工智能&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家…

java解数独(力扣Leetcode37)

数独问题 力扣原题链接 问题描述 数独的解法需遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 数独部分空格内已填入了数字&#xff0c;空白格用.表示。 示例 示例&…

微服务监控:确保分布式系统的可观察性与稳定性

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 目录 一、前言二、微服务监控的重要性三、关键监控指标四、常用监控工具五、最佳实践六、结论 一、前言 在当前的软件开发领域&a…

const在指针中的作用以及*p在各种写法中分别代表什么含义

const在指针中起固定的作用&#xff0c;在不同的写法中其效果也有所区别&#xff0c;具体如下&#xff1a; 1、int* const p固定的是指针p指向的地址。 2、int const *p固定的是指针p指向地址中储存的内容。 例&#xff1a; 以上操作在编译器中执行不了&#xff0c;会报错。…

flutter生成二维码并截图保存到图库

引入库&#xff1a;flutter_screenutil、image_gallery_saver、qr_flutter弹窗布局 import dart:async; import dart:typed_data; import package/generated/l10n.dart; import package:jade/configs/PathConfig.dart; import package:jade/utils/ImageWaterMarkUtil.dart; im…

瑞吉外卖实战学习--8、人员禁用和启用

前言 1、通过前端页面查看接口 会发现请求方式是put 请求接口是employee 2、检查页面传值 根据浏览器的请求可以看到传值为id和status 2、写put请求&#xff0c;添加修改时间和修改人的id然后传回给后台 /*** 启用和禁用员工账号* param request* param employee* return…

【Consul】Linux安装Consul保姆级教程

【Consul】Linux安装Consul保姆级教程 大家好 我是寸铁&#x1f44a; 总结了一篇【Consul】Linux安装Consul保姆级教程✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 今天要把编写的go程序放到linux上进行测试Consul服务注册与发现&#xff0c;那怎么样才能实现这一过程&am…

25Ramdisk 启动模式简介

Ramdisk 启动模式简介 ramdisk是一种虚拟磁盘技术,我们的PE系统几乎都是使用ramdisk方式从计算机启动的.那么,ramdisk有哪些特点呢? Ramdisk 将内存虚拟为一个磁盘 Ramdisk技术会将你的一部分内存虚拟成一块磁盘分区.使用U盘启动pe系统时,打开pe系统里的文件资源管理器,你会看…

CKS之安全沙箱运行容器:gVisor

目录 一、gVisor介绍 二、gVisor架构 三、gVisor使用前置条件 四、Docker中使用gVisor 五、containerd中使用gVisor 六、Kubernetes结合gVisor使用 一、gVisor介绍 gVisor是Google开源的一种容器沙箱技术&#xff0c;其设计初衷是在提供较高安全性的同时&#xff0c;尽量…

从输入url到页面展示的过程

唠唠叨&#xff1a;我不想误人子弟&#xff0c;我这篇算是搬运工&#xff0c;加上自己的理解做点总结&#xff0c;所以还请大家科学上网去看这篇&#xff1a;https://aws.amazon.com/cn/blogs/mobile/what-happens-when-you-type-a-url-into-your-browser/ 是这六个步骤&#…

杰发科技——Jlink插件使用

0. 简介 杰发自带的烧录工具是ATCLink&#xff0c;基于DapLink适配。个人不太喜欢ATCLink&#xff0c;推荐使用Jlink&#xff0c;毕竟自己买&#xff0c;不用问原厂要&#xff0c;而且带Jlink&#xff0c;至少5Mhz以上。 V9烧录器使用7.50以下版本驱动。 V11烧录器可以使用7…

热烈祝贺阿里云PolarDB登顶2024最新一期中国数据库流行榜

热烈祝贺阿里云PolarDB登顶2024最新一期中国数据库流行榜 墨天轮墨天轮国产数据库流行度排行PolarDB首度夺魁关于话题的讨论数据库流行度排行榜会影响你的数据库选型吗&#xff1f;对于 PolarDB 的本次登顶&#xff0c;你认为关键因素是什么&#xff1f;PolarDB“三层分离”新版…

【Review】小米汽车发布会

动力方面 顶配双电机四驱&#xff0c;小米超级电机21000转&#xff0c;最大马力673ps&#xff0c;峰值功率495kW&#xff0c;峰值扭矩838N.m。风阻系数最低0.195&#xff0c;零百加速最快2.78秒&#xff0c;时速最高265km/h。 底盘方面 前双叉臂&#xff0c;后无五连杆&#xf…

C++—vector的介绍及使用 vector的模拟实现

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 一、vector的介绍及使用 1.1 vector的介绍 1.2 vector的使用 1.2.1 vector的定义 1.2.2 vector iterator 的使用 1.2.3 vector 空间增长问题 1.2.4 vecto…