AI智能总结
李文超/开发工具技术专家 豆包MarsCode编程助手起源豆包MarsCode的现状与发展未来展望 01豆包MarsCode编程助手起源 •IDE智能化探索•开发者对AI Coding的诉求•豆包MarsCode的历程 IDE智能化探索 开发者对AI Coding的诉求 豆包MarsCode的历程 •2022年初代码智能团队开始探索LLM驱动的代码补全产品 •引入基于对话的编程助手 •更高自动化编程能力•引入代码补全Pro编辑推荐功能 •更多.... 豆包MarsCode编程助手起源豆包MarsCode的现状与发展未来展望 02 豆包MarsCode的现状与发展 •概述•数据构造•产品交互 代码补全- Prompt工程 代码补全-科学的测评体系 •代码补全的采纳率不是好指标 •采纳率=采纳次数/推荐次数 •只关注采纳率进行优化,容易被误导 •不容易拆解分析,归纳可指标链路优化路径 代码补全-科学的测评体系 •CPO -更科学的指标(Codeium) •CPO (Character per Opportunity)= (尝试率)*(反馈率)*(采纳率)*(每次采纳平均token数)*(token平均字符长度) •尝试率:每当用户在编辑器中进行操作,比如输入新字符或删除一些代码时,都是AI给出补全建议的机会。「尝试率」指标反映了AI实际为用户提供建议的频率。AI不进行尝试可能是由于延迟(如Debounce)或需要根据上下文情况来决定是否给出补全建议 例子:用户敲击了10次按键,只有其中6次触发了请求,那么尝试率是6/10 代码补全-科学的测评体系 •CPO (Character perOpportunity) =(尝试率)*(反馈率)*(采纳率)*(每次采纳平均token数)*(token平均字符长度) •CPO -更科学的指标(Codeium) •反馈率: AI在给出补全建议时是存在延迟的,包括上下文检索到网络开销再到实际模型推理都会引入延迟。如果延迟太高,开发人员将继续在编辑器中执行新的操作,触发新的推荐机会并使现有推荐机会变得无意义。此外,在推荐完成后,工具可能因各种原因决定不向开发人员显示建议:比如置信度不够高、触发了过滤器等。反馈率代表了有多少比例的建议最终被传递给开发人员以获得人类「反馈」。 •例子:插件发起了6次请求,最后只有3次被展示,那么反馈率是3/6 代码补全-科学的测评体系 •CPO (Character perOpportunity) =(尝试率)*(反馈率)*(采纳率)*(每次采纳平均token数)*(token平均字符长度)•如果展示的3次推荐,最后只有1次被采纳,那么采纳率是 •CPO -更科学的指标(Codeium) 1/3 代码补全-科学的测评体系 •CPO (Character perOpportunity) =(尝试率)*(反馈率)*(采纳率)*(每次采纳平均token数)*(token平均字符长度) •CPO -更科学的指标(Codeium) •每次采纳平均token数:在其它条件相同的情况下,较长和较短的代码推荐所带来的价值有很大差异。大型语言模型以tokens的形式处理输入并生成输出,这些tokens通常是一小段字符,因此每个被采纳建议中平均token数反映了每条被采纳建议所传递出的实际价值 代码补全-科学的测评体系 •CPO (Character perOpportunity) =(尝试率)*(反馈率)*(采纳率)*(每次采纳平均token数)*(token平均字符长度) •CPO -更科学的指标(Codeium) •token的平均字符数:开发人员看到的是字符而不是token,不同的大语言模型可以有不同的「分词器」,因此,如果一个大语言模型的每个token生成了更多字符,实际上它会写出更多代码,而每个token的平均字符数正好体现了这一点 代码补全-科学的测评体系 •通过A/B快速验证和迭代模型、Prompt策略 代码补全Pro -预测下一次动作 代码补全Pro -概述 举个例子:打印日志的场景开发者实现了一个log函数,并在do_something和do_something_else两个函数中调用 代码补全Pro -概述 接下来我们给log函数增加sourceMethod和level两个参数,用于打印日志触发时所在的方法及日志级别。这时开发者需要同时修改do_something()和do_something_else函数 代码补全Pro -概述 为什么不让AI完成修改的操作呢?当我们在log函数增加两个参数,自动在do_something和do_something_else两个函数中,将参数补齐 代码补全Pro -产品交互 代码补全Pro -数据构建 •Git仓库中海量的commit历史记录是个巨大的数据宝库,包含了丰富的用户编辑行为信息 •Git commit信息中的噪音也是很多的,需要构造一系列的启发式规则,用于提取出有关联的修改记录 •通过CT和SFT模型能够理解diff格式数据 豆包MarsCode编程助手起源豆包MarsCode的现状与发展未来展望 03 •编程助手业界趋势观察•产品形态的展望 编程助手业界趋势观察 产品 模型 •IDE原有交互的深度集成,比如在Editor中支持输入自然语言生成代码•更强的代码编辑能力,支持更长、更多代码片段的修改和应用•更多... •指令追随和语义理解能力更强•模型具备代码编辑能力•更长的上下文支持,百K甚至M级别长度•更多... 产品形态的展望 •NL2Code能力与Editor深度集成 VSCode 产品形态的展望 •Sketch then Generate 总结 •起源•MarsCode编程助手的历程 •现状与发展•科学指标- CPO•代码补全Pro预测下一步要编辑的代码 •展望•模型有更强的推理和代码编辑能力•AI能力深度集成到Editor与Sketch then Generate 代码补全Pro已beta,欢迎访问www.marscode.cn(国内) THANKS