Skip to content

Commit

Permalink
docs: update for summary
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Jun 25, 2023
1 parent b647fab commit 0cb3da9
Show file tree
Hide file tree
Showing 5 changed files with 185 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,15 @@
- [模式:精细化流程](./develop-llm-app-with-workflow.md)
- [模式:DSL 驱动开发](./dsl-driven-development.md)
- [LLM 应用集成模式](./develop-llm-intergration-patterns.md)
- [LLM 应用示例:AI + DevOps](./develop-llm-app-example-ai-devops.md)
- [工具示例:AutoDev](./develop-llm-app-example-autodev.md)
- [面临的挑战](./aidevops-challenges.md)

# LLM 应用手册 - 微调 + LLMOps篇

- [微调之前的准备](./finetune-setup.md)
- [微调模式:三阶六步 + LLMOps](./finetune-llm-ops.md)
- [微调示例集:BizDevOps](./finetune-bizdevops.md)
- [微调示例集:AI + DevOps](./finetune-bizdevops.md)

# LLM 应用手册 - 训练篇(TBD)

Expand Down
34 changes: 34 additions & 0 deletions src/aidevops-challenges.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# 面临的挑战

虽然生成式AI技术及工具已经在软件生命周期的各个环节中体现出了提效的可行性,但想要在大型科技组织中端到端落地、实现提效的突破,还面临很多挑战。

## 企业规模化软件过程提效的挑战

**信息安全和信创化的强制要求**

大型企业尤其是银行,面临最强的信息安全监管及信创化、国产化要求,需要国产生态中能力突出的大模型。

**开源大模型表现偏弱、自己训练成本高**

目前可私有化部署的大模型,其自然语言理解和代码生成的水平与GPT有一定差距;根据大语言模型论文做一些粗略的数学计算,如果用的是
Facebook LLaMA,训练成本(不考虑迭代或者出错)大约是400 万美元,如果是谷歌PaLM,大约 2700 万美元。

**与企业内部工具进行结合**

碎片化的应用提效效果有限,把 AI 无缝集成到BizDevOps 工具链中,技术难度尚未可知。

## 开发 AI 辅助研发提效的局限性

**基于 GPT 模型的工具不符合信息安全要求**

目前大多工具基于 OpenAI GPT 构建,不能私有化部署,不符合信息安全的强制要求;需要寻找能够私有化部署且水平相当的替代品。

**公开LLM 针对专业领域表现不佳,适用性差**

缺乏专业知识,对于某些专业领域缺乏足够的理解。它受训练数据中的影响,容易产生偏见和错误。

**LLM 工具碎片化**

各类工具都是在一个个分散的工作节点上辅助,使用时来回切换工具的成本很高,整体端到端地提效不明显。


80 changes: 80 additions & 0 deletions src/develop-llm-app-example-ai-devops.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# LLM 应用示例:AI + DevOps

现在,类似于 ChatGPT 和 Microsoft Copilot 这样的人工智能突破正在彻底改变软件行业。
基于人工智能的工具与基础大语言模型可以增强软件开发在设计、需求、测试、发布和运维等各个环节中的能力,提高质量和效率。

![SDLC Copilot](images/sdlc-copilot.png)

## 方式:梳理研发流程寻找突破点

依旧的,我们需要拆到足够小的工序,才能看到明显的效果。

![SDLC Process](images/llm-sdlc-processes.png)

## 试验

在这里,我们选择了一个比较典型的研发流程:需求、设计、开发、测试、发布、运维。 如下是架构设计的示例:

![SDLC Architecture](images/sdlc-step-by-steps.png)

需要注意的是,在这里需要以 zero-shot 的方式实现,以便于:

1. 更好的理解和使用
2. 工具化集成

### 需求 prompt 示例(部分)

```markdown
你是一个敏捷项目的 BA,请根据如下的信息,编写用户故事。

1. 你的项目是:### OKR 系统 ###
2. 背景是:### 作为一个员工,我希望能够及时更新我的 OKR
进展情况,并向团队报告我的进展情况,以便能够保持团队的透明度和协同性 ###
2. 我想要实现的功能是: ### 更新 OKR 进度 ###。
3. 你要仔细分析,并尽可能考虑不同的场景,不限于 ### ####。如果场景不存在,请不要编写。
4. 你的返回模板如下所示:

###

用户故事:可以选择宝贝出行服务
作为 xxx
我想 在xx出行的手机客户端里选择宝贝出行服务
以便于 我能够带宝宝打车出行的时候打到有儿童座椅的车

AC 1: xxx
Given xxx
When xxx
Then xxx

###
```

### 测试用例 prompt 示例(部分)

```markdown
请分析如下的用户故事,按你的理解使用 markdown 表格输出测试用例,格式如下:

所属功能模块 用例编号 用例名称 前置条件 用例类型 操作步骤 优先级 预期结果 关联需求类型
````

### 影响分析 prompt 示例(部分)

```markdown
我在实现一个 OKR 系统 的 作为一个员工,我希望能够及时更新我的 OKR 进展情况,并向团队报告我的进展情况,以便能够保持团队的透明度和协同性
的功能,需要修改哪些服务的代码?



| **服务** | **功能描述** |
|----------|----------------------------------------------|
| 用户管理服务 | 用于存储和管理员工的基本信息,如姓名、职位等,以便于识别员工并关联他们的 OKR。 |
| 团队管理服务 | 用于存储和管理团队的基本信息,如团队名称、团队成员等,方便员工对齐团队目标。 |
| OKR 管理服务 | 用于创建、更新和删除 OKR,同时支持查询功能,方便员工和团队查看和管理他们的 OKR。 |
| 权限管理服务 | 用于控制不同角色的员工在系统中的权限,确保只有合适的人员可以发布或修改 OKR。 |
| 通知服务 | 当有新的 OKR 发布或修改时,负责通知相关人员,以便他们了解最新的目标和进度。 |
| 数据分析服务 | 对 OKR 数据进行分析,生成报告,以便管理层了解整体的目标完成情况和进度。 |
| 集成服务 | 与其他企业系统(如项目管理、日程管理等)集成,实现数据同步和自动更新 OKR 的功能。 |
```

### ...

67 changes: 67 additions & 0 deletions src/develop-llm-app-example-autodev.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# AI + DevOps 最后一公里:AutoDev 插件

GitHub: [https://github.com/unit-mesh/auto-dev](https://github.com/unit-mesh/auto-dev)

> 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: [https://github.com/unit-mesh/auto-dev](https://github.com/unit-mesh/auto-dev)

接入 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
构建的问答式文档,可以对企业内部的各种文档进行语义理解和智能问答,进而简化开发人员的学习成本。
Binary file added src/images/sdlc-copilot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 0cb3da9

Please sign in to comment.