Skip to content

Latest commit

 

History

History
72 lines (58 loc) · 3.83 KB

2024-12-19-基于大模型-+-知识库的-code-review-实践.md

File metadata and controls

72 lines (58 loc) · 3.83 KB

基于大模型 + 知识库的 Code Review 实践

TL;DR

文章探讨AI辅助Code Review的实践,提出基于LLMs和知识库的解决方案,解决信息安全、低质量代码和规范执行问题,并介绍其特性、实现思路和模型选型。

Summary

  1. 背景与想法

    • 源于Code Review时对AI辅助的思考。
    • 想法:能否让AI辅助进行Code Review。
  2. 痛点

    • 信息安全合规问题:公司内代码直接调用ChatGPT/Claude存在安全合规问题,需对代码脱敏。
    • 低质量代码耗费时间:即使经过单测和Lint过滤,仍需大量时间进行人工CR。
    • 团队Code Review规范缺少执行:大部分团队Code Review规范停留在文档和口头,缺乏工具执行。
  3. 介绍

    • 基于开源大模型 + 知识库的Code Review实践,类似代码评审助手(CR Copilot)。
  4. 特性

    • 安全合规:所有代码数据不出内网,推理过程在内网完成。
    • 开箱即用:基于Gitlab CI,简单配置即可接入。
    • 数据安全:私有化部署,隔离外网访问。
    • 无调用次数限制:部署在内部平台,只有GPU租用成本。
    • 自定义知识库:基于飞书文档学习,提升CR准确度。
    • 评论到变更行:将结果评论到变更代码行上,通过Gitlab CI通知。
  5. 名词解释

    • CR/Code Review:代码审查,保障代码质量,促进团队成员交流。
    • llm/大规模语言模型:训练的神经网络模型,生成高质量文本并理解语言。
    • AIGC:人工智能生成/创作内容,利用AI技术自动生成内容。
    • LLaMA:Meta(Facebook)的大型多模态语言模型。
    • ChatGLM:支持中英双语的对话语言模型。
    • Baichuan:百川智能推出的大语言模型。
    • Prompt:指导机器学习模型生成特定类型或格式的输出。
    • LangChain:开源Python库,支持使用LLM和外部资源开发应用程序。
    • embedding:将文本映射到固定维度的向量空间。
    • 向量数据库:存储向量表示的数据库,用于相似性搜索。
    • 知识库:存储结构化知识的数据库,LLM可以利用这些知识增强理解能力。
    • In-context Learning:在Prompt上下文中包含特定问题相关信息,赋予模型解决新问题能力。
    • Finetune/微调:在预训练模型基础上使用特定数据集进行微调。
  6. 实现思路

    • 流程图展示了CR流程,包括技术模块和系统架构。
    • 使用LLMs/开源大模型进行CR,需满足理解代码、支持中文、上下文学习能力等条件。
  7. LLMs/开源大模型选型

    • 选择Llama2-Chinese-13b-Chat、ChatGLM2-6b、Baichuan2-13B-Chat等模型。
    • 因合规问题,默认使用ChatGLM2-6B,需向Meta申请使用Llama2。
  8. 知识库设计

    • 需要知识库以增强LLM的理解能力。
    • 通过文本向量化、向量存储和相似性搜索找到相关度高的知识。
  9. Prompt指令设计

    • 使用Prompt指令让LLM按要求执行任务,如代码summary总结指令和CR指令。
  10. 评论到变更代码行

    • 通过解析diff来计算变更代码行。
  11. 感想

    • 基于LLM的应用具有输出不确定性。
    • 开源LLMs + 领域知识库 + 私有化部署是企业级应用的一种实践方式。
    • AI+ 刚刚开始,CR Copilot只是其中一个应用场景。
  12. 加入我们

    • 招募对LLMs+、前端React、后端Golang等领域感兴趣的人才。
  13. 参考资料

    • 列出相关参考资料链接。