slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
迎接 AI 编码的新时代
17611538698
webmaster@21cto.com

迎接 AI 编码的新时代

人工智能 0 922 2024-10-04 09:06:40

图片

导读:使用大语言模型 (LLM) ,或将永远改变软件工程师编写代码的方式。

上周末,我使用Cursor(https://www.cursor.com/,一款基于 LLM 的 IDE)创建了一个业余软件项目。我自己没有写过一行代码(我没有得到任何赞助)。

这个项目只花了我周末的时间,如果没用到大语言模型,至少要花一周的时间。

尽管这个 LLM 并不怎么完美(我稍后还会解释它们在哪些方面不好用),但它们可以很好地完成编程中让人不满意的,还有重复的部分。

新的编码行为


当你用一个命令就能编写完整功能的代码时,会发生一件有趣的事情。丢弃代码并使用经过调整的提示重试会变得更加高效。


调试坏的代码比提示工程可是要慢得多。


图片


典型的开发流程:丢弃更改,直到成功为止

这种操作有利有弊。我做事的速度更快,但对代码的理解也更少得多。这让我感觉头疼,因为我接受的代码在孤岛中是有意义的,但在缩小范围后就变得有点滑稽。

例如,我曾经有两个针对同一概念但相互竞争的数据模型。如果我自己编写代码,我就可以避免这种明显的设计错误。

此外,LLM 让你使用打印语句调试比使用调试器更加好用。我以前更喜欢调试器,因为它们可以更快地检查任意程序状态。但是现在,我们不再需要手动输入打印语句。

现在 LLM 可以让你通过一个轻松地提示词,在任何地方注入高质量的打印语句。这可以帮助你更快地运行和检查程序。完成后,你可以同样轻松地清理所有打印语句。

再见!Google


大多数情况下,LLM 的回复都比 Google 的质量要好。它们会给出更有针对性的答案,因此你不需要再阅读教程或 Stack Overflow 搜索答案。只有少数几次,我仍然需要 Google。

下面是两个真实例子:

  • 有价值答案- 我希望我的 Chrome 扩展程序能够在不更改其 DOM 的情况下覆盖当前页面。LLM 一直给我明显的答案,即向 DOM 中注入组件。但 Google 为我提供了一个更好的答案,满足了我的要求。

  • 奇怪的错误- 如果你创建 OpenAI API 密钥,但没有注册信用卡,API 将失败并显示 429 响应代码(请求过多)。LLM 一直为我提供缓存和速率限制代码的解决方案,这很有意义但没有实质作用。我用 Google搜索直接显示这是因为没有信用卡存档。


了解你的大语言模型 (LLM)


图片

你需要知道如何查询 LLM 才能充分利用它们。经过一两天的尝试,你就会知道什么可行,什么不可行。


以下是我在编码经验中的几个例子:


  • 擅长:

    • 细微而集中的变化- 如果是小型算法,无论算法多么复杂,几乎都是完美的。

    • 基本 UI - 非常感谢。我的业余项目看起来界面不错,我不需要调整太多 CSS。

    • 转译- 开始这个项目几个小时后,我意识到需要强类型。我只用了一两分钟就将所有原生 Javascript 转换为 Typescript。

  • 不擅长:

    • 代码之外的变化- 在设置我的环境或保证我的项目目录中的引用时它是不可靠的。

    • 开放式功能- 功能越模糊,提示语越有可能失败。功能越大,我需要给出具体的项目说明。


我默认选择的 LLM 是“claude-3.5-sonnet”。它运行速度快,大多数时候都能正常工作。

当 Claude 遇到问题时,我会尝试所知晓的最强大模型(比如OpenAI 的 O1 模型)。在许多情况下,这种方法是可行的,尽管它很慢(需要几分钟)并且也很昂贵(每个请求 0.40 美元)。

如果失败了,那么我会将功能分解为范围明确的任务。

图片


从上面的图中,你应该会看到我周末用了 373 次“Claude-3.5”和 46 次“O1-preview”。


希望有一天 LLM 工具能够根据任务难度自动选择模型。在还没有到达之前,最好手动了解每个模型可以做些什么,然后可以来平衡质量和成本。


现在最重要的是什么


尽管基于 LLM 的开发速度更快,但是我们仍然需要克服许多限制。有助于解决这些限制的技能包括:

  1. 高级规划和设计- 对于 LLM 来说,细节和范围明确的算法更改很容易。规划功能路线图和技术架构设计更为重要,因为 LLM 在这方面做得还不够好。

  2. 调试- 有时我可以将错误转储到 LLM 中,它就会帮我找出问题所在。但很多时候,即使是明显的错误(例如删除了关键代码或更改了函数名称),它也会遇到麻烦。


此外,我当时正在开发一个简单的全栈应用程序。LLM 训练数据中有很多在线示例,全栈样板代码也没有歧义。

对于行业中许多领域的尖端专有代码来说,这种做法的效果显然要逊色得多。

基于 LLM 的代码生成是一种功能强大的工具,它可以取代编写简单、范围明确的代码。这并不意味着人工智能正在抢走开发者们的工作。

也可以尝试一下,你会发现它还远远没有达到这个目标。

我乐观地认为这些编码工具定会改善我们的生活,用英语编程的感觉会很棒。我可以用更少的时间和精力来表达自己。

这让我想起了职业生涯发展过程中感受到的满足感。做高杠杆的工作比处理编译器错误,还有缺少分号等令人沮丧的实现细节要有意思得多。

它让我们可以自由地做有趣、有创意的工作。如果你也喜欢这篇文章,可以考虑与朋友分享、点赞、在看哦!~

作者:聆听音乐的鱼

评论