解放大脑:ChatGPT + PlantUML = 不用画图了

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 

outside_default.png

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 

来源:古时的风筝


对于程序员来说,写文档这件事是绝大多数程序员不喜欢甚至非常讨厌的一件事儿,枯燥、乏味。我本身其实并不太排斥写文档、画图这些,当然了,比起写代码来说,我还是更喜欢写代码的。

但是写文档和补文档是两码事,有类似经历的同学应该能够理解,懂的都懂。项目开始前写文档还好,比如写登录功能、画登录流程图,这其实是一个设计的过程,写好文档后可以直接作为开发指导,还是很有价值的。而项目完成后补文档,感觉就是在浪费生命。

刚写的时候还行,一边写一边画图,还有精力注意图的美感,写了两天就彻底放飞了,美感不美感的放一边,关键是已经不想画了。

于是我找到了这个方法,用 ChatGPT 直接生成 PlantUML,微调一下就可以了,甚至有的调都不调,直接用了。

什么是 PlantUML

PlantUML是一个通用性很强的工具,可以快速、直接地创建各种图表。利用简单直观的语言,用户可以毫不费力地绘制各种类型的图表。支持序列图、用例图、类图、对象图、活动图、组件图、部署图、状态图、时序图。

「毫不费力」这个特点非常有吸引力,当然没那么夸张,还是要费点力气的。它有自己的一套语法,类似于写代码的方式表示各个实体之间的关系、指示要生成哪种类型的图。用过 Markdown 的一下就能理解。

举个例子,下面的代码可以表示 Client 向 Server 发送 Hello。

@startuml
!theme materia-outline
Client -> Server : Hello
@enduml
outside_default.png

如果你想自己用它的语法规则,通过写代码的方式画图,可以到官网 https://plantuml.com/zh/ 上学习一下语法。

可以直接在 PlantUML 在线环境上运行

https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000

上方写代码,下面就直接生成对应的 UML 图了,可以调整样式,可以下载各种格式的图片。

outside_default.png

也可以在本地安装运行,支持 Java 包运行,也支持 Docker 。

另外,像 VSCode 这些编辑器或者一些笔记软件都有对应的插件支持,可以搜索安装。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

ChatGPT + PlantUML

如果你还是觉得不够「毫不费力」,那可以让 ChatGPT 直接生成给你。

打开 ChatGPT ,在「探索 GPT」里面可以搜索 “PlantUML Diagram Wizard”,这个应用是专门用来帮你画 PlantUML 的,但是使用的话需要 GPT-4o,如果超过最大限制,则需要开通 plus 才能用,有实力的同学可以用这个。

outside_default.png

不用它也完全可以,我就直接用的免费版 ChatGPT-3.5,效果也没有问题。除此之外,用 Kimi 等大模型应该也问题不大。

那应该怎么给 ChatGPT 提示词呢?

  1. 首先你必须知道你要画的是什么类型的图,序列图、用例图、类图、对象图、活动图、组件图、部署图、状态图、时序图,类型关键词必须准确给到 GPT。

  2. 描述要清晰,这是必须的,就像你解释给别人一样,只不过 GPT 的理解能力更强一些。

  3. 如果有代码的话,必要情况下给一些解释。

下面我举几个例子,不一定是最好的,但是基本上能解决问题。

画类图

有时候 IDEA 能解决一部分问题,比如我查看一个 serverImpl的类图,但是更大范围的关系就不行了,比如我还想看到 Controller 调用 Service 的关系。

outside_default.png

用 ChatGPT 怎么做呢?

第一步就是将代码给到 ChatGPT。这一步要看你的代码量有多少,如果代码量不多的话,可以一次性都给它,如果多的话,ChatGPT 的输入token 是有限制的,就要分批次告诉它。

第一步 prompt:接下来我会发给你几个 java 文件,在我告诉你开始画图之前,你只需要记住文件的内容就好了。之后GPT会表示明白了,请你发送文件内容。

第二步:将你要画的文件一个个的输送给 GPT。

第三步:好了,请帮我生成 PlantUML 格式的类图,请开始画图吧

然后 GPT 就会输出一个 PlantUML 代码段。

outside_default.png

之后粘贴到 https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000  在线环境中,然后选一个主题,就可以把图弄下来了。

outside_default.png

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

时序图

接下来我将一个登录流程的描述告诉 GPT 让它画出时序图。

prompt 如下:

以客户端、登录服务、数据库为3个主体,画出整个登录过程的Sequence diagrams:客户端输入手机号,调用登录服务,查询数据库,查看手机号是否存在,如果不存在,直接通知客户端用户不存,如果存在,登录服务查询数据库验证手机号和密码是否匹配,如果匹配,返回用户信息,客户端跳转到首页

其实描述的并不是那么条理很清晰,但是 GPT 比较聪明,它能理解。

outside_default.png

最后还是粘贴到在线环境上,查看并下载最终的UML图。

outside_default.png

怎么样,是不是能够偷下懒了。


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

outside_default.png

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

outside_default.png

outside_default.pngoutside_default.pngoutside_default.pngoutside_default.png

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值