共计 4973 个字符,预计需要花费 13 分钟才能阅读完成。

本文转载自微信公众号:阿茶的 AI 之路,作者:起名贼费劲的阿茶,题图
原本打算撰写一篇关于 2024 年人工智能领域的年度总结,结果却未能如愿。现在打算将内容分成多个系列文章来呈现。本文首先探讨当前大模型为何在热烈宣传中,实际应用却多集中于 AI 编程领域。
毫无疑问,AI 编程是目前大模型落地最成功的应用之一。从 Github 的 Copilot 到 Cursor,再到首位 AI 程序员 Devin,众多观察者纷纷表示:AI 编程找到了产品市场契合(PMF)。
那么,究竟为何选择编程呢?
有人认为,“这是因为存在真实的需求。”难道 AI 在其他领域就没有实际需求吗?
也有人说,“因为代码生成相较于自然语言更为简单。”这是真的吗?
还有人提到,“其他领域的模型能力尚不够。”但为什么编程领域的模型却足够呢?
这些解释往往显得肤浅,今天我将从个人的视角出发,深入分析 AI 编程为何能够成功落地及其未来的发展前景。
让我们从一个问题入手。
一、代码与自然语言,究竟哪种生成更具挑战
“代码的关键词较少,规则固定,因此更易生成。”这是人们常用来解释 AI 编程为何有效的说法。
听起来似乎颇有道理,代码的关键词有限,模型只需从中选择,采样空间显然小于自然语言。
但自何而起,“词汇少 = 容易”这一说法成为了常态?如果真是如此,那么数学问题的描述简洁明了,符号也并不复杂。难道大模型在解决数学问题上反而更具优势吗?
显然不是。
如今,大模型甚至无法正确解析 JSON 格式。JSON 作为编程领域常用的数据交换格式,在处理复杂的 JSON 时,大模型常常出现括号匹配错误或层级关系混乱等问题。
将“代码更易生成”的论点进行分析,其实混淆了“生成”和“应用”这两个阶段。
在自然语言生成中,我们对大模型的容忍度极高。它可以出现语法错误、前后矛盾或逻辑混乱,依然能从中提取有价值的信息。因此,其容错率非常高。
然而,代码生成则是另一种维度的挑战。就像做数学题,代码能够运行就意味着成功,无法运行则会产生错误。它不存在“基本正确”或“大致可用”的模糊状态。每一个分号、每一处缩进、每个变量名都必须精确无误。因此,代码生成实际上更具难度,因为对其可用性的要求远远高于自然语言。
二、关键:可信验证机制
尽管代码生成难度较高,但为何它能在应用中取得最佳效果呢?反而是那些难度较低的领域效果不佳,真正的原因在于 编程具备一种可信的验证机制。
所谓可信验证,简单来说,就是一种能够快速、客观地判断 AI 输出结果可用性的验证模式。
1. 客观性:验证结果不依赖人或 AI 模型的主观判断;
2. 即时性:能够立刻得到验证结果;
3. 确定性:对即是对,错即是错。
接下来,我将探讨可信验证如何促成 AI 编程的成功。
1. 应用端的优势:快速而准确的验证
为何编程领域拥有完美的可信验证?让我想起一句流行的话:
恋人可能会背叛你,朋友可能会欺骗你,但数学不会,因为数学就是数学。
答案就在于代码的本质特性:程序设计与数学相似,是一个非黑即白的世界——能够运行就是能够运行,无法运行就无法运行。这种确定性源于一个关键角色:编译器。它负责将代码编译成可执行文件,整个过程严格遵循语法规则。

在这个过程中,编译器充当了一种独特的角色:它是一个第三方、非 AI、完全可靠的验证机制。它不受情绪影响,也不必担心人类的诱导,不会存在主观偏见,只会忠实地遵循语法规则。符合规则的代码会被编译,不符合的则会报错。
这种严谨的验证机制成就了 AI 编程的应用。在 AI 尝试落地的各个领域中,几乎没有哪个领域能像编程那样拥有如此客观、即时且确定的验证标准。这种验证机制对使用者的要求极低——不需要掌握编程原理,不需精通算法,只要能运行代码,就能判断大模型输出的结果是否可用。
为何强调非 AI?
因为大模型是基于概率的,因此必须依赖可靠的传统规则算法。当然,使用更高效的模型验证低效模型的输出也可以,但这依旧不够可靠。下一小节将对此进一步探讨。
注 1:为了确保行文流畅,我略去了一些细节,例如将编译和解释统称为“编译”……但这并非重点。
注 2:程序员直接查看代码生成质量也算一种可信验证,但这依赖于用户的知识水平。本节只讨论最基础的可信验证机制。
2. 模型端的优势:不断进化的合成数据
单靠可靠的验证机制还不够,模型本身的性能也至关重要。(你总不能接受一个成功率仅为 5% 的大模型吧)有趣的是,大模型在代码领域的进步似乎特别显著,并且持续改进。
这难道只是偶然吗?
业界一直在强调新模型在数学和代码方面的突破,却鲜少提到“AI 的对话更接近人类的表达。”这是为何?
答案可能令人震惊:因为训练数据出现了枯竭,大模型目前可能只能在代码领域获得进展。
许多人已经提到这一问题,模型的自然训练数据正面临枯竭。在大模型的训练中,数据与模型架构同样重要。数据的枯竭意味着模型性能的提升将受到制约。目前大模型厂商常用的应对措施包括:
(1)人工生成新的数据,方式包括在网上抓取或雇佣人员手动编写新的数据;
(2)利用更高级别或旧版本模型生成合成数据,以训练新模型。
人工生成新数据的成本极高,因此大多数都会选择使用合成数据进行训练。然而,利用模型生成的合成数据可能导致模型崩溃。已有大量研究证实,质量不佳的合成数据与人类语言的偏差会导致后续训练的模型输出逐渐偏离人类的表达。
关于 AI 编程的深入探讨与未来展望
那么,训练模型的团队是如何确保合成数据的生成质量呢?目前,尚无统一的客观评估标准。当前的主流做法是利用更先进的模型进行筛选,并结合人工判断。这种方法不仅成本高昂,而且在规模化应用上存在困难,可靠性也不足。
值得注意的是,可信验证机制能够有效保障代码合成数据的基本质量,从而缩小合成数据与人类数据之间的差距。
在代码验证方面,其标准是二元的 (能运行 / 不能运行), 能够成功运行并给出正确结果的被视为优质程序,而出现错误的则被认为是失败的程序。这种客观的标准使我们能够大规模地生成和验证合成数据,效果相当于数以千计的初级程序员不知疲倦地编写代码,从中筛选出可用的部分。
这正是代码合成可靠性的根源所在:即便生成的代码质量不尽如人意,但只要能够通过编译和运行,就具备一定的训练价值。这种低成本的质量保证机制,确保了模型在代码生成领域的持续进步。实际上,大模型生成的代码质量常常优于很多在 GitHub 上找到的代码。
3. 可信验证的双重价值
经过上述分析,我们可以发现,可信验证在人工智能编程领域扮演着双重角色:
-
在应用层面,它使得 AI 编程获得了用户的信任。用户无需具备专业知识,也不必进行复杂的判断,只需关注程序能否正常运行。这种直接的验证机制显著降低了使用门槛,推动了 AI 编程的普及,同时使得许多“零知识用户”也能够尝试。
零知识用户指的是那些不会编程但希望制作应用的人。这一概念可以扩展到其他领域。他们对可信验证的要求极高,因为他们无法处理异常情况。
-
在模型层面,它缓解了人工智能发展的数据瓶颈。在其他领域仍在为训练数据发愁之际,编程领域已经找到了可持续的数据来源。可信验证确保了合成数据的基本质量,使得模型能力得以不断提升。
可信验证不仅解决了“用户是否敢用”的问题,还为“模型如何进步”提供了答案。在大型模型产品的 B 端市场,可靠性一直是一个主要痛点。而可信验证机制则提供了一个行之有效的解决方案 —— 它使得输出结果可控且可快速验证,并与现有的代码审查机制相结合,大大降低了应用风险。
在可信验证的支持下,AI 编程形成了良性循环,开辟了一条可持续发展的道路。
三、关于 AI 编程的其他观察
1. AI 编程当前的局限性
(1)代码生成质量仍需提升
尽管存在可信验证机制,但目前 AI 生成的代码质量依然不均衡。幸运的是,我们可以通过代码覆盖率、复杂度等客观指标来评估代码质量(确实,更高级的可信验证),这些指标可以反过来指导训练数据的筛选,从而形成质量提升的闭环。
(2)AI 编程在语言支持上存在不平衡
AI 在 Python 语言上的表现相当优秀,但在 Java 等语言上则相对较弱。这背后有两个主要原因。
首先,训练数据的差异。Python 的开源社区活跃,为大型模型提供了丰富的高质量训练数据。
其次,语言特性的影响。Python 的语法相对灵活,容错性较高,这使得 AI 更容易生成有效的代码。相比之下,Java 等强类型语言的语法约束更加严格,对代码生成的要求也更高。
2. 自动化引发额外的心理负担
可信验证的及时性非常重要,否则可能给用户带来意想不到的心理负担。这一点在 Devin 的案例中表现得尤为突出。

Devin 被誉为全球首个 AI 程序员,声称具备全栈开发、自主学习新技术、构建和部署应用以及自主调试等多种能力。
在首次使用 Devin 时,确实给人一种非常愉快的体验。只需将任务指派给它,之后便无需再关注,仿佛真的拥有了一名能够独立完成任务的实习生,让我得以专注于其他工作,只需等待验收。
然而,与 Cursor 相比,Devin 存在两个致命缺陷:
(1)反馈时间较长,这意味着如果我给出的指令有误,或者它的思路出现偏差,我需要等待较长时间才能得知。这将严重影响工作效率,并造成更高的沉没成本。
(2)调试成本显著增加。AI 生成的代码如果量大,调试难度随之上升。由于这些代码并非自己编写,需要额外的时间来理解其逻辑。此外,更严重的是,在调试过程中,常常会不清楚问题出在代码生成上还是操作上,这对零知识用户尤为致命。
考虑到 AI 同样具备调试能力,我进行了一个实验:完全以零知识用户的身份,让 Devin 编写代码,再用 Claude 进行调试。Devin 花费了 20 多分钟编写代码,而 Claude 调试了一个小时,功能依然未能正常运行。
与自动驾驶不同,在驾驶中你可以随时接管,因为车辆的当前状态是显而易见的。然而在编程中,如果 AI 走入误区,之前的工作可能会完全失效。那几十分钟的等待,实际上就成了纯粹的时间浪费,最终得到的只是无用的代码。
注:Devin 表现不佳的一个重要原因可能是其背后的自研模型不够强大。我结合使用 Cursor 的 Agent 和 Claude,所生成的代码质量显著提升。
3. AI 编程未来的发展:更高级的可信验证
目前应用端的可信验证仍处于初级阶段,主要关注代码是否能够运行,注重终端输出结果。然而,随着技术的发展,未来将会出现更为高级的可信验证方法,涵盖更多考量因素。例如前文提到的覆盖率等指标。
现代集成开发环境(IDE)已具备自动检测性能隐患和安全漏洞的能力。这些自动化质量评估机制,本质上也是一种可信验证——它们同样具备客观性和即时性,只是验证维度更加多样。
此外,自动化测试也在不断进化。即便代码能够正常运行,仍需验证其功能的完整性。自动化测试框架可以生成测试用例、检查边界条件、验证业务逻辑,并对代码性能进行检测,从而提供另一层次的可信验证。这些客观的质量指标同样能够反馈到训练环节。这些进步意味着 AI 编程将从“基本可用”演变为“高质量”,像 Devin 这样的产品也会更为实用。我始终相信,Devin 是 AI 编程的未来,因为这种解放人力的自动化才是真正的自动化。
然而,这种 AI 编程不适合零知识用户,未来可能会极大提高程序员的生产力。对于零知识用户而言,或许 Dify 这样的平台更为可靠。
4. 对其他领域的启示
通过分析 AI 编程的成功,我们可以得出一个重要的启示:任何希望成功应用 AI 的领域,都需要找到适合的“可信验证”机制。
并非所有领域都能拥有像编程那样完美的编译器作为验证工具。我们可以借鉴这一思路,在各自的领域内建立相对可靠的验证机制。即便早期无法做到百分之百的准确性,但至少需要能够提供基本的可用性判断,让人们能够清晰了解模型的下限。可信验证不仅能降低使用门槛,还能为模型训练提供可靠的数据支持。
本文来源于微信公众号:阿茶的 AI 之路,作者:费力起名的阿茶
以上内容仅代表作者个人观点,并不反映虎嗅的立场。未经授权不得转载,如需授权请联系 hezuo@huxiu.com
正在推动变化和渴望改变世界的人们,都在 虎嗅 APP


文章分析了AI编程的成功,但我觉得可以更深入探讨如何将这种验证机制应用到其他领域,毕竟每个领域的需求和复杂性各有不同。