·人工智能5月20日 事实表明,AI无法替代开发者,但更适用于优秀的开发者。而识别大型语言模型(LLM)生成的代码什么时候会出错,需要开发人员具有丰富的知识和经验。
软件工程师David Showalter在谈到AI编程时表示:“目前,AI模型在帮助编程人员提高工作效率方面表现出色。”
那么,这一观点是否站得住脚?Showalter的言论实则是对AI专家Santiago Valdarrama的回应——他认为大型语言模型(LLM)作为编码助手目前还不完全可靠。
Valdarrama说:“除非LLM给我们同样的保证(就像编程语言一样让计算机始终响应命令),否则它们只能被视为华而不实的‘炫技’, 对多数应用程序的开发来说并无实际价值。”
他的观点颇具见地,LLM在如何回应提示方面显然是不一致的,即使是同一提示可能会得到截然不同的回应。因此,Showalter的看法可能过于乐观:虽然AI模型在辅助开发人员编写更多代码方面有不俗的表现,但这并不等同于能够生成高质量的可用代码。
AI和软件开发成功的关键在于敏锐地识别那些潜在的不完善之处。许多开发人员并没有意识到这一点,他们过于依赖LLM的输出结果。
正如计算机科学网站HackerNews的一位评论员所说,“我想知道的是,用户对于ChatGPT的信任有多少是建立在那些看似完美无缺的示例之上的……尤其是对于特定类型的用户来说。”为了能够在软件开发中有效地使用AI,开发人员需要足够的经验判断LLM的输出什么时候可能不够准确或存在误导。
并没有简单的解决方案
关于LLM在软件开发中的应用和表现存在不同的看法。正如HackerNews网站的一些评论所展示的那样,许多开发人员并不赞同过度依赖LLM的输出。
他们反驳的理由通常归结为:“当然,开发人员不能盲目地信任LLM的输出,就像他们不会无条件地信任在Stack Overflow上找到的代码,或者完全依赖集成开发环境(IDE)等工具一样。”
就目前而言,这种看法是正确的,但现实往往并不尽如人意。例如,虽然开发人员不应该完全相信他们使用的集成开发环境(IDE),但IDE在处理基本编程任务时具备一定程度的准确性和稳定性,例如不会随意“破坏”程序或弄乱Lisp括号。ChatGPT很可能会出错,但是IDE很少出现这种情况。
对于Stack Overflow上的代码来说,可能有不同的使用方式。有些开发人员可能会直接复制粘贴代码,而不进行检查。但明智的开发人员则会采取更为审慎的态度。他们会首先查看有关代码的评论,以评估其质量和适用性。
LLM的输出并不包含这样的信号。正如一位开发人员所建议的那样,“将Stack Overflow和LLM的输出都视为可能是错误的结果,并且可能是由经验不足的开发人员编写的代码。”这是一种明智的做法。即使存在错误,这些代码片段或建议也可能为提供有价值的启示,帮助开发人员朝着正确的方向前进。
同样,这需要开发人员具备足够的经验以识别Stack Overflow的代码示例或LLM生成的代码是否存在错误。或者开发人员足够明智,只将这些代码用在“200行样板文件”或“React页面中的大表”等常见的场景中。在这些场景中,可以不必完全信任这些代码,只需在完成之后进行测试即可。
总之,正如一位开发人员所总结的那样,“我对LLM的信任程度就像我对初级开发人员或实习生的信任一样。我会给它分配一些我知道如何完成的任务,以此验证其准确性,但不会在这些任务上花费过多的时间。这无疑是最佳的策略。从AI中获益最大的开发人员是那些明智的人,他们知道LLM什么时候可能会出错,但同时也能从中得到一些好处。”
寻求正确使用的方法
开源Python工具Datasette创始人Simon Wilison曾经提出这样的观点,“从AI中获得最佳结果实际上需要大量的知识和经验,因为很多都归结于直觉。”他建议经验丰富的开发人员测试不同LLM的局限性,以衡量它们的相对优势和劣势,即便一些LLM模型表现不尽如人意,仍然可以利用其价值。
初级开发人员如何有效利用AI进行编程?AWS AI开发者体验主管Doug Seven表示,像Amazon Q Developer(前身为CodeWhisperer)这样的编码助手,对经验不足的开发人员同样可以提供帮助。这些工具能够为他们提供有价值的建议,帮助他们明确编程思路,从而减少编程过程中频繁向他人求助的需求。
也许正确的答案是:取决于具体情况!
而且重要的是,软件开发的理念通常不是“更快、更多地编写代码”。实际上,优秀的开发人员编写代码的时间很少,而花费更多的时间思考需要解决的问题以及如何找到最佳解决方案。
LLM可以在这方面提供帮助,正如Willison所指出的那样:“ChatGPT(以及GitHub Copilot)为我节省了大量的‘深思熟虑’的时间。从在Bash中编写For循环到记住如何在Javascript中进行跨域CORS请求,我甚至不需要再查找其他资料。”
(免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。 )