AI大模型的普及之路:从研究到应用
任何新技术的广泛应用,都需要一个漫长的过程,AI大模型也不例外。
虽然部分行业从业者已将大模型融入工作,但其普及程度远未达到“人人皆用”的程度。
那么,阻碍普及的因素是什么?普通人如何利用大模型?它又能带来哪些具体益处?
谷歌DeepMind研究科学家Nicholas Carlini,分享了他对大模型的务实看法及50个应用案例。
其中包括:
- 使用未掌握的技术构建完整Web应用。
- 快速学习各类框架的使用方法。
- 将程序转换为C或Rust,提升性能10-100倍。
- 简化大型代码库,优化项目结构。
- 为研究论文编写实验代码。
- 自动化重复性任务和一次性脚本。
- 替代网络搜索,快速配置新软件包或项目。
- 部分替代网络搜索,辅助调试错误信息。
这些应用可归为两类:“辅助学习”和“自动化任务”。
以下精选17个常用案例,希望能为您带来启发:
01 快速构建Web应用程序
我曾开发一个测试,评估人们预测GPT-4解决问题能力。
这个测试浏览量破千万。
令人惊讶的是,初期版本几乎完全由GPT-4编写。
我通过提问,逐步构建应用程序的各项功能。
对话长达3万字,是对初代GPT-4能力的考验。
02 利用大模型解决各类问题
回顾与GPT-4的交流,信息类型多样。
有些消息仅描述需求,模型便给出完整方案;有些消息提出修改意见。
例如:“不用平均分,用核密度估计计算百分位?”
还有些消息仅粘贴错误信息,提出泛泛的问题。
如:“绘图时出错:numpy.linalg.LinAlgError:singularmatrix”
有时,我只是寻求简单的一次性解答。
比如:“如何用JavaScript给页面添加iframe?”
顺利交流的原因在于,大模型擅长解决已有的问题。
我的测试99%是基础HTML和Python后端代码,门槛低。
其趣味性在于测试内容,而非技术本身。
大模型自动化了枯燥部分,让我能轻松完成测试。
没有大模型,我可能根本不会做这个测试,因为我不想花时间编写Web应用程序。
即使对于懂编程的人来说,大模型也能让人们通过提问完成以前无法完成的任务。
接下来我还有类似的例子,应用发布时我会注明大模型参与。
03 快速掌握新技术
过去,我会关注新框架的发展。
但时间有限,我大部分时间都花在研究上,而非JavaScript框架的最新动态。
因此,开展新项目时,我通常有两个选择:使用熟悉的技术,或者学习新的方法。
大模型在这时就能派上用场。Docker、Flexbox或React对我来说是新技术,但对其他人来说并非如此。
成千上万的人精通这些技术,大模型也是如此。
我可以与大模型进行交互式学习,掌握解决任务所需的知识,而不是阅读那些假定读者具备特定知识的教程。
例如,今年早些时候,我构建一个大模型评估框架,希望在一个受限的环境中运行大模型生成的代码,避免它删除我电脑里的随机文件之类的情况。
Docker是理想的工具,但我之前从未使用过它。
这个项目的目标并非使用Docker,Docker只是我实现目标所需的工具。
我只想了解Docker中10%的必要知识,这样我就能安全使用它。
过去,我需要买一本Docker使用手册,或者在网上搜索教程。
但如今,我只需让大模型教我使用Docker。
04 快速启动新项目
我学的第一门编程语言是Java。
我喜欢编程,但我讨厌面对新项目的空白屏幕。
尤其是Java!即使只是编译一个“Hello,World”,我也搞不清那些括号和大小写。
于是,我让父亲帮忙。
二十年后,面对不熟悉的框架开启新项目,我依旧感到抗拒。
处理样板代码耗时且令人困惑。
比如,我想写一些CUDA代码,对比GPU和CPU的性能。
但我不会写CUDA代码。我知道GPU的工作原理,但我不知如何编写代码将任务发送到GPU。
于是,我让大模型帮我写出CUDA程序的初稿。
它写得并不完美,但这是一个开端。
我并非寻求完美的解决方案,只是想要一个起点。
要是未来的模型能表现得更好,那自然再好不过,但就目前而言,现有的模型已经帮了大忙。
我在家做一些个人项目时,用到了树莓派PicoW,这是我第一次用它。
我想让它完成一些特定的任务,尤其是一些网络相关的功能。
我可以找到教程,但搜索结果往往是垃圾内容,代码过时且有bug。
于是,我直接让大模型教我怎么实现我的需求。
我了解微控制器的工作原理,但从未用过PicoW。
我只需要有人帮我处理好所有依赖项,后续的我自己就能摸索清楚。
每次接触新的微控制器,我写的第一个“Hello,World”程序都是让LED闪烁。
我让大模型给我一个闪烁程序的代码。
一旦代码能运行起来,我就知道后续该怎么做了。
我懂Python,所以在解决了MicroPython的特殊问题后,我就可以直接继续编辑代码。
当我遇到需要特殊处理的问题时,我就直接让大模型帮忙。
比如,我接着让它帮我写一个连接Wi-Fi的脚本。
05 代码简化
作为一名安全研究员,我经常需要弄清楚别人数千行研究代码的工作原理,然后才能对其发起攻击。
如果代码规范,这并不难。但现实并非如此。
研究人员没有动力去发布规范的代码,所以很多人会把能运行的代码随便一放就发布了。
这里我无法分享和研究相关的例子,但可以讲一个我个人项目中的例子。
有人说我对康威生命游戏(Conway'sGameofLife)痴迷得有些过头。
最近,我想找一种在Python里快速评估生命游戏模式的方法。
有一个很棒的C++工具叫Golly能实现这个功能,但我不想把我的Python代码重写成C++代码。
Golly有一个命令行工具可以满足我的需求,我只需要正确调用它就行。
第一步是从支持大约50种不同命令行选项的C++代码里,提取出能完成我所需功能的部分。
于是我把500行C++代码一股脑丢给大模型,请求将其精简并能完成相同的任务。
大模型,完美的奏效了。
然后,我请求一个围绕C++代码的Python封装器,这同样有效。
这是那些令人烦恼的任务之一,如果由我来做,我可能永远不会完成。但现在我可以请求别人帮我完成,我得到的东西比我原来的Python代码快了100倍。
06 解决枯燥单调任务
这是另一类让人头疼到我可能永远都不会自己去做的任务。但现在我只需提出需求,就能得到解决方案。
现在这个方案的运行速度比我原来的Python代码快了100倍。
我发现自己经常会这么做。再举个例子,同样是在Python里,我也进行了类似的操作。
这些任务其实都不难,但每次这么做,我都能节省大量时间。
这就是我认为当下大语言模型了不起的地方之一:
这并不炫酷,说“我用大语言模型让生活变得更轻松,不过是做了些无聊的事”也不会在网上引起轰动,但这却是实实在在的帮助。
我有很多不得不做的事情,既无聊又无需动脑,但又必须完成。
事实上,我拖延任务的一个主要原因就是,我知道完成这些任务会既烦人又痛苦。
大语言模型极大地减轻了这种痛苦,让我知道自己只需解决有趣的问题,从而更容易开始做事。
例如,最近我要反汇编一个用Python3.9编写的程序。
大多数Python反汇编器只支持Python3.7及更早版本,无法处理我手头的3.9二进制文件。
反汇编本身并不是特别难的任务,主要就是在按照跳转指令重构控制流时别出错。
所以,我没有花时间手动为几百行代码里的数千个操作码进行转换,而是让大语言模型帮我完成。
它完成得非常出色!比我预想的要好得多。
再比如,当我需要将一些非结构化数据整理成结构化格式时,大语言模型也能帮上忙。有一次我在做某个项目,需要一份包含书名和作者姓名的列表。
07 让每个用户都成为“专家”
如果有人使用工具的熟练度远不如你,那场面可能会让人难受。
他们可能会花上几分钟甚至几小时来完成一个本来可以通过宏或并行应用自动化的任务。
但要学会使用这些方法来实现自动化需要时间和难度。
例如,最近我想写一个Python程序来处理苹果Lisa键盘的输入。
我在网上找到一个用C语言写的实现,里面有很多类似“#defineKEYNAMEkey_code”的语句,我想把这些语句转换成一个Python字典,将整数代码映射到对应的字符串。
我是一个Emacs用户,我知道如何在Emacs里解决这个问题,而且也不算太难。
但我花了半辈子才在Emacs里达到如此熟练的程度。
现在有了连接到大语言模型的编辑器,你知道我会输入什么吗?
C-hC-h将这些#define重写成一个{keycode: string, ...}形式的字典
然后,文本就在我眼前被重写了!
在这种情况下,我认为大语言模型对非专家用户的潜在价值比对专家用户还要高。
模型提升了所有人的下限,如果你以前什么都做不了,突然之间就能做很多事情了。
08 作为API
程序员想要理解某个工具的工作原理时会阅读参考手册。
但我是个懒惰的程序员,我更愿意直接得到答案。因此,现在我向语言模型提问。
当我向人们展示这些例子时,有些人会变得有些防御性,他们说:“LLM没有做任何你不能用已有工具完成的事情!”
他们说得对。
但是,用搜索引擎能做的事,用一本关于该主题的实体书也能做;用一本实体书能做的事,通过阅读源代码也能做。
然而,每一种方式比前一种都简单。当事情变得更简单时,你会更频繁地做,而且方式上也会有所不同。
这就是我问“哪个$命令可以传递所有剩余参数”并获得答案的例子。(紧接着是另一个“我该如何使用这个东西”的问题!)这实际上是我最常用LLMs的方法之一。我之所以不能给你展示更多这样的例子,是因为我在Emacs和我的shell中都内置了查询LLMs的工具。因此,当我想要做这些事情的90%的时间,我甚至不需要离开我的编辑器。
09 搜索难以找到的内容
在互联网上搜索内容曾经是一项需要学习的技能。
现在情况已经不同了。在大多数情况下,今天你只需要写下你想要找的内容,搜索引擎就会为你找到。但搜索引擎仍然不是100%的自然语言查询。
对于今天的一些简单任务(随着时间的推移会越来越多),语言模型只是更好。
我可以直接输入“所以我知道+对应于__add__,但是是什么”,它会告诉我答案是__inv__。这是用标准搜索引擎很难搜索到的东西。
10 解决一次性任务
程序可以分为两类。第一类是你希望能做好的程序,它们会存在一段时间,代码的整洁度很重要,因为未来几年你都要维护它们。
第二类程序则只会存在短短25秒,它们帮你完成某个任务后就会被立即丢弃。
在这种我完全不在乎代码质量、程序又完全自成一体的情况下,我现在几乎只让大语言模型帮我编写。
提醒一下:同样,这些任务中的大多数会让你看了之后说“就这点事儿?”
最常见的例子可能是帮我生成可视化研究实验数据的图表。
还有一个类似的例子是,当我有某种格式的数据,想把它转换成另一种格式的数据时。通常我只需要做一次,完成后就会扔掉生成的脚本。
很多时候,当我想编写一个足够简单的脚本时,我会直接让大语言模型完整地写出来。
11 通俗解释事物
我最近开始对电子学产生了兴趣。
我可以去读一本关于实用电子学的书。我可能真的会在某个时候这么做,以便彻底理解这个主题。但我并不想把我的时间花在感觉自己在学习上。
我从事电子学的部分原因是想从整天的阅读和写作中抽身而出。
这就是LLMs发挥出色的地方。它们可能不如世界上最出色的专家那样知识渊博,但成千上万的人可能知道我可能会提出的任何电子问题的答案。
这意味着语言模型很可能也知道答案。它乐于为我提供所有问题的答案,使我可以享受乐趣而不必纠结于细节。
12 从寻求完整方案到获取修改提示
很多时候,我会先向大语言模型寻求一个完整的解决方案,然后再询问如何对其进行修改的提示。
我一开始让它写一个解析HTML的程序,之后又询问关于API参考或其他改进方法的提示。
13 解决已有解决方案的任务
几乎所有事情都有人做过。你想做的事情几乎没有真正新颖的。而大语言模型非常擅长为它们见过的问题提供解决方案。
我让大语言模型把代码重写成C语言,让它构建一个能让我从Python调用C代码的接口。
14 为新项目做准备
对于一个即将开展且我可能会在这里提及的项目,我需要了解人们常用的简易无线电发射器有哪些。
由于我真正想要的是大众普遍认知的答案,大语言模型就是绝佳选择!
15 修复常见错误
现在,使用大语言模型,复制错误信息并询问“如何修复这个错误?[错误信息]”,然后按照模型给出的分步解决方案操作即可。
16 还有无数其他用途
我完全预计未来我对这些模型的使用会持续增加。
17 评估大语言模型能做什么,而非不能做什么
关键问题是,你能否找到它们能发挥价值的任务?
程序员们早就明白,一个东西可以因不同目的而有用。
想了解AITOP100平台其它版块的内容,请点击下方超链接查看
AI创作大赛 | AI活动 | AI工具集 | AI资讯专区
AITOP100平台官方交流社群二维码: