喜马拉雅AI智能编程助手探索与演进
AI在软件开发中的应用与挑战
案例背景
2023年初,ChatGPT等大语言模型需求井喷,喜马拉雅技术团队开始探索如何利用GPT提升研发效率。然而,模型种类繁多、参数庞大、部署成本高、生态二次开发难度大等问题成为挑战。
模型评估对比
- 模型类型:闭源(Codex、GPT-3.5/4/Turbo)、开源(PaLM、LLaMA、CodeLLaMA)、混合(百度ERNIE、阿里通义灵码、蚂蚁codefuse、华为CodeArts、Github Copilot)
- 支持语言:主流语言支持情况对比
- 亮点功能:注释解释、代码搜索、代码刷子等
问题与挑战
- 模型存在“幻觉”问题,容易生成无意义的废话
- 提示直接影响回复质量,常出现“说正确的废话”
- 无法支持内部知识与增量知识,缺乏记忆
- 代码元素长依赖问题,响应时间要求高
- 代码质量缺乏控制,需要专业Prompt工程
喜马拉雅在AIGC研发提效的探索
破题思路
针对传统研发痛点(低效、重复、精力分散、质量不稳定),喜马拉雅提出从骨子里重新定义研发流程,采用Prompt Engineering、RAG向量检索、上下文选举、联邦查询、微调&推理加速、agent化等技术。
技术方案
- Prompt Engineering:通过精准上下文和专业的Prompt提升答案质量
- RAG:结合向量检索和传统搜索,提升LLM推理能力
- Abstract Syntax Tree (AST):通过AST选举依赖相关性高的代码片段,提升单元测试效果
- Code Snippet:利用语义向量近似度提升推理关联性
- 联邦查询:提升召回准确率至97%以上
成果展示
- 采纳率:功能采纳率提升7%~11%
- 代码生成:当量对话框架接入commit
- 单元测试效果:编译通过率提升57.73%,单测通过率提升26.63%
智能研发推进演进路线
推理加速
- int4量化:单卡10并发模型版本CodeLLama-34B,推理速度提升,内存减少
- vllm推理加速框架:不同GPU配置下的性能对比
Prompt Engineering
- 精准上下文+专业Prompt:提升答案质量
- 思考GPT对错原因:优化Prompt设计
RAG
- LLM推理能力:zero/few shot、CoT prompting、Instruct-tuning
- Search & Rec:KG关联分析、向量检索、ElasticSearch、MetaData Filter
抽取问题与提炼
Abstract Syntax Tree
- 召回性能:60~75%
- 召回深度:0~7%
- Context选举:依赖相关性高的代码片段
- 单元测试效果:编译通过率91.85%,单测通过率41.34%
Code Snippet
- Jaccard算法:提升topK召回准确率20%~30%
- 联邦查询:召回准确率80%-> 97%以上
Refine
未来展望
案例启示
- AI Agent is all you need:通用Agent、评审智能体、BI智能体
- 结对编程:思想不会被取代,人在“写代码”
- 珍妮机替代手工业:AI不会颠覆人,但会替代工具人
- 机遇与挑战:会用AI的程序员会取代不会用AI的程序员
- 人和AI的角色:共勉
官方关注
- 微信官方公众号:壹佰案例
- 喜马拉雅技术团队:Xima-TC