解放大脑:ChatGPT + PlantUML = 不用画图了
👉 这是一个或许对你有用的社群
🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:
《项目实战(视频)》:从书中学,往事上“练” 《互联网高频面试题》:面朝简历学习,春暖花开 《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题 《精进 Java 学习指南》:系统学习,互联网主流技术栈 《必读 Java 源码专栏》:知其然,知其所以然
👉这是一个或许对你有用的开源项目
国产 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
如果你想自己用它的语法规则,通过写代码的方式画图,可以到官网 https://plantuml.com/zh/ 上学习一下语法。
可以直接在 PlantUML 在线环境上运行
https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000
上方写代码,下面就直接生成对应的 UML 图了,可以调整样式,可以下载各种格式的图片。
也可以在本地安装运行,支持 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 才能用,有实力的同学可以用这个。
不用它也完全可以,我就直接用的免费版 ChatGPT-3.5,效果也没有问题。除此之外,用 Kimi 等大模型应该也问题不大。
那应该怎么给 ChatGPT 提示词呢?
首先你必须知道你要画的是什么类型的图,序列图、用例图、类图、对象图、活动图、组件图、部署图、状态图、时序图,类型关键词必须准确给到 GPT。 描述要清晰,这是必须的,就像你解释给别人一样,只不过 GPT 的理解能力更强一些。 如果有代码的话,必要情况下给一些解释。
下面我举几个例子,不一定是最好的,但是基本上能解决问题。
画类图
有时候 IDEA 能解决一部分问题,比如我查看一个 serverImpl
的类图,但是更大范围的关系就不行了,比如我还想看到 Controller 调用 Service 的关系。
用 ChatGPT 怎么做呢?
第一步就是将代码给到 ChatGPT。这一步要看你的代码量有多少,如果代码量不多的话,可以一次性都给它,如果多的话,ChatGPT 的输入token 是有限制的,就要分批次告诉它。
第一步 prompt:接下来我会发给你几个 java 文件,在我告诉你开始画图之前,你只需要记住文件的内容就好了
。之后GPT会表示明白了,请你发送文件内容。
第二步:将你要画的文件一个个的输送给 GPT。
第三步:好了,请帮我生成 PlantUML 格式的类图,请开始画图吧
。
然后 GPT 就会输出一个 PlantUML 代码段。
之后粘贴到 https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000 在线环境中,然后选一个主题,就可以把图弄下来了。
基于 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 比较聪明,它能理解。
最后还是粘贴到在线环境上,查看并下载最终的UML图。
怎么样,是不是能够偷下懒了。
欢迎加入我的知识星球,全面提升技术能力。
👉 加入方式,“长按”或“扫描”下方二维码噢:
星球的内容包括:项目实战、面试招聘、源码解析、学习路线。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
微信扫码关注该文公众号作者