1. 首页 >> ChatGPT教程 >>

ChatGPT也能画图?教你一键提效小技能

作为一个文本模型,ChatGPT是没法直接输出图象的,除非借助其他的第三方插件或库。
但是,得益于前期接受了海量区别格式文本的预训练,ChatGPT可以轻松生成各种类型的结构化输出,例如表格,代码,数学公式等等。
这其中还包括一类「基于文本的图形描写语言」,它允许我们通过编写文本指令或代码来构建包括特定元素、关系和布局的图形,而无需依赖图形编辑工具
那末,我们会不会可以改由让ChatGPT生成对应的文本指令或代码,然后再通过特定的解析器与渲染引擎,转换为可视化的图形或图表呢
这不由让我想起了一个很成心思的工具:PlantUML。

PlantUML是甚么?

PlantUML提供了一种用文本描写来绘制UML图的方式,可以绘制类图、时序图、用例图等等。
用PlantUML来创建图表有很多好处,包括:
  • 使用人类可读的文本描写,上手容易
  • 不要钱开源
  • 智能布局,无需手动调剂
  • 快速创建和更新
  • 高度可定制的外观
接下来,我们将在《使用ChatGPT提高研产生产力的10个正确姿式》一文中的「代码解释器」基础上,进一步展现怎样使用ChatGPT为指定代码生成适合的UML图。

(所用到的Prompt和工具地址在文末,可自取)

chatgpt中文版 http://chatgpt.guige.xyz 


1
时序图


时序图是一种用于描写对象之间交互行动的UML图,它展现了对象之间的消息传递顺序。
我们先给ChatGPT一份Java伪代码,这份代码描写了一个简单电商系统中的定单流程:
  1. 用户(User)下单。
  2. 定单(Order)交给定单处理器处理。
  3. 定单处理器(OrderProcessor)履行定单处理逻辑,并在完成后发送处理结果通知。
  4. 通知服务(NotificationService)发送通知给用户。
publicclassUser{
privateStringname;
privateStringemail;
//...

publicvoidplaceOrder(Orderorder){
//下单逻辑
//...
}
}

publicclassOrder{
privateUseruser;
privateStringorderId;
//...

publicvoidprocess(){
OrderProcessororderProcessor=newOrderProcessor();
orderProcessor.processOrder(this);
}
}

publicclassOrderProcessor{
publicvoidprocessOrder(Orderorder){
//履行定单处理逻辑
//...
//发送处理结果通知
NotificationService.sendNotification(order.getUser(),"定单处理完成");
}
}

publicclassNotificationService{
publicstaticvoidsendNotification(Useruser,Stringmessage){
//发送通知给用户
//...
}
}


然后,我们让ChatGPT根据这份伪代码用PlantUML语言构建一张时序图:
@startuml

actorUser
participantOrder
participantOrderProcessor
participantNotificationService

User->Order:placeOrder(order)
activateOrder
Order->OrderProcessor:process()
activateOrderProcessor
OrderProcessor->NotificationService:processOrder()
activateNotificationService
NotificationService-->User:sendNotification()
deactivateNotificationService
deactivateOrderProcessor
deactivateOrder

@enduml


最后,我们把ChatGPT生成的PlantUML代码复制粘贴到官网的运行块中预览:

2
类图


类图是一种用于描写系统中的类和类之间的关系的UML图,比如继承、关联、依赖等。
我们先给ChatGPT一份Java伪代码,这份代码描写了一个简单的人员系统:
  1. Person类是基类,具有name和age属性,和eat方法。
  2. Teacher类继承自Person类,并添加了id属性和teach方法。
  3. Student类也继承自Person类,并添加了id属性和study方法。
classPerson{
Stringname;
intage;
voideat(){
//吃饭的逻辑
}
}

classStudentextendsPerson{
StringstudentId;
voidstudy(){
//学习的逻辑
}
}

classTeacherextendsPerson{
StringteacherId;
voidteach(){
//教学的逻辑
}
}


然后,我们让ChatGPT根据这份伪代码用PlantUML语言构建一张类图:
@startuml

classPerson{
-name:String
-age:int
+eat():void
}

classStudent{
-studentId:String
+study():void
}

classTeacher{
-teacherId:String
+teach():void
}

Person<|-- student="">Person<|-- teacher="">
@enduml


最后,我们把ChatGPT生成的PlantUML代码复制粘贴到官网的运行块中预览:

3
流程图


流程图是一种用区别形状的图形来表示中间每一个操作步骤或决策点的UML图,经常使用于描写系统某项任务的履行顺序。
我们先给ChatGPT一份Java伪代码,这份代码描写了一个购物流程的逻辑:
  1. 用户开始购物,浏览产品,选择产品。
  2. 如果产品有库存,则将其添加到购物车中。
  3. 检查会不会有折扣码可用,如有则利用折扣码。
  4. 用户进行结账,如果支付成功,则下定单并显示定单确认页面。
  5. 否则,显示支付毛病信息。
  6. 如果产品无库存,则显示产品缺货信息。
  7. 最后,购物流程结束。
//开始购物
startShopping();
//浏览产品
browseProducts();
//选择产品
selectProduct();
//检查产品会不会有库存
if(isProductInStock()){
//添加到购物车中
addToCart();
//检查会不会有折扣码可用
if(hasDiscountCode()){
//利用折扣码
applyDiscountCode();
}
//用户进行结账
proceedToCheckout();
if(isPaymentSuccessful()){//支付成功
//下定单并显示定单确认页面
placeOrder();
showOrderConfirmation();
}else{//支付失败
//显示支付毛病信息
showPaymentError();
}
}else{//产品无库存
//显示产品缺货信息
showProductOutOfStockMessage();
}
//购物流程结束
endShopping();


然后,我们让ChatGPT根据这份伪代码用PlantUML语言构建一张流程图:
@startuml

start
:开始购物;
:浏览产品;
:选择产品;
if(isProductInStock())then(有库存)
:添加到购物车;
if(hasDiscountCode())then(有折扣码)
:利用折扣码;
endif
:进入结账流程;
if(isPaymentSuccessful())then(支付成功)
:下定单;
:显示定单确认页面;
else(支付失败)
:显示支付毛病信息;
endif
else(无库存)
:显示产品缺货信息;
endif
:结束购物;
stop

@enduml


最后,我们把ChatGPT生成的PlantUML代码复制粘贴到官网的运行块中预览:


4
状态图


状态图是一种用于描写对象在其生命周期中区别状态及其转换关系的UML图。
我们先给ChatGPT一份Java伪代码,这份代码描写了一个定单的状态变化进程:
  1. 定单类(Order)具有一个表示当前状态的成员变量(state),并通过setState方法设置状态。
  2. Order类还有一个process方法,用于触发状态处理。
  3. 定单状态接口(OrderState)定义了区别状态的处理方法。
  4. 具体的定单状态类(如NewOrderState、ShippedState等)实现了定单状态接口,并在其processOrder方法中履行具体的处理逻辑,随后流转到下一个状态。
//定单
classOrder{
privateOrderStatestate;

publicOrder(){
state=newNewOrderState();
}

publicvoidsetState(OrderStatestate){
this.state=state;
}

publicvoidprocess(){
state.processOrder(this);
}

//Othermethodsandattributes
}

//定单状态
interfaceOrderState{
voidprocessOrder(Orderorder);
}

//新定单状态
classNewOrderStateimplementsOrderState{
@Override
publicvoidprocessOrder(Orderorder){
//具体的处理逻辑
order.setState(newShippedState());//状态流传
}
}

//已发货状态
classShippedStateimplementsOrderState{
@Override
publicvoidprocessOrder(Orderorder){
//具体的处理逻辑
order.setState(newDeliveredState());//状态流传
}
}

//已投递状态
classDeliveredStateimplementsOrderState{
@Override
publicvoidprocessOrder(Orderorder){
//具体的处理逻辑
order.setState(newClosedState());//状态流传
}
}

//已关闭状态
classClosedStateimplementsOrderState{
@Override
publicvoidprocessOrder(Orderorder){
//具体的处理逻辑
}
}


然后,我们让ChatGPT根据这份伪代码用PlantUML语言构建一张状态图:
@startuml


classOrder{
-state:OrderState
+setState(state:OrderState)
+process()
}

interfaceOrderState{
+processOrder(order:Order)
}

classNewOrderState{
+processOrder(order:Order)
}

classShippedState{
+processOrder(order:Order)
}

classDeliveredState{
+processOrder(order:Order)
}

classClosedState{
+processOrder(order:Order)
}

Order-->OrderState
OrderState<|.. neworderstate="">OrderState<|.. shippedstate="">OrderState<|.. deliveredstate="">OrderState<|.. closedstate="">
Order-->NewOrderState:<>
NewOrderState-->ShippedState:processOrder()
ShippedState-->DeliveredState:processOrder()
DeliveredState-->ClosedState:processOrder()

@enduml


最后,我们把ChatGPT生成的PlantUML代码复制粘贴到官网的运行块中预览:


5
用例图


用例图是一种用于描写用户与系统交互场景的UML图,展现了系统中区别角色与相关用例之间的关系。
我们先给ChatGPT一份Java伪代码,这份代码描写了一个简单的图书馆管理系统所包括的角色及其可支持的操作,其中:
  1. 图书管理员(Librarian)可以履行借出图书和归还图书的操作。
  2. 读者(Reader)可以履行搜索图书、借阅图书、归还图书和注册借书证的操作。
//图书管理员类
classLibrarian{
voidcheckOutBook(Bookbook,Readerreader){
//实现借书逻辑
}

voidreturnBook(Bookbook,Readerreader){
//实现还书逻辑
}
}

//读者类
classReader{
voidsearchBook(Stringkeyword){
//实现搜索图书逻辑
}

voidborrowBook(Bookbook){
//实现借书逻辑
}

voidreturnBook(Bookbook){
//实现还书逻辑
}
}

//Book类(图书)
classBook{
//图书属性和方法
}


然后,我们让ChatGPT根据这份伪代码用PlantUML语言构建一张状态图:
@startuml

lefttorightdirection

actor图书管理员asAdmin
actor读者asReader

rectangle图书管理系统{
Admin-->(借出图书)
Admin-->(归还图书)
Reader-->(搜索图书)
Reader-->(借阅图书)
Reader-->(归还图书)
Reader-->(注册借书证)
}

@enduml


最后,我们把ChatGPT生成的PlantUML代码复制粘贴到官网的运行块中预览:


6
总结


  1. PlantUML是一个使用文本描写构建UML图的工具。
  2. ChatGPT没法直接生成图象,但可以生成对应的文本描写或代码,然后借助PlantUML等工具转换为可视化的UML图。
  3. 实现进程:
    1)给ChatGPT提供要生成UML图的Java代码;
    2)向ChatGPT描写需要生成的UML图类型;
    3)让ChatGPT根据代码生成PlantUML代码;
    4)将PlantUML代码复制到官网预览并输出图片。
所用到Prompt:

我将为你提供一个代码片断(由```分隔),请先充分理解该代码片断的含义。接下来,请用PlantUML语言为我绘制一个{流程图},要求该{流程图}能有助于解释该代码片断的结构和关系:
```
代码
```


PlantUMl官网:

https://www.PlantUML.com

桂¥哥¥网¥络www.guIgeGe.cn

本文来源于chatgptplus账号购买平台,转载请注明出处:https://chatgpt.guigege.cn/jiaocheng/29340.html 咨询请加VX:muhuanidc

联系我们

在线咨询:点击这里给我发消息

微信号:muhuanidc

工作日:9:30-22:30

X

截屏,微信识别二维码

微信号:muhuanidc

(点击微信号复制,添加好友)

打开微信

微信号已复制,请打开微信添加咨询详情!