解放大腦:ChatGPT + PlantUML = 不用畫(huà)圖了
共 2939字,需瀏覽 6分鐘
·
2024-06-05 09:19
往期熱門(mén)文章:
2、限流算法哪家強(qiáng)?時(shí)間窗口,令牌桶與漏桶算法對(duì)比
對(duì)于程序員來(lái)說(shuō),寫(xiě)文檔這件事是絕大多數(shù)程序員不喜歡甚至非常討厭的一件事兒,枯燥、乏味。我本身其實(shí)并不太排斥寫(xiě)文檔、畫(huà)圖這些,當(dāng)然了,比起寫(xiě)代碼來(lái)說(shuō),我還是更喜歡寫(xiě)代碼的。
但是寫(xiě)文檔和補(bǔ)文檔是兩碼事,有類似經(jīng)歷的同學(xué)應(yīng)該能夠理解,懂的都懂。項(xiàng)目開(kāi)始前寫(xiě)文檔還好,比如寫(xiě)登錄功能、畫(huà)登錄流程圖,這其實(shí)是一個(gè)設(shè)計(jì)的過(guò)程,寫(xiě)好文檔后可以直接作為開(kāi)發(fā)指導(dǎo),還是很有價(jià)值的。而項(xiàng)目完成后補(bǔ)文檔,感覺(jué)就是在浪費(fèi)生命。
剛寫(xiě)的時(shí)候還行,一邊寫(xiě)一邊畫(huà)圖,還有精力注意圖的美感,寫(xiě)了兩天就徹底放飛了,美感不美感的放一邊,關(guān)鍵是已經(jīng)不想畫(huà)了。
于是我找到了這個(gè)方法,用 ChatGPT 直接生成 PlantUML,微調(diào)一下就可以了,甚至有的調(diào)都不調(diào),直接用了。
什么是 PlantUML
PlantUML是一個(gè)通用性很強(qiáng)的工具,可以快速、直接地創(chuàng)建各種圖表。利用簡(jiǎn)單直觀的語(yǔ)言,用戶可以毫不費(fèi)力地繪制各種類型的圖表。支持序列圖、用例圖、類圖、對(duì)象圖、活動(dòng)圖、組件圖、部署圖、狀態(tài)圖、時(shí)序圖。
「毫不費(fèi)力」這個(gè)特點(diǎn)非常有吸引力,當(dāng)然沒(méi)那么夸張,還是要費(fèi)點(diǎn)力氣的。它有自己的一套語(yǔ)法,類似于寫(xiě)代碼的方式表示各個(gè)實(shí)體之間的關(guān)系、指示要生成哪種類型的圖。用過(guò) Markdown 的一下就能理解。
舉個(gè)例子,下面的代碼可以表示 Client 向 Server 發(fā)送 Hello。
@startuml
!theme materia-outline
Client -> Server : Hello
@enduml
如果你想自己用它的語(yǔ)法規(guī)則,通過(guò)寫(xiě)代碼的方式畫(huà)圖,可以到官網(wǎng) https://plantuml.com/zh/ 上學(xué)習(xí)一下語(yǔ)法。
可以直接在 PlantUML 在線環(huán)境上運(yùn)行
https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000
上方寫(xiě)代碼,下面就直接生成對(duì)應(yīng)的 UML 圖了,可以調(diào)整樣式,可以下載各種格式的圖片。
也可以在本地安裝運(yùn)行,支持 Java 包運(yùn)行,也支持 Docker 。
另外,像 VSCode 這些編輯器或者一些筆記軟件都有對(duì)應(yīng)的插件支持,可以搜索安裝。
ChatGPT + PlantUML
如果你還是覺(jué)得不夠「毫不費(fèi)力」,那可以讓 ChatGPT 直接生成給你。
打開(kāi) ChatGPT ,在「探索 GPT」里面可以搜索 “PlantUML Diagram Wizard”,這個(gè)應(yīng)用是專門(mén)用來(lái)幫你畫(huà) PlantUML 的,但是使用的話需要 GPT-4o,如果超過(guò)最大限制,則需要開(kāi)通 plus 才能用,有實(shí)力的同學(xué)可以用這個(gè)。
不用它也完全可以,我就直接用的免費(fèi)版 ChatGPT-3.5,效果也沒(méi)有問(wèn)題。除此之外,用 Kimi 等大模型應(yīng)該也問(wèn)題不大。
那應(yīng)該怎么給 ChatGPT 提示詞呢?
-
首先你必須知道你要畫(huà)的是什么類型的圖,序列圖、用例圖、類圖、對(duì)象圖、活動(dòng)圖、組件圖、部署圖、狀態(tài)圖、時(shí)序圖,類型關(guān)鍵詞必須準(zhǔn)確給到 GPT。 -
描述要清晰,這是必須的,就像你解釋給別人一樣,只不過(guò) GPT 的理解能力更強(qiáng)一些。 -
如果有代碼的話,必要情況下給一些解釋。
下面我舉幾個(gè)例子,不一定是最好的,但是基本上能解決問(wèn)題。
畫(huà)類圖
有時(shí)候 IDEA 能解決一部分問(wèn)題,比如我查看一個(gè) serverImpl的類圖,但是更大范圍的關(guān)系就不行了,比如我還想看到 Controller 調(diào)用 Service 的關(guān)系。
用 ChatGPT 怎么做呢?
第一步就是將代碼給到 ChatGPT。這一步要看你的代碼量有多少,如果代碼量不多的話,可以一次性都給它,如果多的話,ChatGPT 的輸入token 是有限制的,就要分批次告訴它。
第一步 prompt:接下來(lái)我會(huì)發(fā)給你幾個(gè) java 文件,在我告訴你開(kāi)始畫(huà)圖之前,你只需要記住文件的內(nèi)容就好了。之后GPT會(huì)表示明白了,請(qǐng)你發(fā)送文件內(nèi)容。
第二步:將你要畫(huà)的文件一個(gè)個(gè)的輸送給 GPT。
第三步:好了,請(qǐng)幫我生成 PlantUML 格式的類圖,請(qǐng)開(kāi)始畫(huà)圖吧。
然后 GPT 就會(huì)輸出一個(gè) PlantUML 代碼段。
之后粘貼到 https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000 在線環(huán)境中,然后選一個(gè)主題,就可以把圖弄下來(lái)了。
時(shí)序圖
接下來(lái)我將一個(gè)登錄流程的描述告訴 GPT 讓它畫(huà)出時(shí)序圖。
prompt 如下:
“
以客戶端、登錄服務(wù)、數(shù)據(jù)庫(kù)為3個(gè)主體,畫(huà)出整個(gè)登錄過(guò)程的Sequence diagrams:客戶端輸入手機(jī)號(hào),調(diào)用登錄服務(wù),查詢數(shù)據(jù)庫(kù),查看手機(jī)號(hào)是否存在,如果不存在,直接通知客戶端用戶不存,如果存在,登錄服務(wù)查詢數(shù)據(jù)庫(kù)驗(yàn)證手機(jī)號(hào)和密碼是否匹配,如果匹配,返回用戶信息,客戶端跳轉(zhuǎn)到首頁(yè)
”
其實(shí)描述的并不是那么條理很清晰,但是 GPT 比較聰明,它能理解。
最后還是粘貼到在線環(huán)境上,查看并下載最終的UML圖。
怎么樣,是不是能夠偷下懶了。
往期熱門(mén)文章:
1、升級(jí) JDK17 一個(gè)不可拒絕的理由 2、SQL中為什么不要使用1=1? 3、同事使用 insert into select 遷移數(shù)據(jù),開(kāi)開(kāi)心心上線,導(dǎo)致公司損失近10w! 4、拒絕寫(xiě)重復(fù)代碼,試試這套開(kāi)源的SpringBoot組件,效率翻倍~ 5、我原以為是個(gè)笑話,沒(méi)想到深挖一下背后還有故事。錯(cuò)怪官方了... 6、Lombok!代碼“亞健康”元兇? 7、上班摸魚(yú)神器!標(biāo)星 17k 的安卓手機(jī)投屏工具! 8、Zed,有望打敗 VS Code 嗎? 9、標(biāo)星 43.1 K!最火跨平臺(tái)筆記開(kāi)源項(xiàng)目 10、融入團(tuán)隊(duì)代碼風(fēng)格,代碼越寫(xiě)越爛!
