一 背景
在日常开发过程中,我们会经常使用到通义灵码,通过通义灵码极大的提升了开发效率,包括在代码补全,代码解释等方面,但是在日常软件开发中,我们还有很多绘图的需求,没有办法通过现有通义灵码的功能满足。比如以下绘图场景,传统使用draw.io 等绘制工具进行绘制。
但是使用绘图软件,存在以下问题:
- 团队协同差:需要安装特定软件进行重新编辑;
- 没办法版本管理:没有办法使用git等工具进行版本管理;
- 二次编辑难:图片和源文件分离,每次都要基于原始文件进行编辑,原文件找不到了就要重新画;
- 效率低:尤其针对使用拖拽式的画图软件时候,还要使用很多精力去对齐各种连线。
本次主要探索如何在通义灵码场景下解决以上问题。
二 PlantUML介绍
我们知道常用的大语言大模型只能生成文字,为了生成流程图,我们引入了PlantUML进行。PlantUML 是一种基于纯文本定义来绘制 UML(统一建模语言)图的开源工具。使用 PlantUML,用户可以编写简单的文本描述,然后自动生成各种类型的 UML 图形。同时PlantUMl支持多种类型的图表,覆盖了软件开发的全生命周期,包括从需求设计到概要设计,在到最后的详细设计,都有涉及到,包括以下场景:
2.优势
因为plantuml基于文本绘制的特点,存在以下优点:
3.IDE插件使用
安装plantuml的ide插件,安装后可以增加相关的ide操作入口,安装完插件后,还需要再使用brew安装graphviz,因为图形绘制还需要依赖graphviz。安装好以后就可以在IDE里编辑预览plantUML代码文件了。
4.在语雀中使用
同时语雀也提供了对plantuml很好的支持,可以在语雀中添加plantuml的代码,直接渲染,如下图所示。
三 灵码自定义扩展
1. 功能介绍
通义灵码提供了自定义扩展的能力,用户可以在后台配置自定义的提示词,满足自定义场景需求。页面如下,可以看到自定义扩展,本质上还是基于大模型的prompt进行的,所以自定义扩展功能的好坏主要在与如何写好提示词prompt。
2. 怎么写好提示词
熟悉大模型的同学都应该,Prompt如何写对大模型的输出效果很重要。以我的经验为例,一般使用比较多的是CRIPSE提示词框架。
2.1. CRISPE框架介绍
CRISPE框架是用于大模型提示词设计的一种方法论,旨在通过系统化的设计流程来构建高效的提示词,以获得最佳的输出结果。CRISPE这个名字来源于其六个核心组成部分的首字母缩写:
2.2. 让灵码帮你写提示词
可以看到CRISPE框架的要求还是比较多的,如果每次都考人肉去写,还是比较折腾的。既然CRIPSE是一个比较标准的框架,我们就可以按照框架的要求,让大模型每次帮我们直接生成优化后的提示词就行,我们只需要输入一些核心要求即可。设计prompt如下:
这样后续每次生成,我们只需要输入核心要求,然后让灵码大模型帮你优化提示词,这样就可以很快的生产满足CRISPE框架的提示词了。整体使用如下:
3. IDE模型图验证
我们使用上面的提示词优化专家,依次生产了针对各种图形场景的自定义扩展指令,包括类图,时序图,活动图,组件图,用例图,数据库ER图的扩展命令。
测试生成效果如下:
3.1. 组件图
3.1.1. 提示词
3.1.2. 效果
3.2. 用例图
3.2.1. 提示词
3.2.2. 效果
3.3. 类图
3.3.1. 提示词
3.3.2. 效果
3.4. 流程图
3.4.1. 提示词
3.4.2. 效果
3.5. 活动图
3.5.1. 提示词
3.5.2. 效果
4. 其他场景
除了以上场景,很多日常场景也可以使用,比如
4.1. 日常学习
使用plantuml输出,方便日常学习了解,比如:
① 基于java动态代理的实现原理,用plantuml使用流程图格式输出
② 基于https三次握手过程,用plantuml的格式输出
4.2. 其他高级用法
plantuml还有很多高级用法,比如以下各种场景。其实都可以通过大模型来驱动生成,可以挖掘很多场景。
4.2.1. 部署图
4.2.2. 数据表
4.2.3. 项目管理表
四 展望
相信不久的将来,IDE和大模型会彻底融合,AI将贯穿整个研发流程,大模型会从单一的代码助手,走向更智能的AI机器人,更好的服务开发者,大家一起见证新的AI编程时代的到来。