近些年来,随着AI等前沿技术的不断创新和应用,使得更多人得以触及AI时代的科技前沿。作为AI的一个分支,AI编程也日渐走进大众视野,并承载着极高的期待。
在CSDN举办的「开谈:AI编程的前世今生」直播活动中,我们荣幸邀请到了华为CodeArts Snap代码生成工具模型负责人李钟麒以及aiXcoder联合创始人郝逸洋,两位AI领域的专家共同探讨了AI编程技术取得突破性进展背后的原因。
通过搜索『CSDN』视频号,您可以观看本场直播回放。以下是他们的精彩对话:
前世:AI编程的历史发展
《开谈》: AI编程近年来发展情况如何?有哪些关键节点?
郝逸洋: 我认为在深度学习兴起后,“AI编程”的理念才逐渐浮现。在此之前,学术界的叫法为“知识工程”,但这一概念并未广泛进入生产环境。直到2017年、2018年深度学习热潮兴起,“AI for Code”的概念才在学术圈被接受,成为一个独立领域。随后,自然语言处理(NLP)技术被应用于代码处理,将代码视为自然语言。例如,我的导师李戈老师(北京大学的李戈老师)曾使用Linux源代码进行训练,虽然模型无法编译,但能生成类似Linux的代码。2019年,AI技术尚处于早期阶段,但随后一两年间,国外一些公司对AI进行了更多尝试,如以色列的Codota公司和美国的Kite公司,最初从事代码搜索,后来也进行了公司转型,专注于代码辅助编写。随着大模型的兴起,自然语言处理取得了显著进展,OpenAI便是典型例子。如今,大家纷纷投身于大模型领域。
李钟麒: 我认为有两个关键节点:一是2020年,AI逐渐受到广泛关注;二是Codex的出现。Codex作为OpenAI支持GitHub Copilot的大规模预训练模型,引起了广泛关注并带来了良好的用户反馈,从而促使国内外许多公司开始行动。
《开谈》: 两位都在负责AI智能编程工具,你们的工具有何异同?
郝逸洋: 在核心功能上相似,例如用户写代码时,我们可以直接补全他可能想要的内容。不同之处在于,AI Xcoder有两种模式:线上模式和离线模式。线上模式采用大模型,离线模式采用小模型。我们的工具在技术细节上有所差异,但在用户层面,这些差异被淡化。
李钟麒: 相似之处在于两个工具都围绕用户需求展开。不同点主要体现在服务对象和模型结构上。如果工具主要服务于专业编程人士,他们更倾向专业化和准确性强的编码工具。在AI智能编程工具的水平上,我认为都趋于一致。但落实到产品中,需要看各自的产品包装能力和产品落地能力,同时每个工具服务的用户也不同。
今生:攻克AI编程的难关
《开谈》: 在开发AI编程工具过程中遇到哪些难题?
李钟麒: 首先是场景问题。当函数生成的准确率提高时,上下文的感知能力会减弱。此外,如何高效地将信息告诉AI模型并扩大其视野是挑战之一。我认为终极目标是让AI编程工具能代替人们编写程序,但目前存在巨大挑战。其次是个性化挑战。不同产品线和公司有不同的编写习惯和安全顾虑。模型的推断需要上下文输入,而公有化部署存在安全性挑战。
郝逸洋: 难点一是成本问题。当前模型对计算资源要求很高,若提供免费服务且用户多元化,这不是健康的商业模式。此外,每个企业都有自己的框架和信息安全需求,定制化会增加成本。难点二是在企业内做私有化部署时,信息安全成为重要考量因素。
《开谈》: AI编程在什么领域更容易推进?
郝逸洋: 我认为是互联网领域。大互联网企业有自己的AI计算中心,可以适配不同显卡。若没有这些资源,采购流程会显得繁琐。李钟麒也认同互联网领域更容易推进,因为涉及编码的用户群体更多。然而在互联网公开领域,大家的能力都不错,只是需要更多数据支持定制化部分。
《开谈》: 自GitHub Copilot推出以来,代码版权问题持续不断。如何规避类似风险?
郝逸洋: “有风险”这件事与AI编程本质无关。例如猴子敲键盘也能写出侵犯知识产权的代码。关键在于开源代码溯源问题不仅限于AI时代。李钟麒提到避免抄袭的方法是在数据上做文章如不使用代码放入模型以规避问题并在生成安全性上进行预料处理以防止隐私泄漏。
未来:展望AI编程的发展
《开谈》: 未来AI能否学会写高级代码取代程序员?
李钟麒: 我认为AI的智能来源于数据而数据的创造者是人而AI更像是人类的程序员。关于“AI是否会取代程序员”这个话题很难回答但从AI发展方向看AI可能会实现简单开发和定制软件但面对复杂场景仍存在瓶颈未来多模态会与AI结合并不仅限于NLP方向还会结合diffusion model和非文本信息文本信息等实现突破“高智能”强AI时代离现阶段还很远。
郝逸洋: 我认为前途是光明的目前AI在生成简单功能方面已达到50%-60%的准确率对于复杂功能若能将上下文信息更好地传入也能完成得很好目前欠缺的是对输出代码的错误的修正和调试能力的突破将使得AI在更多场景上取得进展就自身在做的工具而言更关注准确率和个性化以适应不同用户的需求并开发新功能以满足用户反馈的需求。
《开谈》: 阻碍AI编程技术发展的难题是什么?未来发展方向在何处?
李钟麒: 我认为难点是算力随着模型规模提升对算力要求越来越高必将面临效率低下的问题因此是否能创造具备创造性的架构如transformer模型的下一代是学术界和工业界的需求之一在未来AI编程的语义理解很重要不能局限在生成上如何定位问题解决问题程序纠偏都是需要去做的实现突破后可以在更多场景上取得进展就自身在做的工具而言更关注准确率和个性化以适应不同用户的需求并根据用户反馈进行新功能开发以适应未来发展趋势和市场需求变化实现更高效更智能的编程体验以满足不同行业和领域对高质量代码编写的需求推动整个行业向前发展创造更多价值和创新成果为科技进步和社会发展贡献力量实现人工智能与编程领域的完美融合和协同发展共同迎接未来的挑战和机遇共同创造更加美好的未来!