LLM应用:AutoDev 插件 与 名词解释

124 阅读8分钟

LLM应用:AutoDev 插件 与名词解释

2024.4.30

AI + DevOps 最后一公里:AutoDev 插件

AI IDE 基本原理:没有魔法!全是 prompt! 🐶

AI IDE 基本原理

AutoDev 是一款高度自动化的 AI 辅助编程工具。AutoDev 能够与您的需求管理系统(例如 Jira、Trello、Github Issue 等)直接对接。在 IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。您所需做的,仅仅是对生成的代码进行质量检查。

​ 简单来说,AutoDev 定位是适用于私有化大语言模型 + 高度集成的 AI 编程助手。AutoDev 提供了一种 AutoCRUD 模式,其设计理解的过程是:

  1. 从需求管理系统获取需求,并进行需求分析。
  2. 结合源码与需求系统,选择最适合变更的入口(如 Java 中的 Controller)
  3. 将需求与 Controller 交给 AI 分析,以实现代码的代码。
  4. 根据 Controller 逐步自动完成其它部分代码(实现中…)

​ 另外一种模式则是普通的 Copilot 模式,可以接入现有的大模型工具,实现一系列的 AI 代码辅助相关功能。

GitHub: github.com/unit-mesh/a…

​ 接入 LLM,我们不仅可以生成代码,还可以生成单元测试代码,从而提高测试效率和覆盖率。

​ 让我们再展开看一看,基于现有的 AI 能力,会有哪些新可能性。

平台工程的变化与新机遇

​ 而除了我们上述的 demo 之外,我们相信它带会其它带来一系列的变化。对于中大型组织的基础设施或者平台团队来说,要接入 AI 能力需要有更多的变化与机遇。

​ 平台工程是一种用来构建和运维支持软件交付和生命周期管理的自助式内部开发者平台的机制和架构。平台工程可以提高开发者的体验和生产力,提供自动化的基础设施操作。 平台工程是软件工程组织的新趋势,它可以优化开发者的工作流程,加速产品团队交付客户价值。

​ 平台工程的核心思想是将平台视为一种产品,由专业的平台团队来创建和维护,为内部的客户(如开发者、数据科学家等)提供可复用的服务、组件和工具。

需求:自动化收敛、分析与完善

在现有的场景之下,已经有一系列的关于结合 AI 进行需求管理的尝试:

  • 自动化完善。对用户的反馈和数据的分析,自动识别和补充缺失的需求信息,例如自动识别用户提出的问题并转化为需求描述,自动补全需求的关键词和标签等。
  • 自动化分析。通过训练自带的领域知识,可以更好地评估和优化需求,发现潜在的问题和机会,提高需求的效率和效果。
  • 自动化收敛。结合其它 AI 技术,比如智能推荐、对话系统、多方协作等,可以帮助您更好地沟通和协调需求,收集和整合用户的反馈和痛点,提高需求的满意度和一致性。
  • 自动化迭代。结合人类反馈的 AI 数据,可以更好地更新和改进需求生成,适应不断变化的环境和用户需求,提高需求的持续性和创新性

尽管现有的几个方案:LangChain、llama-index 等暂时只支持 OpenAI,但是随着更多开源大语言模型的加入,未来会更易于落地。

工具链:智能的 IDE

对于现有的场景来说,已经相当的丰富,诸如于:

  • 自动化代码审查
  • 自动化测试
  • 自动化日志分析
  • AI 辅助编程
  • ……

诚然,诸如于 GitHub Copilot 等收费 AI 工具来说,对于大部分公司来说,贵可能是其次,重点是代码的安全性。而虽然国内各类新的模型层出不穷,但是大部分缺少编程相关的集成,又或者是编程能力比较弱。 然而,市面上也有只用于编程相关的模型,如 Salesforce 在 Hugging Face 上提供的 16B CodeGen 模型。虽然,还需要经过一些小的微调,但是如 Replit 公司所言,效果还是非常不错的。

随后,便是类似于 AutoDev 针对于大语言模型进行的封装,简化普通开发人员的开发过程。

文档:超越搜索

在有了 LLM 和各种智能问答的基础上,我们还可以加入内部各种工具的文档和代码,以提供更全面、更智能的文档服务。例如,LangChain 构建的问答式文档,可以对企业内部的各种文档进行语义理解和智能问答,进而简化开发人员的学习成本。

LLM 名词解释

LLM

​ LLM(Large Language Model,大规模语言模型)是基于深度学习技术构建的人工智能模型,由具有数以亿计参数的人工神经网络组成,通过自监督学习或半监督学习在大量无标签文本上进行训练。

​ LLM 于2018年左右出现,并在各种任务上表现出色。这改变了自然语言处理研究的重点,使其不再是以训练特定任务的专门监督模型为范式。

AIGC

​ AIGC(AI-Generated Content,AI 生成内容)通过对已有数据进行学习和模式识别,以适当的泛化能力生成相关内容的技术。

​ AIGC 技术的核心思想是利用人工智能算法生成具有一定创意和质量的内容。通过训练模型和大量数据的学习,AIGC 可以根据输入的条件或指导,生成与之相关的内容。

Prompt

​ Prompt(提示词)是指给定的一段文本或问题,用于引导和启发人工智能模型生成相关的回答或内容。 Prompt 可以设定任务目标、要求模型回答特定问题、完成特定任务,或者给模型提供背景信息以进行更准确的生成。

​ 需要注意的是,Prompt 本身并不包含问题的答案或具体的内容,它只是一种指导模型生成文本的方式。模型的输出仍然是基于其训练数据和学习到的模式进行生成的。

GPT

​ GPT(Generative Pre-trained Transformer,生成型预训练变换模型)是一种基于深度学习的大规模语言模型。最初由 OpenAI 开发,旨在通过训练模型预测下一个单词或字符来学习自然语言的统计规律和上下文信息。

​ GPT 使用 Transformer 模型架构,它由多个编码器-解码器堆叠而成,通过自注意力机制来处理输入序列和生成输出。模型的训练采用了无监督学习的方法,使用大量的文本数据进行预训练,使模型具备了广泛的语言理解和生成能力。

Token

​ Token 是指在自然语言处理和文本处理任务中,将文本分解成较小单元的基本单位。这些单元可以是单词、字符、子词或其他语言单位,具体取决于任务和处理方式。

​ 分割文本成 Token 有助于进行文本处理和分析,例如词频统计、语言模型训练、机器翻译、文本分类等任务。将文本分解成 Token 的过程可以提供更细粒度的语义信息,并为模型理解和处理文本提供基础。

LoRA

​ LoRA(Low-Rank Adaptation of LLM,即插件式的微调)用于对大语言模型进行个性化和特定任务的定制。LoRA 通过将模型的权重矩阵分解为低秩的近似矩阵,降低了参数空间的复杂性,从而减少了微调的计算成本和模型存储需求。

​ 传统的微调方法通常需要在整个模型上进行参数优化,这可能会导致训练时间长、计算资源消耗大,并且需要大量的标注数据。而低秩适应方法则提供了一种更高效的微调策略,基于对原始模型的分析,选择性地微调模型的某些部分,使其更适应于特定的任务或数据。

矢量数据库

​ 矢量数据库(Vector Database)是一种用于存储和检索矢量数据的数据库。矢量数据库可以存储和管理大量的矢量数据,例如图像、视频、音频、文本等,同时提供高效的检索功能。

​ 矢量数据库通常基于矢量搜索引擎实现,它可以将矢量数据转换为向量表示,并将其存储在数据库中。在查询时,矢量搜索引擎可以将查询数据转换为向量表示,并在数据库中进行相似度匹配,从而找到与之最相似的数据。

数据蒸馏

​ 数据蒸馏(Knowledge Distillation)旨在将给定的一个原始的大数据集浓缩并生成一个小型数据集,使得在这一小数据集上训练出的模型,和在原数据集上训练得到的模型表现相似

​ 数据蒸馏技术在深度学习领域中被广泛应用,特别是在模型压缩和模型部署方面。它可以帮助将复杂的模型转化为更轻量级的模型,并能够促进模型的迁移学习和模型集成,提高模型的鲁棒性和泛化能力。