解锁!智能代码助手 Baidu Comate 硬核能力

news2025/1/21 6:38:10

近日,在全球软件开发大会上暨智能软件开发生态展上,来自 Baidu Comate 的资深研发工程师分享了精彩的专题演讲,小编整理了演讲精华,和大家一起玩转“大模型+软件研发”。

今天带来——吴玮琦《智能代码助手 Baidu Comate 的核心能力揭秘》,一起解锁 Baidu Comate 硬核能力。

图片

AI 如何助推软件生产领域代际变革

在过去的几十年里,软件发展经历了几个重要时代。借鉴行业和学术界的一些思考,我们可以做以下大致划分:

首先是上世纪五六十年代,随着软件复杂度和体积的急剧膨胀,人们发现软件领域出现所谓的“软件危机”,软件的质量问题暴露出来。先驱们开始把建筑、水利等“工程手段”,引入软件的开发和维护过程中,来解决上述问题,这是软件工程的开始。随着计算能力的大幅度提升,同时受到互联网以及开源软件运动的影响,进入到第二个阶段,我们称之为现代软件工程。

图片

来到当下,以 LLM 为代表的人工智能以及相关技术的推动,整个软件研发的生命周期和 AI 深度融合,我们姑且称为“未来软件工程”,也可以叫“AI 原生的软件工程”,其特点就是从需求定义到研发、测试、运维的整个流程里,工程师可以通过 Prompt 等技术手段让 LLM 协助我们工作,大幅提升研发工作的效率和产能。

百度如何应用 Baidu Comate 推动 AI 原生研发范式落地

Baidu Comate 是百度基于文心大模型研发的智能代码助手,以插件的形式深度集成在 IDE 中,借助文心大模型强大的文本理解与生成能力,为每一个工程师提供一个7*24小时的 AI 编码助手。Comate 的能力覆盖工程师开发工作的全流程,从代码生成到技术问答、生成单测等,一应俱全。我们简称为“三帮”:帮你想、帮你写、帮你改——需求开始阶段,帮我们解释已有代码,做一些疑难问题的回答;在编写阶段,结合上下文帮助我们续写代码,为代码生成注释;最后,还可以帮你改,比如 code review 时结合相应的编码规范做智能评审,在流水线上根据 Error 信息提供修复建议等等。

图片

Baidu Comate 有哪些核心能力?

1、专业的代码领域大模型

在编码这个垂直领域,需要强化大模型在编程领域的相关知识,通用 LLM 能做,但是做不好。所以需要从模型训练数据收集阶段,开始针对代码领域做定向增强。我们从开源代码和百度内部编程现场大数据,用多种手段精确筛选出高质量、高代表性,覆盖知识面、应用面广泛的代码数据,以提升信噪比。

图片

当然这些已经是同类产品的基本能力,Comate 有哪些特殊之处呢?

首先是 Comate 在文心大模型、PaddlePaddle 框架和应用层的三层架构组合优化后,端到端响应速度可以保持在600ms 以下。当然这也是我们在实践过程中找到的一个平衡:在保证代码生成质量的前提下,还可以尽量提升输出速度,做到代码生成速度跟上用户编写的状态。

其次是位代码编写昌吉给你定制的模型能力。Comate 在公司内部大规模落地过程中,我们深入到一线工程师的实际使用中去做调研,发现大家一半以上的时间不是编写新代码,而是在反复编辑与优化已有的代码。比如:在原有代码上添加和修改业务逻辑、为变量重新命名、为函数补充注释。但是以 GPT-3为代表的 decoder-based 的模型,只能根据上文来输出下文,无法感知下文。所以同时感知上文和下文,做所谓的“填空题”,即 Fill in the middle,这样的能力才是编码领域模型提升生成质量最核心的能力。为此我们重构了模型,来支持这种 FIM 的场景。

模型的灵魂是数据。有句数据领域的老话,Garbage in, garbage out。怎么教模型,模型就怎样生成。要想有高质量的生成结果,就要有高质量的精调数据。为了获取高质量的精调数据,我们邀请各技术委员会的语言专家分析、整理、优化训练和评估数据,确保数据能符合真实的使用场景,并借助公司内的 iDataset、iEValue 等工具有效的管理和迭代。

2、Prompt 工程,让模型更懂“你”

Prompt 工程第一个实践,是应用代码分析技术。我们观察用户的使用习惯,从研发现场去收集关键信息,得出这样一个结论:我们认为最近打开的文件和当前文件的引用是信噪比最高的信息。

图片

首先,因为设计良好的工程中肯定有很多公共模块被重复引用,这些模块往往不在当前文件中被定义,但是对模型来说,这些被引用的模块的定义又非常关键,只有知晓某些函数或者类的定义,才能准确的推理出他的使用方法。其次,如果工程师在某几个文件之间反复编辑,我们认为这几个文件内容是和工程师当前作业联系最紧密的,也是信息量最高的。

所以 Comate 在推理过程前,通过检索相关文件、使用 LSP 分析结果等手段,摘取一些关键信息送给模型,以生成更符合用户编码现场的代码。

Prompt 工程的另一方面尝试,是关联工程和模型外的私域知识,让 Comate 更懂你。

图片

说到关联外部知识,其实有不少方法,比较常见的就是 PT、SFT 和 RAG。首先 PT、SFT 成本高昂,假如我是一个个人开发者,肯定没有那么多资源来做模型精调。其次,开发相关的数据比如代码、三方库更新都很频繁,PT 和 SFT 有明显的滞后性。为了让用户更丝滑地接入外部知识,我们选择了用 RAG 做 Prompt 工程的另一部分实践。常见的外挂知识大多是自然语言,但是编程语言拥有严格的结构、逻辑和语法,需要定制化的数据处理逻辑,我们详细聊下 RAG 如何结合代码数据检索。

首先,代码作为结构化语言,有明确的 scope 和关联关系,通过定制的算法处理保证切分后也拥有完整的信息,提升代码文本的召回质量。代码块的划分就是根据不同语言的特点,解析代码的语法树并将代码文件切分为类、块、函数、行等不同级别的块(chunk)。

其次,Comate 的思考过程采用了与 TOT 和 Agent 的有效结合,形成了一种连续且多步骤的反馈机制。在这个过程中,Teacher Agent 负责对 Agent 的执行结果进行评估,并提供"整改策略"。根据这些策略,Agent 决定下一步的行动,无论是继续执行还是回溯并重新执行某个步骤。这样的机制保证了我们的模型不断调整并优化输出结果,直至满足预定标准,从而显著提升了模型输出的质量和准确率。

3、更智能、更易用

Comate 还在极致产品力上做了进一步探索,让 Comate 更智能,更易用。

图片

首先是更智能。无论你是一位开发者,还是项目经理,我们都知道写代码是一项复杂且需要高度专注的任务。现在,你可以通过 Comate 创新的 AutoWork 功能实现从需求到编码的全流程智能化,包括需求理解确认、复杂代码库分析、多编码任务分解等。

在技术层面,Autowork 结合了文心大模型思维链(COT)技术,使其具有了人类级别的思考能力,这意味着它可以像人类一样听懂和理解用户的需求,然后按照逻辑顺序,逐步完成一系列复杂的编码任务。另外,借助先进的 RAG 代码智能检索技术,这使得它能够将掌握的知识库信息完美地融入到大语言模型中。当用户提出问题时,它将利用这些知识库信息,让生成的回答更准确,更具价值。

另一方面是更易用。“Comate+”即开放平台,是指把 Comate 的能力开放给第三方开发者,支持知识扩展与能力扩展,第三方服务可以将能力连接到编程现场,并打造自己的定制化能力,建设更适合自己团队的研发助手。

“Comate+”开放平台核心主张是通过开放性,可以更好的让 Comate 来适应不同组织和个人,取得更贴合具体需求的智能化效果。

通过 Comate 插件这一使用形态,可以让平台能力直接触达开发人员第一工作现场,无需重复建设即可快速应用大模型能力,无限扩充平台场景,让 Comate 更适配团队的业务知识、团队规范、固化团队流程等。

——————END——————

推荐阅读

基于afx透明视频的视觉增强前端方案

百度一站式数据自助分析平台(TDA)建设

浅析如何加速商业业务实时化

登录系统演进、便捷登录设计与实现

一文带你完整了解Go语言IO基础库

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

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

相关文章

【MySQL数据库】初步认识数据库,实现基本操作

在信息爆炸的今天,数据无处不在,它们构成了互联网世界的基石。但数据本身若未经有效组织和管理,就如同散落在沙滩上的珍珠,难以发挥其真正的价值。这时,“数据库”这一概念便如同一根线,将这些珍珠串联起来…

黑马新出的SpringBoot3项目后端总结

基础篇-00_SpringBoot3_Vue3导学课程_哔哩哔哩_bilibili 这个是视频链接 这个新课程里面用了一些企业里会用的注解例如Validated这种,业务流程清晰明了简单上手,算是可以了解最基本的Springboot开发流程,方便上手和快速入门 主要是下面这几…

差异基因散点图绘制教程

差异基因散点图绘制教程 本期教程 小杜的生信笔记,自2021年11月开始做的知识分享,主要内容是R语言绘图教程、转录组上游分析、转录组下游分析等内容。凡事在社群同学,可免费获得自2021年11月份至今全部教程,教程配备事例数据和相…

Python---NumPy万字总结【此篇文章内容难度较大,线性代数模块】(3)

NumPy的应用(3) 向量 向量(vector)也叫矢量,是一个同时具有大小和方向,且满足平行四边形法则的几何对象。与向量相对的概念叫标量或数量,标量只有大小,绝大多数情况下没有方向。我们…

【JAVA】数组的定义与使用

前一篇我们讲述了方法的使用和递归,这一讲 我们来叙述一下数组相关知识点。最近更新较快,大家紧跟步伐哦~~ 1. 数组的基本概念 1.1 为什么要使用数组 假设现在要存5个学生的javaSE考试成绩,并对其进行输出,按照之前掌握的知识点&…

Gooxi发布最新AI服务器:加速生成式AI落地 更懂AI

近日,Gooxi发布最新训推一体AI服务器,以大容量内存和灵活的高速互连选项满足各种AI应用场景,最大可能支持扩展插槽,从而大幅提升智能算力性能,以最优的性能和成本为企业的模型训练推理落地应用提供更好的通用算力。 AI…

AICloud 分论坛 07-AI原生数据库与RAG【文档管理】

https://github.com/infiniflow/infinityhttps://infiniflow.org/视频观看:https://www.bilibili.com/video/BV16m411y7xW/?spm_id_from333.999.0.0&vd_sourceae7b192be069682aabc96350ba419fc5 简介 为LLM应用程序构建的AI原生数据库,提供令人难…

单元测试之TestNG知识点总结及代码示例

TestNG 是一个测试框架,用于自动化测试 Java 和 Scala 应用程序,它是 JUnit 和 NUnit 的一个强大替代品。TestNG 支持数据驱动测试、参数化测试、测试套件、依赖管理、多线程测试等特性。TestNG官网:TestNG Documentation 目录 1.TestNG 基…

think PHP导入导出excel

本地环境 think PHP5,PhpOffice/PhpSpreadsheet,composer PHP版本7.4,这个插件的最低版本要求7.2 配置PhpSpreadsheet 官网:https://phpspreadsheet.readthedocs.io/en/stable/ composer require phpoffice/phpspreadsheet数据库…

华强北宋仕强论道之项目管理

华强北宋仕强论道之项目管理,金航标和萨科微总经理宋仕强先生说,良好的项目管理是企业成功的关键之一,项目是公司最小的管理单元,而项目管理则是确保项目顺利完成的关键工作。在一个项目中,需要明确目标,合…

下载element-ui报错

此错误表示尝试从npm注册表下载“resize observer polyfill”包时超时。这可能是由于网络连接问题或npm注册表服务器的问题。 要解决此问题,您可以尝试以下步骤: 1.重试npm install命令:有时,网络问题会导致临时超时。再次运行npm…

用友NC printBill 任意文件读取/删除漏洞复现(XVE-2024-10609)

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友NC printBill 接口处存在任意文件读…

【Unity】为小球添加爆发力往前移动的代码

代码里的几个变量都需要在场景中提前创建好并赋值 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Shotobjt : MonoBehaviour {// 点击按钮,克隆一个prefab,然后给这个克隆后的对象添加往前方的力publi…

搭建Rust开发环境

Windows搭建 下载:https://www.rust-lang.org/zh-CN/tools/install Linux搭建 这里我更推荐基于Linux搭建。 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh

如何用微信小程序实现远程控制4路控制器/断路器

如何用微信小程序实现远程控制4路控制器/断路器呢? 本文描述了使用微信小程序调用HTTP接口,实现控制4路控制器/断路器,支持4路输出,均可独立控制,可接入各种电器。 可选用产品:可根据实际场景需求&#xf…

最新小红书颜值打分项目,吸引小姐姐,刷爆后端收益

嘿,朋友们!今天我要给你们分享一个我自己都觉得挺诧异的项目,它叫做“颜值打分”。听起来有点搞笑对吧?但真的,这个项目已经帮助了很多人实现了月入万元的目标。你没听错,就是月入万元!所以&…

品牌出海新趋势:掌握“微创新”策略,快速适应海外市场

在全球化的今天,品牌出海已成为众多企业拓展业务、实现国际化发展的重要途径。然而,海外市场与本土市场在文化、消费习惯、法律法规等方面均存在显著差异,这要求品牌在海外市场中必须灵活应变,通过微小的、有针对性的创新来快速适…

node和npm版本太高导致项目无法正常安装依赖以及正常运行的解决办法:如何使用nvm对node和npm版本进行切换和管理

1,点击下载 nvm 并且安装 进入nvm的github: GitHub - coreybutler/nvm-windows: A node.js version management utility for Windows. Ironically written in Go. 这里下载发行版,Releases coreybutler/nvm-windows GitHub 找到 这个 nv…

C# XPTable in .net6(XPTable控件使用说明八)

经过作者schoetbi、armin-pfaeffle的努力,XPTable已经可以在 winform .net6 .net8的环境下使用,版本升级到了2.0,这样就可以在winform下同时使用XPTABLE和EFcore, 这样就可以解决大部分的场景了。

提示词技巧十个级别:你达到了哪个水平?

在数字化时代,人工智能的应用已成为提升效率和优化交互的关键。特别是在内容生成领域,如何有效地使用ChatGPT来达到最佳的交互效果成为了一个热门话题。最近,一段关于ChatGPT提示词技巧的视频引起了广泛关注,视频中将提示词技巧分…