- URL: https://mp.weixin.qq.com/s/zUmt0W8nsu6_PHmLzSB2Og
- Added At: 2024-12-19 08:52:20
- Link To Text
文章探讨AI辅助Code Review的实践,提出基于LLMs和知识库的解决方案,解决信息安全、低质量代码和规范执行问题,并介绍其特性、实现思路和模型选型。
-
背景与想法:
- 源于Code Review时对AI辅助的思考。
- 想法:能否让AI辅助进行Code Review。
-
痛点:
- 信息安全合规问题:公司内代码直接调用ChatGPT/Claude存在安全合规问题,需对代码脱敏。
- 低质量代码耗费时间:即使经过单测和Lint过滤,仍需大量时间进行人工CR。
- 团队Code Review规范缺少执行:大部分团队Code Review规范停留在文档和口头,缺乏工具执行。
-
介绍:
- 基于开源大模型 + 知识库的Code Review实践,类似代码评审助手(CR Copilot)。
-
特性:
- 安全合规:所有代码数据不出内网,推理过程在内网完成。
- 开箱即用:基于Gitlab CI,简单配置即可接入。
- 数据安全:私有化部署,隔离外网访问。
- 无调用次数限制:部署在内部平台,只有GPU租用成本。
- 自定义知识库:基于飞书文档学习,提升CR准确度。
- 评论到变更行:将结果评论到变更代码行上,通过Gitlab CI通知。
-
名词解释:
- CR/Code Review:代码审查,保障代码质量,促进团队成员交流。
- llm/大规模语言模型:训练的神经网络模型,生成高质量文本并理解语言。
- AIGC:人工智能生成/创作内容,利用AI技术自动生成内容。
- LLaMA:Meta(Facebook)的大型多模态语言模型。
- ChatGLM:支持中英双语的对话语言模型。
- Baichuan:百川智能推出的大语言模型。
- Prompt:指导机器学习模型生成特定类型或格式的输出。
- LangChain:开源Python库,支持使用LLM和外部资源开发应用程序。
- embedding:将文本映射到固定维度的向量空间。
- 向量数据库:存储向量表示的数据库,用于相似性搜索。
- 知识库:存储结构化知识的数据库,LLM可以利用这些知识增强理解能力。
- In-context Learning:在Prompt上下文中包含特定问题相关信息,赋予模型解决新问题能力。
- Finetune/微调:在预训练模型基础上使用特定数据集进行微调。
-
实现思路:
- 流程图展示了CR流程,包括技术模块和系统架构。
- 使用LLMs/开源大模型进行CR,需满足理解代码、支持中文、上下文学习能力等条件。
-
LLMs/开源大模型选型:
- 选择Llama2-Chinese-13b-Chat、ChatGLM2-6b、Baichuan2-13B-Chat等模型。
- 因合规问题,默认使用ChatGLM2-6B,需向Meta申请使用Llama2。
-
知识库设计:
- 需要知识库以增强LLM的理解能力。
- 通过文本向量化、向量存储和相似性搜索找到相关度高的知识。
-
Prompt指令设计:
- 使用Prompt指令让LLM按要求执行任务,如代码summary总结指令和CR指令。
-
评论到变更代码行:
- 通过解析diff来计算变更代码行。
-
感想:
- 基于LLM的应用具有输出不确定性。
- 开源LLMs + 领域知识库 + 私有化部署是企业级应用的一种实践方式。
- AI+ 刚刚开始,CR Copilot只是其中一个应用场景。
-
加入我们:
- 招募对LLMs+、前端React、后端Golang等领域感兴趣的人才。
-
参考资料:
- 列出相关参考资料链接。