17611538698
webmaster@21cto.com

技术高管在开发者论坛上表示,要鼓励对AI编码持怀疑态度的人,遏制狂热分子

人工智能 0 141 3天前

图片


目前,开发者们面临的大概最紧迫问题之一就是编程的未来。

Anthropic 的首席执行官这样表示,在未来三到六个月内,人工智能将负责编写软件开发人员负责的 90% 的代码。

Birgitta Böckeler 在“AI 编程现状”的演讲中告诉与会者,现场观众不禁发出紧张的笑声。

QCon 开发者大会本周正在英国伦敦举行,其内容中充满了独特的 AI 元素。Thoughtworks 软件开发公司 AI 辅助软件交付全球负责人 Böckeler 和与会人员交流,人们应该创造一种鼓励实验和 AI 质疑的文化。

主办 QCon 的 C4Media 总裁 Dio Synodinos 在会议开始时这样表示说:

“我们正在经历整个软件开发史上最令人着迷也最令人困惑的时期。如果你正经历着好奇、兴奋,或许还有一丝不确定性,或者非常不确定,那么你并不孤单。” 

他表示,有些难题“可能没有简单的答案”。 


图片
Thoughtworks 人工智能辅助软件交付全球负责人 Birgitta Böckeler

在演讲中,Böckeler 快速介绍了过去几年人工智能编程的发展。

“一切都是从自动建议开始的,对不对?”她这样评论道,“就像强化版的自动完成一样。”

之后是聊天功能,程序员可以在 IDE 中提问;再之后是改进的上下文和“与代码库聊天”的能力,例如询问特定 UI 元素的测试在哪里,这对于检查不熟悉的代码非常有用。

因为大型语言模型 (LLM) 提供更多上下文的能力,提问也提升了它们自己的能力,模型本身也得到了有效改进。

“Claude Sonnet 模型,例如 3.5、3.7,是迄今为止最受欢迎的编程模型,”她这样说道。

那么,这对生产力的影响究竟有多大?

她说道,生产力提升幅度远不像 GitHub 之类的公司所宣称的 55%。大多数开发者表示,他们用于编码的时间不到 30%;而且 AI 也并不总是有用。

“假设 60% 的时间里,编码助手确实有用……如果你有这些数字,那么它对你的周期时间的影响就是 13%……你可能甚至感觉不到这一点。”她表示,在实践中,Thoughtworks 发现使用 AI 辅助编码可以带来约 8% 的提升;不过这仍然值得,但并不显著。

然而,通用人工智能(Gen AI)是一个不断变化的目标。

“现在,代理(Agent)已经进入了这个领域。” Böckeler 表示,尽管“代理”一词被广泛使用,但其定义尚未完全明确。在这种情况下,“代理”指的是一个编码助手,它可以访问工具,读取文件、修改文件、执行命令并运行测试。该助手会整理出一个“精心编排的提示”,并将其发送给大语言模型(LLM),并附上其可用工具的描述,“几乎就像 API 描述一样”。

大语言模型(LLM)可能会提出更多问题,“所以我们会反复讨论,这就是代理的工作原理,”Böckeler 说。

“我一直在用它,不仅仅是因为这是我的工作。它有点让人上瘾……我看到有人在Reddit上写道,它有点像老虎机,要么赢要么不赢,你总是得投入更多钱才能再试一次,”她这样补充说道。 

Böckeler说,很多时候,代理能够帮助我们更快地解决问题。

演讲者还提到了“目前正在蓬勃发展的”MCP(模型上下文协议)。代理是 MCP 客户端,而 MCP 服务器可以在任何地方运行,包括本地机器。开发人员可以编写 MCP 服务器代码来执行诸如“查询我的特定测试数据库,或向 JIRA 工单添加评论”之类的操作。编码助手可以将 MCP 工具的描述发送给 LLM,从而扩展代理可用的功能。

Böckeler还问道:“会出什么问题?” 许多人正在构建和共享 MCP 服务器,“你使用编码助手所做的事情正处于软件供应链的中段,是一个非常有价值的目标,”她说。如果你不关注某个工具正在做什么,它可能会显示一条“调用某个攻击者服务器”的语句。

演讲的主题现在转向了AI编码的其他问题。“你的模型不可能一直按照你的意愿行事,尤其是在你的课程越来越长的情况下,”Böckeler说道。更大的上下文窗口——发送给LLM的上下文数量,这意味着对细节的关注度会降低。像“遵循最佳实践”这样的指示可能行不通,因为我们不知道LLM认为的最佳实践是什么。

开发人员可以添加规则文件,指导 LLM 遵守组织标准或其他最佳实践,但这也存在风险。“人们在互联网上共享[自定义规则],”Böckeler 说,并且发现了一个漏洞,规则中可能存在隐藏字符,导致 LLM 生成额外的代码。“他们可能会在你的 HTML 中添加一个脚本标签,调用某个攻击者的服务器。”

Böckeler 还提到了氛围编码,以及如果使用不当可能会导致灾难。

她还说,人工智能“乐于助人,博学多识,但缺乏经验”。它就像一个“不会承认自己不懂”的团队成员。如果由业余人员使用,他们无法识别出问题所在,就会带来风险。

她还举了一个例子:在处理 JavaScript 应用程序中的 Docker 文件时,AI 工具告诉她遇到了内存不足错误,应该增加内存限制。然而这种修复方式是错误的。她需要弄清楚内存错误发生的原因,然后才能修复它。这种强行修复只会“引发更大的麻烦”。

Böckeler 引用了GitClear 的研究,该研究表明,人工智能编码正在增加代码流失并减少重构,为未来埋下隐患。

她说:“人工智能现在已经在我们的工具箱中,它不会消失,尽管我最后提出了这些警告,但如果以负责任的方式使用,它将非常有用。”

因此开发团队必须学会如何管理 AI 代码。“不要让 AI 左右摇摆,”Böckeler 说道,他指的是那些在拉取请求中进行 AI 代码审查的工具。“为什么它必须在拉取请求中?为什么不在我推送之前就写好?”

人工智能编码本身就存在局限性。“有些问题……我看不出在使用大语言模型时如何才能完全克服它们,”她这样说道。


图片

人工智能:平衡团队中的爱好者和怀疑者

Böckeler 还表示,团队中既有对人工智能持怀疑态度的人,也有热情的支持者。她最后建议要欣赏队友。

“如果你是热情支持者,当怀疑者尝试一些两个月前他们不会尝试的事情时,要充分给予褒奖。
如果你更倾向于怀疑,要欣赏你的同事们的尝试,因为人工智能有一些意想不到的特性和缺点,并在他们仔细观察结果时,给予大大地赞扬。”


作者:场长

评论