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