开源 AI 研发提效方案 Unit Mesh 总结

回顾 2023 年,可以明显地看到生成式 AI 带给软件工程带来的新思考,每个组织也在探索结合生成式 AI 的可能性。Unit Mesh (https://github.com/unit-mesh) GitHub 组织正是基于我与我的同事的研究,所构建的一系列围绕于生成式 AI 应用于软件研发的开源项目。

在这篇文章里,我们将总结 Unit Mesh 的一系列项目,从国内最早开源的微调 Llama、 ChatGLM 用于研发流程的 Unit Minions 项目、国内(或许在全球也是)功能最丰富的 AI 辅助 IDE 插件 AutoDev 、再到年终的最质量代码数据集构建工具 UnitEval 。探索性的围绕于不同角色的 Copilot 型工具的设计,以及围绕于这些工具的底层基础 SDK 。

PS:其中部分工具成熟度并不高,如果大家有兴趣,欢迎一起来共建。

f78a8e33de49aaecae7bed396c45f5ee.png

Unit Mesh 架构的初衷

基于生成式 AI 的能力,我们设计了 Unit Mesh 构架,并此为探索未来的软件架构。在 Unit Mesh 架构下,提示词(prompt)即可执行单元:

  1. 用户只需要说一句需求,就会由 AI Agent 将代码上下文与大模型通信,将需求转换为代码单元(Unit)

  2. 将代码单元交由代码编译器编译,转变为可执行的单元,如 Web API、前端组件等。

  3. AI Agent 来决定此个单元应该如何部署,需要与哪些组件相结合,向最终用户提供服务。

7614f5174c6709a54e1656e40f112064.png

而受限于现有模型的能力限制,并不能很好地实现如此的架构方式。于是,我们优先探索更好适配现有的软件架构。

Unit Mesh 的代码运行时:Unit Runtime

在 Unit Mesh 的后端设计是基于 Serverless + Kotlin DSL 生成的,如下的 hello, world 所示:

@RestController
object Pages {
   @GetMapping("/")
   fun main() = "Hello World!"
}

3 月,为了运行上述的后端代码以及前端 React 部分,我和卷王 @CGQAQ 构建了 Unit Runtime 作为代码运行时,用于一键启动 LLM 的代码,并实时交互,以快速构建和测试 AI 代码。由于 ChatGPT 经常不会按预期,生成适用于 Unit Mesh 架构的代码,所以我们将目标转向了微调。

Unit Mesh 的微调试验:Unit Minions

4 月,我和我的同事 @tianweiliu 创建了 Unit Minions 项目,用来介绍如何训练 LoRA,诸如于:用户故事生成、测试代码生成、代码辅助生成、文本转 SQL、文本生成代码等。随后,我们重构了微调过程中的数据工程相关代码,诞生了 DevTi 项目。

由于,微调需要与各类工具紧密结合,所以我开始思考构建 IDE 的必要性。另外,由于 AI 能力的限制,我们不再执着于 AI Agent 的设计。

私有化 AI 编码:AutoDev + Unit Eval

如果你想构建基于开源大语言模型的 AI 编码,那么你可以使用 Unit Mesh 提供的国内领先的 IDE 插件 AutoDev,配合对应的代码数据集构建工具 Unit Eval 来完成。

自定义 AI 能力 IDE 插件:AutoDev

0f8890a90dc2d4ff457ce145017ab76b.png

AutoDev 的设计初衷是一个结合需求系统与 IDE 作为上下文的编码 AI Agent,即只需要说一下你的需求,便可以自动完成 CRUD 的所有编码过程。随后,发现即使我们给了 GPT 再好的上下文,编码了 CRUD 的分析过程,GPT 也不能很好完成任务。于是,AutoDev 转为辅助作为一个 AI 编码工具,提供全面的 AI 辅助能力。

AutoDev 基于静态代码分析构建上下文机制,可以比其它使用相近代码算法的插件,生成更准确、更符合期望的业务代码。而除了编码之外,也提供生成文档、编写单元测试、解释代码、生成测试数据等基础能力。

AutoDev 还提供了强大的定制能力:接入自定义 AI 模型、自定义 Action、 自定义规范、团队 AI 等功能。

高质量微调代码生成与评估:Unit Eval

fbc89938132177868ff2d7f1367b33d0.png

Unit Eval 是为 AutoDev 所构建的微调数据生成与结果评估工具。即 AutoDev 的上下文生成逻辑,会与 Unit Eval 保持一致:

  • 相关生成数据生成。即根据类的 import 和函数的输入、输出,将相关的代码信息,作为 prompt 的一部分。

  • 相似代码数据生成。即根据函数的路径,计算可能相关的文件(CRUD 不要太明显),再结合光标前的代码计算可能相似的代码。

高质量数据是我们设计 Unit Eval 的主要关注点,我们结合了架构治理、代码治理的经验,将开源架构治理工具 ArchGuard 的各种规则检查结合进来。

在 Unit Eval,我们将数据生成与评估相绑定,你可以从一系列项目中执行代码生成,再放到另外一个真实项目中运行。目前结果评估比较简单,依赖于可编译性,如是否可通过静态分析。

Copilot 型工具:Co-mate 和 Studio B3

在现有的研发工具链里,我们已经有不同的工具,它们只需要结合 AI 来增强这个过程。于是乎,我们探索如何构建适合不同角色的 Copilot 型工具,以及如何增强现有的工具,即更全面的 AI 编辑器。

架构师 Copilot:ArchGuard Co-mate(探索性)

70afdc0af1b56c00c9a3f83503740a14.png

ArchGuard 由 Thoughtworks 发起、开源的架构治理平台,旨在辅助开发人员、架构师分析系统间的远程服务依赖情况、数据库依赖、API 依赖等。并根据一些架构治理模型,对现有系统提出改进建议。

ArchGuard Co-mate 便是结合我们在架构治理的经验,探索生成式 AI 作为架构师助手的可能性。与此同时,围绕生成式 AI 来探索架构的未来,诸如于本地语义分析、动态上下文收集 API、架构规范检查等。

在 Co-mate 里,采用 Kotlin 设计一系列围绕于架构、治理等 DSL,传统分析工具生成 DSL 的一部分内容 ,生成式 AI 生成难以静态分析部分,再进行总结。并结合生成式 AI 来生成适合不同项目的 DSL,以更轻松的方式进行定制化架构治理。

AI 编辑器:Studio B3 - 需求与测试用例写作

Studio B3 的设计初衷是将类似于 AutoDev 的全周期 AI 赋能带到写作领域。即在分析写作过程,在不同阶段为用户提供无缝的 AI 原生 UI 交互体验,可以通过工具栏、快捷键等五种方式触发 AI 能力。并在底层提供可自定义的 prompt 能力,方便于用户自己根据自身模型优化编辑器。

虽然 B3 编辑器模块还没有完全从 Studio B3 抽离出来,但是你可以参考其设计思想,构建自己适用于软件需求、测试用例写作的工具。

在线试玩:https://editor.unitmesh.cc/ 。

Integrator 型工具:CoUnit 和 DevOps Genius

为了更好的利用生成式 AI 提升效能,我们的第二个阶段应该是:让生成式 AI 辅助完成协同工作,诸如于:构建多场景知识问答,降低知识检索成本、设计团队 API,打造智能助理。

团队 API 工具:CoUnit(探索性)

95be5754a9a06906fb179944b67d2570.png

CoUnit,一个基于 LLM 的虚拟团队接口人(Team API),通过向量化文档、知识库、SDK和 API 等,结合 LLM 智能化团队间对接与协作。

简单来说,CoUnit 将现有的团队、组织内的研发资产向量化,并以 API 的方式暴露出去。你可以在 AutoDev 中集成它,完成诸如于结合上下文和内部 API 生成更适合于开发者场景的代码。

研发过程工具:DevOps Genius(探索性)

DevOpsGenius 起初是为了探索在如何 IDE 与 DevOps 平台进行 CodeReview 的协同。结合先进的代码分析和静态分析技术(ArchGuard),自动检测潜在的问题、错误和不规范的代码风格,并提供有针对性的建议和改进意见。

后来,我们尝试去结合更多的 DevOps 实践,然后就没有然后了。

0f9e6c33f4cdd8876812598229fba314.png

基础设施:Chocolate Factory 和 EdgeInfer

在构建上述的一系列 AI 辅助应用开发时,我们发现有部分基础设施是重复的。于是,我们提取了两个 SDK,面向普通应用的 JVM SDK:Chocolate Factory 和面向移动设备、原生桌面应用的:EdgeInfer 。

JVM SDK:Chocolate Factory

00a3edc0c213b850a74a9c7135b1f510.png

Chocolate Factory 提供的不仅仅是一个 SDK,更多的是沉淀我们的经验,模式、示例、实践指南。Chocolate Factory 简单来说是一个 JVM 版本的 LangChain,提供了适用于业务场景的模块化能力,并内置了一系列软件研发的基础能力:代码拆分、代码分析、代码解释器等等。

  • 在 UnitEval 中,使用了其提供的代码分析、PromptScript 测试能力。

  • 在 AutoDev 中,使用了其提供的 Git 提交信息分析能力。

  • 在 DevOpsGenius 中,使用了其提供的提交 diff 、代码拆分等能力。

通过持续地内建研发基础设施分析能力,来加速生成式 AI 的应用。

跨平台 SDK:EdgeInfer(探索性)

EdgeInfer 是基于我们对 2024 展望所构建的 SDK,主要是由交互体验变革引发的思考:更强的本地 AI 运行能力 + **更小的模型体积。它会引发起智能化端侧的浮现,诸如于连接 “智障设备” 的智能中枢。

于是乎,我们使用 Rust 语言 + 跨平台技术构建了 EdgeInfer,并在 Android 和桌面应用上编写了对应的 demo 来探索可能性。

总结

人生苦短,欢迎一起来挖坑通渠。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/258150.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于ssm国外摇滚乐队交流和周边售卖系统论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对国外摇滚乐队交流和周边售卖信息管理混乱,出错率高&…

CUMT-Java复习--抽象类和接口

目录 一、抽象类 1、定义抽象类 2、实现一个抽象类 二、接口 1、定义接口 2、实现接口 3、接口继承 4、接口和抽象类的相似之处 5、接口和抽象类的区别 三、instanceof关键字 一、抽象类 1、定义抽象类 抽象类是对于一类相同的具体概念的抽象。 抽象类和抽象方法都…

密码强度的提升与网络安全意识

随着互联网的快速发展,网络安全问题日益突出,其中密码安全作为网络世界的第一道防线,其重要性不言而喻。本文将从密码强度的提升和网络安全意识普及两个方面,探讨如何在日益复杂的网络环境中保障个人信息安全。 随机密码生成器 |…

【2023 英特尔On技术创新大会直播 |我与英特尔的初次相遇】—— AIPC探索下一代的物联网时代

🌈个人主页: Aileen_0v0 🔥系列专栏:英特尔技术学习专栏 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 硅谷经济的发展与挑战 Intel开发者云与AI技术的应用 AI压缩技术的发展与应用 英特尔与阿里巴巴在AI领域的合作 AIPC时代的…

RocketMQ系统性学习-RocketMQ原理分析之消息的可靠性以及有序性如何保证

文章目录 消息的可靠性如何保证?消息的有序性如何保证? 消息的可靠性如何保证? 要保证消息的可靠性,先来思考一下从哪些方面保证呢? 这要看消息的生命周期,既然保证可靠性,那么就是要保证 A 发…

理解并在虚拟化策略中实施 QEMU

● QEMU 是一种流行的开源机器模拟器。 ● QEMU 支持硬件虚拟化扩展(Intel VT-x 和 AMD-V)。 ● QEMUCare 为基于 QEMU 的虚拟化系统提供实时修补解决方案。 虚拟化现已成为现代 IT 基础设施的支柱,使组织能够实现前所未有的灵活性、可扩展…

pycharm运行正常,但命令行执行提示module不存在的多种解决方式

问题描述 在执行某个测试模块时出现提示,显示自定义模块data不存在,但是在PyCharm下运行正常。错误信息如下: Traceback (most recent call last):File "/run/channelnterface-autocase/testcases/test_chanel_detail.py", line 2…

直播种类之VR全景直播

VR全景直播是一种结合虚拟现实技术和直播的全新体验。通过全景相机拍摄,观众可以身临其境地感受直播现场的氛围和真实感,提供逼真的观看体验。 VR全景直播的优势在于: 1.身临其境的观看体验:观众可以像真的在现场一样,通过虚拟现实设备探索…

基于python的leetcode算法介绍之递归

文章目录 零 算法介绍一 简单示例 辗转相除法Leetcode例题与思路[509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/)解题思路:题解: [206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/)解题思路:题解&…

OpenHarmony开发环境快速搭建(无需命令行)

一. 搭建Windows环境 在嵌入式开发中,很多开发者习惯于使用Windows进行代码的编辑,比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段,大部分的开发板源码还不支持在Windows环境下进行编译,如Hi3861、H…

数字助听器如何处理声音?

数字助听器如何处理声音? 助听器的作用不仅仅是放大声音。为了创建可改进语音识别的自定义声音配置文件,他们以多种方式处理声音。 麦克风 与人耳一样,数字助听器不直接处理声波。首先是麦克风。它们充当换能器,捕获机械波能并将…

Verilog 仿真可视化

Verilog 仿真可视化 飞多学堂 飞多学堂 2023-12-11 09:37 Posted on 山东 DigitalJS 是一个基于 JavaScript 实现的开源数字电路模拟器,旨在模拟由硬件设计工具(如 Yosys)合成的电路。由弗罗茨瓦夫大学的Marek Materzok开发,源文…

手机数码品牌网站建设的作用是什么

手机数码产品几乎已经成为成年人必备的,包括手机、电脑、摄像机、键盘配件等,同时市场中相关企业也非常多,消费者可供选择的商品类型也很多样,而对企业来讲,只有不断提升品牌形象、获客拉新等才能不断提升企业地位&…

easyexcel常见注解

easyexcel常见注解 一、依赖 <!--阿里巴巴EasyExcel依赖--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.10</version></dependency>二、常见注解 ExcelProperty 注解中…

绝地求生什么游戏?

绝地求生是一款由蓝洞公司开发并发行的多人在线生存竞技游戏&#xff0c;也是一款备受玩家热爱和追捧的射击游戏。游戏灵感源自于日本电影《葛洛历亚号》&#xff0c;玩家将扮演一名跳伞降落在荒岛上的幸存者&#xff0c;通过收集资源、与其他玩家进行战斗来生存到最后一名&…

FastApi-快速入门FastApi框架(1)

前言 本文是该专栏的第1篇&#xff0c;后面会持续分享FastApi以及项目实战的各种干货知识&#xff0c;值得关注。 FastApi是一个现代、快速&#xff08;高性能&#xff09;的基于Python3.6的web框架&#xff0c;用于构建API。它旨在使API开发更快&#xff0c;更简单&#xff0…

Polar 这又是一个上传

Polar 这又是一个上传 开局还是一个文件上传界面 有前端后缀检查&#xff0c;这个好绕&#xff0c;抓包改后缀就行 绕过后burp可以直接传一个php上去 getshell 但是无法cat flag&#xff0c;感觉权限不够&#xff0c;需要提权。 查找具有suid权限的命令 1system(find / -use…

网络协议小记

一、TCP/IP协议 作为一个小萌新&#xff0c;当然我无法将tcp/ip协议的大部分江山和盘托出&#xff0c;但是其中很多面试可能问到的知识&#xff0c;我觉得有必要总结一下&#xff01; 首先&#xff0c;在学习tcp/ip协议之前&#xff0c;我们必须搞明白什么是tcp/ip协议。 1、…

第二十一章 : Spring Boot 集成定时任务(一)

第二十一章 &#xff1a; Spring Boot 集成定时任务&#xff08;一&#xff09; 前言 本章知识点&#xff1a; 介绍使用Spring Boot内置的Scheduled注解来实现定时任务-单线程和多线程&#xff1b;以及介绍Quartz定时任务调度框架&#xff1a;简单定时调度器&#xff08;Simp…

SpringIOC之AnnotatedElementKey

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…