Hacker News 中文摘要

RSS订阅

关于LLM与软件开发的几点思考 -- Some thoughts on LLMs and software development

文章摘要

作者在离开日常工作的前夕,分享了对LLMs(大语言模型)和AI在软件开发中应用的思考。他指出,现有调查未能充分考虑人们如何使用LLMs,多数人仅将其作为高级自动补全工具,而真正从中获益的人则倾向于让LLM直接读取和编辑源代码。作者担心忽略不同工作流程的调查数据会误导人们。此外,他还讨论了LLMs对编程未来的影响,认为尽管LLMs可能改变行业,但不会完全取代初级或高级工程师。

文章总结

关于大语言模型(LLMs)与软件开发的一些思考

在即将离开网站管理几周之际(部分休假,部分工作),我忍不住想分享一些关于LLMs和AI现状的零散想法。

LLMs的使用方式与调查的局限性
我注意到一些关于AI对软件开发影响的早期调查,但这些调查往往忽略了人们如何使用LLMs。大多数LLM的使用方式类似于高级的自动补全工具,如Copilot。然而,那些从LLMs中获得最大价值的人认为,自动补全并不十分有用,他们更倾向于让LLMs直接读取和编辑源代码文件来完成任务。我的担忧是,忽略不同工作流程的调查可能会产生误导性的数据。

编程的未来与LLMs的影响
我经常被问到:“编程的未来是什么?”、“现在是否应该进入软件开发领域?”、“LLMs是否会淘汰初级工程师?”、“高级工程师是否应该尽早转行?”我的回答是:“我完全不知道。”我认为,任何声称自己知道未来的人都是在胡说八道。我们仍在探索如何有效使用LLMs,尤其是在它们可能获得显著改进的情况下。我建议人们多尝试LLMs,至少阅读他人的经验,并关注他们的工作流程细节。

AI是否是一个泡沫?
我的回答是:“当然是一个泡沫。”所有重大技术进步都伴随着经济泡沫,从运河、铁路到互联网。我们几乎可以肯定这个泡沫会破裂,导致大量投资化为乌有。但我们不知道它何时会破裂,以及在此之前泡沫会膨胀到多大,并在这个过程中产生一些真正的价值。泡沫破裂时,许多公司会倒闭,但并非所有。例如,互联网泡沫破裂时,Pets.com和Webvan倒闭了,但亚马逊幸存了下来。

LLMs的“幻觉”特性
我的前同事Rebecca Parsons长期认为,LLMs的“幻觉”不是缺陷,而是特性。LLMs所做的就是产生幻觉,只是我们发现其中一些有用。因此,我们应该多次向LLM提出相同的问题,或许在措辞上稍作变化,然后比较答案,甚至让LLM自己比较答案。答案之间的差异可能与答案本身一样有用。特别是当我们向LLM询问数字答案时,至少应该问三次,以了解其变化范围。此外,我们不应该让LLM计算我们可以确定性地计算的答案。

LLMs与工程中的不确定性
其他形式的工程必须考虑世界的变化性。结构工程师会为无法测量的因素留出容差。工艺工程师考虑到人类执行任务时可能会遗忘或疏忽。软件工程的特殊之处在于它处理的是确定性机器。也许LLMs标志着我们进入了非确定性的工程世界。

LLMs与初级工程师的类比
我经常听到将LLMs比作初级同事,但LLMs往往会说“所有测试通过”,而当我运行测试时却失败了。如果这是初级工程师的行为,人力资源部门很快就会介入。

LLMs带来的安全风险
LLMs极大地增加了软件系统的攻击面。Simon Willison描述了AI代理的“致命三要素”:访问私人数据、接触不受信任的内容以及外部通信能力。不受信任的内容可能以各种方式出现,例如让LLM读取网页,攻击者可以在网页上以1pt白底白字的方式插入指令,诱骗LLM获取私人数据。这在浏览器中运行的代理尤为严重,攻击者可以诱骗代理在另一个标签页中访问你的银行账户,并将余额转移给“好心”的攻击者。Willison认为,“代理浏览器扩展的整个概念存在致命缺陷,无法安全构建”。

评论总结

  1. 技术泡沫的普遍性:部分评论质疑所有重大技术进步都伴随经济泡沫的观点,指出并非所有技术(如航空、汽车、织布机)在发明时都经历了泡沫。例如,krainboltgreene指出:“没有证据表明航空或汽车技术发明时存在泡沫。” crawshaw也提到:“电力、钢铁、战前航空技术并没有泡沫。”

  2. AI与就业影响:评论者认为AI带来的失业问题类似于“离岸外包2.0”,并指出AI将改变工作方式,尤其是对初级和高级工程师的影响。gjsman-1000表示:“AI带来的失业问题就像离岸外包2.0。” skhameneh则认为:“初级工程师可以更快上手,而高级工程师可以专注于更高层次的任务。”

  3. LLM的幻觉特性:部分评论者认为LLM的“幻觉”是其核心特性,而非缺陷。sebnukem2表示:“幻觉不是LLM的缺陷,而是其特性。” Scubabear68则反驳:“Fowler误解了‘幻觉’在LLM中的具体含义。”

  4. LLM的使用与生产力:评论者分享了使用LLM提升生产力的经验,但也提到潜在的债务问题。daving表示:“LLM让我在更短时间内完成更多工作,但也存在潜在的债务问题。” iLoveOncall则指出:“大多数LLM使用只是高级自动补全。”

  5. 未来不确定性:评论者对AI未来的不确定性表示担忧,认为预测未来是困难的。rancar2引用:“任何声称知道未来的人都是在胡说。” catigula则指出:“软件开发的未来充满不确定性,这对学生来说不是好兆头。”

  6. LLM与工程师的比较:评论者将LLM比作初级或高级工程师,指出其优缺点。dionian表示:“LLM可以快速重写代码,比雇佣初级工程师更便宜。” nicwolff则形容:“LLM像经验丰富但酗酒的高级工程师。”

  7. LLM的多次提问与验证:评论者建议通过多次提问和交叉验证来提高LLM的准确性。bko提到:“像警察审讯一样,多次提问可以验证答案的可靠性。” sudhirb则分享:“通过多次运行LLM并选择最佳答案,可以提高性能。”