谷歌AI助力软件工程的进展及未来展望

  每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/

回顾与现状

在2019年,无论是在谷歌还是其他地方,软件工程师们虽然听说过机器学习的进步,特别是深度学习在计算机视觉和语言翻译领域的显著效果,但他们很难想象这些技术会如何在软件开发中产生影响。仅仅五年后的2024年,AI辅助写代码已成为软件工程师中的热门话题,许多人都在使用基于机器学习的自动补全工具,无论是公司内部工具(如谷歌的内部代码补全)还是商业产品。

谷歌在这篇博客中,介绍了内部软件开发工具的最新AI改进,并讨论了未来五年的预期变化。团队负责谷歌工程师大部分时间所用的软件开发环境,包括内循环(如IDE、代码审查、代码搜索)和外循环界面(如缺陷管理、规划)。通过这些改进,直接提升了开发者的生产力和满意度,这是谷歌密切关注的两个指标。

挑战

AI技术发展迅速,预测哪些想法应该首先探索一直是个挑战。技术上可行的演示与成功产品化之间通常存在显著差距。谷歌遵循三条准则来将想法应用于产品:

  1. 优先考虑技术可行性和影响力:专注于已经确定技术可行性并对工程师工作流程有高影响力的想法。
  2. 快速学习以改进用户体验和模型质量:专注于快速迭代和提取经验教训,同时保障开发者的生产力和幸福感。用户体验与模型质量同样重要。
  3. 衡量效果:目标是提升生产力和满意度指标,因此需要广泛监控这些指标。

将LLM应用于软件开发

随着Transformer架构的出现,谷歌开始探索如何将大型语言模型(LLM)应用于软件开发。基于LLM的内联代码补全是AI在软件开发中最受欢迎的应用:使用代码本身作为训练数据是自然的应用方式。用户体验感觉自然,因为单词级自动补全已是IDE多年的核心功能。此外,可以使用一个粗略的影响衡量方法,例如由AI生成的新字符的百分比。因此,这一LLM应用成为首个部署的合理选择。

早期的博客介绍了谷歌如何通过代码补全提升用户体验及其影响测量。从那时起,企业环境中类似的快速增长也得以实现,软件工程师的接受率达到了37%,帮助完成了50%的代码字符。换句话说,现在代码中的字符有一半是由AI辅助完成的,而不是开发者手动输入的。虽然开发者仍需花时间审查建议,但他们有更多时间专注于代码设计。

关键改进

关键改进来自模型(更大的模型具有改进的编码能力,提供给模型的上下文构建的启发式方法,以及基于接受、拒绝和纠正的使用日志调整模型)和用户体验。这一循环对于从实际行为中学习,而不是从合成公式中学习至关重要。

谷歌利用多年来精心整理的跨多个工具的高质量内部软件工程活动日志。这些数据使谷歌能够表示细粒度的代码编辑、构建结果、解决构建问题的编辑、代码复制粘贴操作、修复粘贴代码、代码审查、解决审查问题的编辑以及代码提交到存储库的变更。训练数据是带有特定任务注释的代码对齐语料库。数据收集过程的设计、训练数据的形状以及基于这些数据训练的模型在DIDACT博客中进行了描述。谷歌继续利用这些强大的数据集与更新一代的基础模型进行探索。

下一个重大部署是解决代码审查评论(超过8%现在通过AI辅助完成)和自动适应周围上下文的粘贴代码(现在负责IDE中约2%的代码)。其他部署包括用自然语言指示IDE进行代码编辑和预测构建失败的修复。其他应用,例如预测代码可读性提示,遵循类似模式也是可能的。

学习成果

到目前为止,谷歌的工作教会了几件事:

  1. 用户体验的自然融合:取得最高影响的是自然融入用户工作流程的用户体验。在所有上述示例中,建议会呈现给用户,只需按一下Tab键或点击一下就可以进行下一步。需要用户记住触发功能的实验未能规模化。
  2. 平衡代码审查成本和增加值:观察到,随着AI建议的增多,代码作者越来越成为审查者,找到审查成本和增加值之间的平衡很重要。通常通过接受率目标来解决这一权衡。
  3. 快速迭代和在线A/B测试:快速迭代和在线A/B测试是关键,因为离线指标往往只是用户价值的粗略代理。通过在内部工具中展示AI功能,能够轻松发布和迭代,测量使用数据,并通过用户体验研究直接向用户询问他们的体验。
  4. 高质量数据的重要性:谷歌工程师在软件工具中的活动数据,包括与功能的互动数据,对于模型质量至关重要。
  5. 优化机会转化:观察到跨功能的优化机会转化,从机会(主要是用户活动,如下图漏斗顶部所示)到影响(应用AI辅助,如漏斗底部所示),同时通过用户体验和模型改进消除漏斗中间步骤的瓶颈。

展望未来

受到迄今成功的鼓舞,谷歌正在加倍努力,将最新的基础模型(Gemini系列)与开发者数据(如上所述的DIDACT的一部分)结合,推动现有和新的ML在谷歌软件工程中的应用。

在整个行业中,基于ML的代码补全为软件开发者提供了重大推动。虽然在代码生成方面仍有改进的机会,但预计下一波收益将来自更广泛的软件工程活动的ML辅助,例如测试、代码理解和代码维护;后者在企业环境中特别重要。这些机会为谷歌的持续工作提供了信息。谷歌还强调了两个行业趋势:

  1. 自然语言的人机交互:人机交互已转向自然语言作为常见模式,正在转向使用语言作为软件工程任务的界面以及开发者信息需求的入口,所有这些都集成在IDEs中。
  2. ML自动化大规模任务:从诊断问题到实施修复的大规模任务的ML自动化已开始显示出可行性。这些可能性由代理和工具使用的创新驱动,允许构建使用一个或多个LLM作为组件来完成更大任务的系统。

为了扩展上述成功并迈向下一代能力,从事该主题的实践者和研究人员社区将受益于共同基准的帮助,以推动该领域向实际工程任务发展。迄今为止,基准主要集中在代码生成(如HumanEval)。然而,在企业环境中,针对更广泛任务的基准可能特别有价值,例如代码迁移和生产调试。一些基准,例如用于错误解决的基准(如SWEBench),以及针对这些基准的原型(如来自Cognition AI)已经发布。谷歌鼓励社区共同提出更多基准,以涵盖更广泛的软件工程任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/26082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI 宕机事件:GPT 停摆的影响与应对

引言 2024年6月4日,OpenAI 的 GPT 模型发生了一次全球性的宕机,持续时间长达8小时。此次宕机不仅影响了OpenAI自家的服务,还导致大量用户涌向竞争对手平台,如Claude和Gemini,结果也导致这些平台出现故障。这次事件的广…

在 Word 中,如何有效调整文字与下划线之间的距离

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 如果你在使用 Word 时,希望调整文字和下划线之间的距离,让它们看起来更加美观,可以按照以下步骤操作: 1. 在你想要加下划线的文字前后各加一个空格&…

在windows10 安装子系统linux(WSL安装方式)

在 windows 10 平台采用了WSL安装方式安装linux子系统 1 查找自己想要安装的linux子系统 wsl --list --online 2 在线安装 个人用Debian比较多,这里选择Debian,如下图: wsl --install -d Debian 安装过程中有一步要求输入用户名与密码&…

使用Vue CLI在其他磁盘创建项目出现错误及解决

Vue CLI是Vue.js官方推出的脚手架工具,可以帮我们快速的创建Vue项目框架。 我们创建Vue项目时一般默认都是在C盘,但由于某些因素我们需要在其他磁盘上创建Vue项目。 通过“winr”打开终端时默认位置都是C盘,但是Vue CLI不接受绝对路径作为参…

802.11漫游流程简单解析与笔记_Part3

原定计划在Part3分析ns3的Roaming流程抓包,但ns3并不支持漫游: 看过Part1的应该都知道,标准关联流程是auth*2 associate*2 key*4,但ns3里面没有与auth有关的部分,third脚本里面有cap字段,但无auth也无key&a…

LabVIEW图像采集处理项目中相机选择与应用

在LabVIEW图像采集处理项目中,选择合适的相机是确保项目成功的关键。本文将详细探讨相机选择时需要关注的参数、黑白相机与彩色相机的区别及其适用场合,帮助工程师和开发者做出明智的选择。 相机选择时需要关注的参数 1. 分辨率 定义:分辨率…

HDFS 读写数据流程

优质博文:IT-BLOG-CN 一、HDFS 写数据流程 HDFS 文件写入流程图如下:三个模块(客户端、NameNode、DataNode) 【1】校验: 客户端通过 DistributedFileSystem 模块向 NameNode 请求上传文件,NameNode 会检…

视频点播系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,客服聊天管理,基础数据管理,论坛管理,公告管理 前台账户功能包括:系统首页,个人中心,论坛,视…

pdf压缩到指定大小的简单方法

压缩PDF文件是许多人在日常工作和学习中经常需要面对的问题。PDF文件因其跨平台、易阅读的特性而广受欢迎,但有时候文件体积过大,会给传输和存储带来不便。因此,学会如何有效地压缩PDF文件,就显得尤为重要。本文将详细介绍几种常见…

视频、图片、音频资源抓取(支持视频号),免安装,可批量,双端可用!

今天分享一款比较好用资源嗅探软件,这个嗅探工具可以下载视频号,界面干净,可以内容预览和批量下载,看到这里你是不是想用它爬很多不得了的东西。这款软件无需安装,打开即用。同时他支持windows系统和Mac系统,是一款不可…

跃入AI新纪元:亚马逊云科技LLM全景培训,解锁AI构建者之路

亲爱的技术爱好者们,你是否也对大语言模型(LLM)的神奇魅力所吸引,渴望深入探索其背后的技术奥秘?今天,我要为大家推荐一份超级硬核的学习资源——亚马逊云科技 对话AI 构建者:从基础到应用的LLM…

【Vue】图形验证码功能

说明: 图形验证码,本质就是一个请求回来的图片用户将来输入图形验证码,用于强制人机交互,可以抵御机器自动化攻击 (例如:避免批量请求获取短信) 需求: 动态将请求回来的 base64 图片,解析渲染…

stm32MP135裸机编程:启动流程分析

0 参考资料 轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序.pdf STM32MP135AD数据手册.pdf1 stm32MP135裸机启动流程分析 1.1 启动方式 stm32MP135支持8种启动方式: 注: UART和USB启动并不是指通过UART/USB加载程序,而是通过UA…

【文末附gpt升级秘笈】AI热潮降温与AGI场景普及的局限性

AI热潮降温与AGI场景普及的局限性 摘要: 随着人工智能(AI)技术的迅猛发展,AI热一度席卷全球,引发了广泛的关注和讨论。然而,近期一些学者和行业专家对AI的发展前景提出了质疑,认为AI热潮将逐渐…

1.VMware软件的安装与虚拟机的创建

1. VMware软件的安装 1.1 为什么需要虚拟机 嵌入式Linux开发需要在Linux系统下运行,我们选择Ubuntu。   1、双系统安装     有问题,一次只能使用一个系统。Ubuntu基本只做编译用。双系统安装不能同时运行Windows和Linux。   2、虚拟机软件   …

Qt设置进程环境变量

目的 最近遇上了设置环境变量的问题,看似是小问题,想解决好,实在是一件不容易的事。 看看当时,我遇到这些问题的无奈: 首先说,是在windows进行环境变量的设置,如果在Linux那肯定是简单了。 一般来说,首先是设置系统的环境变量,这条路,是一条复杂的路,首先得写一个…

时间处理基础:Rust 的 chrono 库教程

在开发过程中,我们经常有对时间和日期处理的需求。不论是日历应用、日程安排、还是时间戳记录,准确的时间数据处理都是必不可少的。Rust 社区提供的 chrono 库以其强大的功能和灵活的接口,在 Rust 开发者中广受欢迎。本文将简单介绍 chrono 库…

C++ | Leetcode C++题解之第143题重排链表

题目: 题解: class Solution { public:void reorderList(ListNode* head) {if (head nullptr) {return;}ListNode* mid middleNode(head);ListNode* l1 head;ListNode* l2 mid->next;mid->next nullptr;l2 reverseList(l2);mergeList(l1, l…

腾讯云大数据ES Serverless

Elasticsearch:日志和搜索场景首选解决方案。 技术特点:分布式、全文搜索和数据分析引擎,可以对海量数据进行准实时地存储、搜索和统计分析。 ES的技术栈一共包含四个组件: 其中最核心的是Elasticsearch,可用于数据…

stm32MP135裸机编程:修改官方GPIO例程在DDR中点亮第一颗LED灯

0 参考资料 轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序.pdf 正点原子stm32mp135开发板&原理图 STM32Cube_FW_MP13_V1.1.0 STM32CubeIDE v1.151 需要修改那些地方 1.1 修改LED引脚 本例使用开发板的PI3引脚链接的LED作为我们点亮的第一颗LED灯,…