直到 ChatGPT 发布后,AI 领域才引起我的关注。此前,作为一名高级全栈开发人员,我从 2021 年开始使用GitHub Copilot和Tabnine ,它们帮助我更快地编写代码。如今,借助大型语言模型,我为我的项目生成了高达 90% 的代码,我创建软件的方式也发生了改变。
让我解释一下这是什么意思。
LLM)如今能做什么?
如今的LLM)的推理能力有限、知识面受限、默认无法获取最新信息,而且通常无法处理对我们来说显而易见的任务,例如判断 9.11 和 9.9 哪个数字更大。
我个人不知道谁是对的——Geoffrey Hinton 认为 LLM 很聪明,而 Yann LeCun 认为 LLM 拥有原始的推理能力。实际上,这对我而言并不重要,我也不会花太多时间去思考这个问题。
我关心和关注的是是否能够利用当前GenAI提供的机会以及下一代模型和工具的潜力。
我和Greg就人工智能进行了总体讨论,他总结说,要找到能够带来改变的富有创意且通常简单的用例真的非常困难。有趣的是,问题并不在于人工智能本身,因为我们在编程、无代码工具和自动化方面也面临同样的问题。
创造力源自于抛弃自我
“人工智能将抢走我们的工作”或“LLM毫无用处”之类的说法在某种意义上可能是正确的,但它们有一个共同的特征:它们代表了一种阻止我们探索现有可能性的态度。
我不知道人工智能是否会抢走我们的工作,LLM是否是一个“骗局”,或者人工智能是否是一个泡沫。也许程序员、设计师和作家(我拥有的技能)将完全被人工智能取代。无论哪种情况最终会实现,我都无法影响它。
与此同时,我可以决定如何利用我们今天拥有的机会以及在多大程度上探索这些机会。因此,我不会猜测或担心未来和我无法影响的事情,而是在我能控制的领域采取行动。
创造力源于理解
不难发现,最近LLM占据了我很大一部分注意力。尽管我对技术充满热情,从很小的时候就着迷于技术,但我还是尽力从各个角度看待它。我们在这里谈论的是学习LLM的工作技巧,同时也谈论批判性地看待它们的弱点。
我对 LLM 的知识来源包括:
- Anthropic Research是该团队发布的材料,其模型 Claude 3.5 Sonnet 是撰写本文时最好的LLM
- OpenAI Research是 ChatGPT 创建者发布的材料,可能是在大型语言模型的开发和理解方面走得最远的
- 斯坦福在线,这是一个 YouTube 频道(但不仅限于此),提供讲座和演示的录音,让学生深入了解大型语言模型的机制及其架构
- Meta AI 负责人Yann LeCun公开谈论大型语言模型的当前问题以及我们面前的漫长道路
- 安德烈·卡帕西(Andrej Karpathy),特斯拉自动驾驶部门前负责人,近年来参与 OpenAI 工作,目前专注于自己的创业项目
- Georgi Gerganov ,llama.cpp 和 whisper.cpp 的创建者,探索开放语言模型的可能性
- Awni Hannun是 Apple 的一名研究员,参与了 MLX 的开发以及直接在设备上运行的开放模型的应用
- 提词器普林尼 (Pliny the Prompter) ,打破了大型语言模型及其使用工具的安全措施
- 3Blue1Brown ,一个提供高质量视频的 YouTube 频道,其中包括生成式 AI 领域的内容
- Kyrtin Atreides公开批评LLM,称其为历史上最大的骗局,但他也发现了LLM的一些狭隘用途
尽管上述每个来源及其背后的人员都为我提供了丰富的宝贵知识,但毫无疑问,我自己的经历教会了我最多的东西。
实践
所以,现在你知道了我的背景,我们可以回到这篇文章的标题,以及为什么我的应用程序的几乎所有代码现在都已生成。
规则 1:可用性
您可以亲身体验的一个例子是Alice应用程序。此界面允许您与 LLM 聊天、使用 Snippets 自定义它,或使用您可以自行创建的自定义远程 Snippets 连接外部服务 - 并且它使 LLM 可以在您的 Mac 或 PC 上使用。
为了创建这个项目,我使用了 Rust、node.js 和框架Tauri和Svelte等技术。当我开始做这个项目时,我只熟悉 Node.js 和一点 Svelte。其他工具对我来说完全是新东西。那么,作为一名独立开发者,我怎么可能创建这样的应用程序呢?
好吧,你可能猜到LLM在这方面帮助了我。我可以随时寻求他们的帮助。我不仅得到了帮助,而且还学到了很多关于他们的行为、能力和局限性的知识。
规则2:定制
LLM 本身生成的内容有时很有用,但通常不能满足我们的需求。这就是为什么值得花时间定制系统指令,或者更好的是,使用允许创建至少几个适合我们的指令的选项。
例如,我使用的工具之一是 promptfoo.dev,它允许我自动测试我用于 AI 代理的提示。Promptfoo 是一个相对较新的工具,正在快速发展。这就是为什么 LLM 要么不了解它,要么他们的知识不包括最新功能。
如上例所示,LLM 使用我首选的模型生成了一个有效的配置文件。我创建了一个代码片段,使用我自己的规则修改了模型的行为,并提供了 Promptfoo 文档作为上下文。
规则3:工具
我提到,说到可用性,我并没有提到 GitHub Copilot,事实上,它是一款不错的工具。如今,最好使用 Cursor 作为 IDE。它具有内置的 AI 功能,如 Copilot++、内联生成和聊天。
Cursor 允许我选择代码,然后使用自然语言编写以指定所需的更改。最好的部分是,我可以引用多个文件、目录、整个代码库,甚至外部文档来提供完成的上下文。
JetBrains 的 IntelliJ 等其他 IDE 也遵循与 Cursor 类似的路径,但目前没有太多可比较的,我希望这种情况会很快改变。
同时,还有一个工具值得特别关注,那就是Aider 。如下所示,在这种情况下,我们只需描述我们想要在项目中进行的更改,Aider 将独立指出需要编辑的文件,然后自行进行更改,并在每个阶段要求我们确认。
Aider 在实践中表现良好,甚至其早期版本也被用户描述为“适合生产应用”。但是,我认为每个人都应该自己评估一下,尤其是因为启动这个工具很简单。
规则4:发挥创造力
创造力源自经验和高质量的知识来源。LLM的价值并不直接与模型本身、提示或你使用的工具有关,而是与你使用它们的方式有关。有时,想出使用新工具的自己的想法很有挑战性。我所做的是尝试将它们与我已经做过或知道的事情联系起来。
首先,在社交媒体和新闻简报中提供与生成式人工智能相关的最佳知识、想法和灵感来源。关注技术背后的人或公司,或真正在做自己工作的创造者。然后……做你自己的事情,但要探索你从未走过的道路。
90%
如果你看一下到目前为止这篇文章的内容,你可以清楚地看到我的整个专业环境都集中在生成式人工智能上,我的注意力集中在开辟道路并通过从他人那里汲取灵感或通过我自己的实验来寻找新的机会。
一些关键点:
- 我不会将自己的责任委托给人工智能
- 我不断更新我的知识,了解有关LLM的最新信息和与之合作的技巧
- 我使用 API 提供的最佳模型,包括撰写本文时的 Claude 3.5 Sonnet
- 我使用市场上最好的工具,并不断使用ProductHunt和X寻找新的解决方案
- 我通过LLM学习新技术和工具。我花时间聊天,就像在和老师说话一样
- 我生成的代码在我理解范围内或者略微超出我当前的知识或技能
- 我习惯将人工智能作为主要的信息来源,而且我越来越少使用 Perplexity、Google 或 StackOverflow
- 当 LLM 缺乏关于某个主题的知识时,我会通过粘贴文档、代码或 GitHub 上问题中的示例片段作为查询的上下文来提供。
- 对我来说,很明显,LLM 对我、我的项目和我需要实现的功能的背景知识有限,其运作的有效性很大程度上取决于我描述问题的方式
- 我很清楚 LLM 的推理能力有限。对于最困难的问题,我会把它们分解成更小的部分,或者用 LLM 来指导我,而不是直接解决它们
我并不是每天都使用 LLM,而是一直使用它。因此,我的代码现在有 90% 都是生成的。我的注意力已经从输入代码和查找拼写错误转移到实际塑造软件。