谷歌科学家Nicholas Carlini分享17种AI用法,大语言模型如何提升工作效率
AI 技术飞速发展,大语言模型正成为提升工作效率的强大工具。谷歌科学家 Nicholas Carlini 分享了 17 种 AI 的用法,展示了大语言模型在编程方面能如何为打工人提供帮助,展示了大语言模型在项目管理方面能如何为打工人提供帮助,展示了大语言模型在新技术学习方面能如何为打工人提供帮助,展示了大语言模型在代码优化方面能如何为打工人提供帮助,展示了大语言模型在任务自动化方面能如何为打工人提供帮助。

新技术普及并融入每个人的日常,这需要经历一个相当长的过程。大模型也不例外。
我们相信,不少行业的从业者已经把大模型融入到工作流当中,甚至融入到日常生活里了。同时,我们也得承认,大模型的普及率尚未达到最高,还没有达到人人都在使用的程度。
从实用角度去考虑,导致阻碍产生的因素是什么呢?普通的人应当怎样去使用大模型呢?大模型对于每一个人的具体的益处究竟是什么呢?
谷歌 DeepMind 的研究科学家 Nicholas Carlini,他在机器学习和计算机安全领域很有造诣。从最贴近实际应用的角度出发,他分享了自己对于大模型的看法,并且还给出了自己对大模型应用的 50 个案例。
其中包括:
这些 AI 应用案例可大致分为两类,一类是“帮助我学习”,另一类是“自动化枯燥任务”。
乌鸦君进行了部分精简,还摘取了 17 个在工作和生活中经常会用到的案例,相信这些案例会对你有帮助,以下是正文内容。
01 构建完整的应用程序
去年,我制作了一个测试。这个测试是让人们去检验自己对于 GPT4 解决一些任务能力的预测水平。
这个测试最终相当受欢迎,获得了超过一千万的浏览量。
猜猜怎么着?
这个应用程序几乎整个初始版本都是我让GPT4帮我写的。
我借助一系列的提问来达成这一目标。首先我向其询问关于应用程序的基本结构方面的情况,接着逐步地构建出各类功能。
整个对话有 30000 字这么长,这着实对初代 GPT4 模型的能力进行了考验,而初代 GPT4 模型当时是最先进的。
02 借助大模型完成各类任务
回顾我与GPT4的交流,你会发现各种类型的信息。
在一些消息中,我仅通过文字来阐述自身的需求,以便让模型给出全面的实现方案;在另一些消息里,我提出了特定的修改要求。
不用与平均分进行比较,能否通过核密度估计(KDE)来算出这处于第几百分位呢?
在有的消息中,我仅仅是进行了复制粘贴错误信息的操作,同时提出了一个没有详细阐述的问题。
例如“绘图时出现错误:
numpy.linalg 出现 LinAlgError 错误,其原因是矩阵是奇异矩阵。
也有一些情况,我只是寻求简单的一次性解答.
如何用 JavaScript 给页面添加一个能够显示字符串内容的 iframe 呢?
总的来说,能顺利交流的原因在于大语言模型擅长处理前人已解决的问题。 大语言模型擅长解决前人已经解决过的问题,所以能如此顺利交流。 因为大语言模型擅长解决前人已解决的问题,所以能有如此顺利的交流。 之所以能如此顺利交流,是因为大语言模型擅长解决前人已解决的问题。 大语言模型擅长解决前人已解决的问题,这是能如此顺利交流的原因。
我做的这个小测试,其中 99%的部分仅仅是基础的 HTML 方面的内容以及 Python 网络服务器的后端代码,其门槛是很低的。
这个测试有趣且受人喜爱,原因并非是其背后的技术,而是测试的内容。
我能轻松做出这个测试,是因为大语言模型自动完成了所有枯燥的部分。
事实上,我可以肯定地讲。若没有大语言模型的协助,我极有可能压根就不会进行这个测试。因为我不想耗费时间从一开始就去编写整个网络应用程序。
我是懂编程的人。我相信,现有的大语言模型有足够的能力,让绝大多数人通过询问解决方案,来完成他们以前根本无法完成的有意义的任务。
我还有几个类似的例子,我让大语言模型为我编写了完整的应用程序。这些应用程序编写完成后,等它们发布时,我会明确说明是在大语言模型的帮助下完成的。
03 及时获取新技术进展
曾经,我会紧跟新框架的发展步伐。
一个人的一天时间是有限的。因为工作的缘故,我把大部分时间都用在了了解最新的研究进展方面,而非 JavaScript 框架的最新动态上。
这意味着,当我要开启一个超出我特定研究领域的新项目时,一般有两种选择。其一,我能够运用我所熟悉的技术。
这些技术或许已经有一二十年的时间了,并且已经过时了。然而,倘若项目的规模比较小,那么通常情况下也是能够满足需求的。
其二,我可以尝试学习新的(通常也是更好的)方法。
这时,大语言模型能发挥作用了。像 Docker 这样的框架,对我来说是全新的,但对其他人而言并不陌生。像 Flexbox 这样的工具,对我来说是全新的,但对其他人而言并不新奇。像 React 这样的框架或工具,对我来说是全新的,但对其他人而言并不新鲜。
世界上可能有大量的人对这些技术一清二楚,大语言模型也对这些技术一清二楚。
这意味着,我不用去阅读那些假定读者具备特定知识且想要实现特定目标的静态入门教程。我可以与大语言模型展开交互式学习,从而掌握解决任务所需要的全部知识。
今年早些时候,我在构建一个大语言模型评估框架。我希望这个框架能在受限环境中运行大语言模型生成的代码,以避免它删除我电脑里的随机文件等情况。
Docker 是完成这项任务的理想工具,然而我之前从未对其进行过使用。
重要的是,这个项目的目标并非要使用 Docker。Docker 只是我在实现目标过程中所需要用到的工具。
我只想知晓 Docker 中那占比 10%的必要知识,如此一来,我便能安心地以最为基础的方式安全地运用它。
如果在 90 年代做这件事,我大多需要买一本从基础开始讲的 Docker 使用手册。先读完前几章,接着再跳着阅读,以便弄清楚怎样实现我的需求。
后来情况有所好转。如果是在过去的十年去做这件事,我会在网络上搜寻一些对 Docker 使用方法进行介绍的教程。
试着去照着做,当遇到错误信息的时候,接着上网进行搜索,查看是否有其他人也遭遇过相同的问题。
如今,我只需让大语言模型来教我如何使用 Docker。以下便是我向它请教的过程。
04 开启新的项目
我年轻时学的第一门编程语言是Java。
我确实喜爱编程。然而,有一件事情让我极为反感,那便是面对一个新项目时那空白的屏幕。
尤其是在使用 Java 的时候!即便仅仅是让程序编译出一个“Hello,World”,那个
“public static void main(String[] args)”的作用是什么呢?
括号应放置在何处?哪些字母需要大写呢?为何此处用花括号,而彼处用方括号?
于是,我像任何一个孩子会做的那样,让我父亲帮我搞定。
时光过去了二十年。如今,当面对不熟悉的框架并开启新项目时,我依然怀着满心的抗拒。
处理那些样板代码会耗费大量时间,并且我无法弄清楚自己在做什么。
最近我有写一些 CUDA 代码的想法,目的是对比在 GPU 上进行简单贪心搜索与在经过他人优化的高效 CPU 上实现时的性能差异。
我不会撰写 CUDA 程序。我能够编写 C 语言代码,并且知晓 GPU 的工作原理,了解内核的作用以及内存布局等相关知识。
但要实际编写代码把任务发送到GPU上,我完全不知从何入手。
于是,我让大语言模型帮我写出CUDA程序的初稿。
它写得完美吗?当然不!但这是个开端,而这正是我所需要的。
你会发现这里的代码有很多错误,不过我完全能接受。
我不寻求一个完美的解决办法,只是希望有一个起始点,之后我能够自己继续推进。
未来的模型若能表现得更好,那自然是很好的。然而,就当下来说,现有的模型已经起到了很大的作用。
再举个例子,和上面的情况完全不相关。
我在家进行一些个人项目的操作时,使用到了树莓派 PicoW。这是我初次使用它。
我想让它完成一些特定的任务,尤其是一些网络相关的功能。
我能够在网上找到写得不错的教程来指导我进行相关操作。然而,你最近有浏览过网络内容吗?
根本无法使用。
于是,我直接让大语言模型教我怎么实现我的需求。
我曾经接触过微控制器,对它们的工作原理有了大致的了解。然而,我从未使用过 PicoW。
我需要有人帮我把所有依赖项处理好,之后的事情我自己能够摸索明白。
每次接触新的微控制器时,我写的第一个程序都是让 LED 闪烁,这个程序就是“Hello,World”程序。
我能测试是否能成功编译并把代码上传到设备上,还能测试引脚是否都设置正确,这样就能基本掌握操作方法。
我直接让大语言模型为我提供一个闪烁程序的代码。(另外要说明的是:在网上肯定存在这样的代码,不过我还需要去进行搜索。)
一旦代码能运行起来,我就知道后续该怎么做了。
我懂得 Python 这门语言。(你可以信,也可以不信哦!)因此,在把 MicroPython 的特殊问题解决之后,我就能够立刻接着去编辑代码了。
当我遇到需要特殊处理的问题时,我就直接让大语言模型帮忙。
比如,我接着让它帮我写一个连接WiFi的脚本。
之后我再次遇到了与连接 MQTT 服务器相关的难题,并且又向它寻求了帮助。我现在时常会进行这样的行为。
本节开头提到的例子并非虚构。我曾询问过如何使用 Flexbox,因为我上次学习新的 HTML 布局方式还是在使用 div 标签替代表格的时候。
05 代码简化
我是一名安全研究员,时常会拿到一个新的代码库,其中包含着别人的数千行研究代码。我首先需要弄明白它的工作原理,之后才能够对其发起攻击。
这听起来似乎并不困难。倘若大家所写的代码都十分规范,那么确实也不会困难。然而,现实情况却并非如此。
研究人员缺乏发布规范整洁代码的动力,因此很多人会随意放置能够运行的代码并进行发布,我自己也会有这样的行为。
我无法在此处分享和研究相关的例子,不过可以讲述一个我个人项目里的例子。
有人说我对康威生命游戏痴迷得有些过了。
最近,我希望找到一种能够在 Python 中快速对生命游戏模式进行评估的方式。
有一个名为 Golly 的很棒的 C++工具可以实现这个功能,然而我并不想把我的 Python 代码改写成 C++代码。
Golly 拥有一个命令行工具,这个工具能够满足我的需求,我只需正确地调用它就可以了。
从支持大约 50 种不同命令行选项的 C++代码中,要提取出能够完成所需功能的部分。
我把 500 行 C++代码全部丢给大模型,让它精简这些代码并且能够完成相同的任务。
大模型,完美的奏效了。
接着,我提出了一个关于 C++代码的 Python 封装器的请求,并且这个请求是有效的。
这是那些令人烦恼的任务中的一个。要是由我来做的话,我或许永远都无法完成。然而现在,我能够请求他人帮我完成。我所得到的东西,比我原本的 Python 代码快了 100 倍。
06 解决令人厌烦的枯燥单调任务
这是一类让人头疼的任务,我可能永远都不会自己去做。但现在我只需提出需求,就能够得到解决方案。
这个方案现在的运行速度比我原先的 Python 代码要快很多,快了 100 倍。
我发现自己时常会有这样的行为。另外举个例子,在 Python 环境中,我也实施了相近的操作。
这些任务其实都不难,但每次这么做,我都能节省大量时间。
这就是我认为当下大语言模型了不起的地方之一:
这并不显得炫酷。说“我借助大语言模型让生活变得更轻松”,但其实也只是做了些较为平淡的事,这样的话也不会在网络上引发轰动。然而,这确实能带来实实在在的帮助。
处理单调的任务
我有很多不得不做的事情,既无聊又无需动脑,但又必须完成。
事实上,我拖延任务的一个主要原因是,我知晓完成这些任务会是既让人厌烦又令人痛苦的。
大语言模型减轻了这种痛苦,它让我明白自己只需去解决有趣的问题,这样就能更轻易地开始做事。
例如,最近我要反汇编一个用Python3.9编写的程序。
大多数 Python 反汇编器仅能支持 Python3.7 以及比它更早的版本,而无法对我手头的 3.9 二进制文件进行处理。
反汇编本身难度不是特别大,关键在于按照跳转指令去重构控制流时不能出错。
所以,我没有花费时间去手动对几百行代码中的数千个操作码进行转换。我让大语言模型来帮我完成这一工作。
它完成得非常出色!比我预想的要好得多。
比如,当我要把一些非结构化数据整理成结构化格式的时候,大语言模型可以发挥作用。有一回我在进行某个项目,需要一份有着书名和作者姓名的列表。
我在网络上寻找到了非结构化的数据。接着,我让大语言模型协助我对这些数据进行格式化处理。
最近我写了一篇博客文章,内容是关于如何破解某种防御机制的,我想展示修改代码的完整差异对比。
我粘贴了差异以及之前将差异转换为 HTML 的示例,接着让 LLM 依照之前的格式为我生成差异。
另外,在工作期间,我时常需要为所使用的资源制作引用。谷歌学术能够便捷地为论文生成引用,我只需进行复制粘贴的操作即可。
为网页生成引用这件事有点麻烦。最近,我直接让大语言模型帮我生成引用,不过我会检查生成的引用是否正确。
我或许还能再列举出一百个这样的例子,并且这还只是至少的数量。不过,我认为你已经理解我的意思了。
我完全理解有人看到这些任务会说“就这?”
但要记住,五年前大语言模型连一段连贯的话都难以写好,更不必说能够帮你去解决整个问题了。
07 让每个用户都成为“专家”
如果你曾见过有人在使用某个工具,然而他对该工具的熟练程度远远比不上你,那么那种场景或许会让人感到有些难受。
你会看到他们花费几分钟的时间去完成一个任务,这个任务原本可以通过某种宏来自动化完成;你还会看到他们花费甚至几小时的时间去完成一个任务,这个任务原本可以通过巧妙运用并行应用来自动化完成。
但要学会使用这些方法来实现自动化需要时间,而且有一定难度。
最近我打算写一个程序,这个程序要用 Python 语言来编写,目的是处理苹果 Lisa 键盘的输入。
我在网上找到了一个用 C 语言编写的实现,其中有诸多类似“#define KEYNAME key_code”这样的语句。我希望把这些语句转化为一个 Python 字典,以便将整数代码映射到相应的字符串。
我是 Emacs 的使用者。我知晓在 Emacs 中怎样去解决这个问题,并且这也不是一件很困难的事情。
我刚录制的按键组合就能实现这个效果:
ChCs#def ,Mf 被删除,CdMfC ,MfCwCaCy 说:“Mf”,CgC }C {
我在 Emacs 里达到如此熟练的程度花了半辈子,虽然对我而言这几乎是自然而然的操作。
但现在有了连接到大语言模型的编辑器,你知道我会输入什么吗?
ChCh 把这些 #define 改写成了一个具有 {keycode: string, …} 形式的字典。
然后,文本就在我眼前被重写了!
在这种情形下,我觉得大语言模型对于非专家用户所具有的潜在价值,比之于对专家用户的潜在价值还要高。
模型提升了所有人的下限。如果你之前什么事情都无法完成,那么突然之间,你就能够完成很多事情了。
08 作为API
真正的程序员若想要理解某个工具的工作原理,就会去阅读参考手册。
我是个程序员,不过比较懒惰;我更倾向于直接获取答案。所以,当下我向语言模型提出了问题。
当我向人们展示这些例子的时候,有些人会表现出一定的防御性,他们说:“LLM 并没有做那些你凭借已有的工具就能够完成的事情!”
你知道吗?他们说得对。
但是,搜索引擎能做的事,一本关于该主题的实体书也能够做到;一本实体书能做的事,通过阅读源代码也可以做到。
然而,每一种方式相较于前一种都更为简单。事情一旦变得简单,你就会更经常地去做,并且在方式上也会出现差异。
这是我询问“哪个命令可以传递所有剩余参数”且得到答案的一个例子。(紧接着还有另一个“我该如何使用这个东西”的问题!)实际上,这是我最常使用 LLM 的方式之一。我不能给你展示更多这样的例子,是因为我在 Emacs 以及我的 shell 中都内置了查询 LLM 的工具。因此,在我想要做这些事情的大部分时间,也就是 90%的时候,我根本无需离开我的编辑器。
09 搜索难以找到的内容
在互联网上搜索内容曾经是一项需要学习的技能。
你希望在查询里包含哪些特定的词汇呢?这些词汇应该是复数形式还是单数形式呢?是过去时态吗?
你期望在页面上避免出现哪些词汇呢?是想要 X 并且 Y,还是想要 X 或者 Y 呢?
现在的情况和之前不一样了。我记不起上次在 Google 里使用“OR”的那个时刻了。我也记不起上次使用减号去移除结果子集的那个时刻了。
在多数情况下,如今你只需写下你所期望找到的内容,搜索引擎便能为你找到相关信息。然而,搜索引擎并非能完全处理 100%的自然语言查询。
它依然有一点像是你在进行反向的危险边缘游戏,你会努力去使用答案中会出现的那些关键词,而不是问题中的关键词。
这是一项我认为我们几乎都忘记了我们学过的技能。
今天有一些简单任务,随着时间推移这些任务会越来越多,而对于这些任务,语言模型只是更好。
我能够直接输入“所以我知道+对应于某个具体内容,但是具体是什么”,接着它就会将答案告知我为另一个具体内容。这是通过标准搜索引擎难以搜索到的情况。
是的,我知道有方法可以问,这样我就能找到答案。
如果我输入“python 文档元类”add””,那么我有可能搜索页面上的内容并获得答案。
但你知道还有什么有效吗?
问 LLM 你的问题即可。每次这样做仅能节省几十秒时间,但在解决某个编码任务时,若你已在试图同时记住一百万件事,能将你试图解决的问题倾诉出来并获得一个连贯答案是很令人惊讶的。
这并不是说他们在这方面现今已然完美。语言模型知晓事情是只有当其在线上被足够频繁地进行重复的时候。
“足够频繁”的含义取决于模型。因此,我确实需要投入一些精力去思考,到底是应该向模型进行询问,还是应该向互联网进行询问。不过,模型只会不断地变得更好。
10 解决一次性任务
程序可分为两类。一类是你期望能做好的程序,这类程序会存在一段时间。在这期间,代码的整洁度是很重要的,因为未来几年你都需要对它们进行维护。
第二类程序存在的时间很短,只有 25 秒。它们在帮你完成某个任务后,就会立刻被丢弃。
在这种我对代码质量完全不在乎,且程序完全自成一体的情形下,我现在几乎仅仅让大语言模型来帮我进行编写。
提醒一下,这些任务中的大部分会让你在看了之后说出“就这点事儿?”这样的话。
但就像我之前说的,我每天用于某个特定项目的时间有限。
如果能让我节省时间,那我会去编写一个程序。如果能让我节省精力,那我也会去编写一个程序。并且这个程序是我再也不会用的。我肯定会这么做。
常见的例子或许是生成可视化研究实验数据的图表。我拥有几十个这样的例子,可能差不多有上百个,而非零个。
它们看起来基本都差不多,所以这里就举一个例子:
还有一个类似的例子,即当我拥有某种格式的数据,而想要将其转换成另一种格式的数据时。通常情况下,我只需进行一次操作,在完成转换后,就会把生成的脚本丢弃掉。
我还能给你举上千个这样的例子。
很多时候,我想要编写一个足够简单的脚本,这时我会直接让大语言模型把它完整地写出来。
我让大语言模型为我撰写一个脚本,让其将我的论文读出来,如此一来,我便能够确认论文不存在愚蠢的语法错误。
很多情况下,若我不太清楚自己想要什么,我会先让模型给出一些初始代码,接着再在其基础上进行迭代。
例如,这里有一个一次性任务,我只需要快速处理一些数据。
2022 年,我会花费两分钟用 Python 来编写代码。接着,我会等待几个小时让代码运行。因为这个程序只会运行一次,优化它所花费的时间比程序运行的时间还要长。
但现在呢?我肯定会花费相同的两分钟,让模型为我生成一段能够完成数据处理的 Rust 代码。
再比如,我让模型帮我下载一个数据集并进行一些初步处理。
对我来说自己做容易吗?可能吧。
我不想思考这项任务,我思考的是利用这个数据集展开的研究。
消除这些干扰,其价值远不止节省的那几分钟。
还有一次,我在进行程序的编写工作。我希望能够通过小方块进行 3D 打印,从而得到像素化的图像。
我需要将 PNG 文件转换成 STL 文件,这并非项目的重点,而是在过程中必须要完成的事情。
所以,我让大语言模型帮我解决这个问题。
又如,最近我想用DockerCompose搭建一个新项目。
我遇到了一些问题,我只想用尽所有办法让它运行起来,然后再去搞清楚到底是哪里出了问题。
我与模型进行了多次交流。我持续地将错误信息复制并发送给它。它在不断地被我发送错误信息的过程中。最终,它给了我一个可行的解决方案。
11 通俗解释事物
我最近开始对电子学产生了兴趣。
我在年轻之时做过一些电子方面的项目。大学期间,我还上过几门与之相关的课程。
但现在我想要开展实际的电子项目,我察觉到有诸多我不熟悉的细节,这些细节使得开始任何一个项目都变得艰难。
我可以去读一本有关实用电子学的书。或许在某个时刻我真的会这么去做,目的是能彻底理解这个主题。但我不想把时间耗费在让自己感觉只是在学习上。
我从事电子学的部分原因是想从整天的阅读和写作中抽身而出。
这是 LLMs 表现优秀的领域。它们或许不像世界上最优秀的专家那般知识丰富,然而,成千上万的人或许知晓我可能会提出的任何电子方面问题的答案。
这表明语言模型很有可能知晓答案。它愿意为我给出所有问题的答案,让我能够享受乐趣而无需为细节而纠结。
我完全可以通过在互联网上搜索来获取答案。然而,在忙碌了一整天之后,模型能够为我完成这些工作的便利性让我感觉非常放松。
这里有一些例子,展示了我询问语言模型关于电子学中事物工作原理的基本问题的方式。
这些答案是否完美呢?谁也无法确切知晓。然而有一个确定的情况,那就是它们总归比我完全一无所知要好。
12 从寻求完整方案到获取修改提示
很多时候,我会先向大语言模型寻求一个完整的解决方案。接着,我会询问如何对这个解决方案进行修改的提示。
在这次交流过程中,起初我让它编写一个解析 HTML 的程序,接着又询问有关 API 参考或者其他改进方式的提示。
还有一次,我希望能够跟踪我的电脑在某一段特定时间内的内存使用情况以及 CPU 使用情况。
我本可以花费几分钟的时间去找出那些合适的命令,接着把这些命令组合成一个能够实现我需求的脚本……然而,我也完全可以直接让大语言模型来帮我把这件事情搞定。
最近我在钻研一些电子类的事物。我拥有一个可以在 Arduino 上运行的 C 语言程序,然而我期望能让它在树莓派 Pico 上以 MicroPython 的形式来运行。
这个转换过程没有特别之处,只需完成即可。因此我没有亲自动手,而是让大语言模型来进行处理。
在一个不同的项目里,我得使用一些较为复杂的机器学习模型,在交互式的循环当中对图像进行分类。
我可以自己编写代码,但我也可以直接让模型帮我完成。
13 解决已有解决方案的任务
几乎所有的事情都已经有人去做过了。你想要做的事情,几乎不存在真正新颖的情况。并且大语言模型在为它所见过的问题提供解决方案方面是非常擅长的。
在最近的一个项目中,我需要提升一些Python代码的性能。
我让大语言模型把代码改写为 C 语言,同时让它构建一个接口,以便我能够从 Python 中调用 C 代码。
这两项任务都“不难”。
我相信自己花费一两个小时能够将 Python 代码转换成 C 代码。我不太清楚 Python 到 C 的 API 是怎样运作的,但我相信通过阅读相关文档可以弄清楚。
但如果要我自己动手,我肯定不会去做这件事。
这不是项目的关键环节。我更倾向于等待计算机缓慢运行,而不想花费时间去对那些不常运行的代码进行优化。
对于简单的程序而言,将 Python 转换成 C(在大部分情况下)属于一个技术流程,同时存在一套标准的 Python 到 C 的调用规范。
所以,我直接让大语言模型帮我完成。
从那以后,我就觉得这是我随时都能让模型帮忙做的事。
通常情况下,每当我需要一段能快速运行的代码时,我会用 Python 来描述需求,接着让模型生成经过优化的 C 代码。
14 为新项目做准备
我需要了解即将开展的一个项目中,人们常用的简易无线电发射器有哪些。这个项目我可能会在这里提及。
我真正想要的是大众普遍认知的答案。大语言模型是绝佳的选择。
15 修复常见错误
2022 年之前,我在使用一些流行工具或库时遇到错误信息,会按照以下流程来处理:首先,查看错误信息的具体内容;接着,尝试通过搜索引擎查找相关解决方案;然后,查阅相关文档或教程;最后,若仍无法解决问题,可能会向相关技术社区或论坛寻求帮助。
1. 复制错误信息。
2. 粘贴到谷歌搜索框。
点击排名靠前的 StackOverflow 链接,该链接位于搜索结果中。
4. 确认问题是否正是我想问的;若不是,回到步骤2。
5. 将排名靠前的解决方案应用到当前任务中。
如果方案没有起到作用,就返回到步骤 2 。接着更换搜索关键词,之后再祈祷能够找到解决办法。
说实话,通常情况下,出问题的工具与你最终要完成的任务之间可能存在好几层关系。你其实并不在意它具体的运作方式,只希望它能够正常工作。
那到了2024年,这个流程变成什么样了呢?
1. 复制错误信息。
2. 询问大语言模型“如何修复这个错误?[错误信息]”。
3. 按照大语言模型给出的分步解决方案操作。
4. 如果方案不起作用,就说“这个方法没用”。
我无法给你展示这些例子,因为我没有相关的对话记录。或者说,我花费了一个小时也未能找到相关记录。但实际上存在一个很好的原因。
我已经把这个流程直接融入到我的工作流里了。
我是 Emacs 用户。我对工作环境进行了设置。每当我运行一个程序时,如果该程序以非零状态码退出(这意味着出现了问题),系统就会自动调用当前最快的大语言模型。这个大语言模型会解释错误原因,并且同时请求一个可以直接应用到代码中修复该错误的补丁。
如今,模型在大多数情况下于这个任务上尚不能超越我,不过已经与我很接近了。
时不时地,大语言模型修复了一个错误,这个错误我知道会很难追踪,比如某个地方的拼写错误,这时我都会感到惊喜。
16 还有无数其他用途
上面提到的那些对话,仅占我去年一年和大语言模型交互总量的不足 2%。
我没有展示其他对话,原因不是模型在这些对话中让我失望了,即便这种情况也有不少。而是因为:
(1)很多对话和我已经展示的那些遵循相同的模式;
有些对话难以解释得清晰明了,也难以让你轻易明白它们对我所具有的作用。
我完全预计未来我对这些模型的使用会持续增加。
2024 年我通过网页界面向大语言模型发起查询。2023 年相比,2024 年的查询多了 30%。我甚至无法统计通过 API 发起的查询增加了多少。但我猜测通过 API 发起的查询至少是原来的两到三倍。
17 评估大语言模型能做什么,而非不能做什么
我在面试求职者时获得了一条最佳建议,那就是要依据一个人能够做的事情来对他们进行评估,而不是去看他们不能够做的事情。
我猜我随便问你几个问题,就能让你显得能力不足。
举个例子,情况很极端:世界上有十亿人能够说普通话,然而我连数到十都做不到。
如果有人让我参加一场普通话小学考试,那我肯定会考得很糟糕。即便在计算机科学这个领域当中,也存在着许多我完全不了解的方面。
同样的道理,我不会因为人类不能在脑海中进行 64 位整数的除法,而计算机却能轻松做到,就觉得人类完全没有用处。
我不认为仅仅因为你能想出一个大语言模型无法解决的任务,就去否定大语言模型的价值是合理的。
显然,做到这一点并非难事。关键在于,你能否找到那些它们能够发挥价值的任务呢?
程序员们早就明白,一个东西可以因不同目的而有用。
文/树一