结合 AI 生成 mermaid、plantuml 等图表

article/2025/6/9 5:50:07

AI 画图

AI 画图并不是真的让 AI 画一个图片,而是让 AI 根据你的需求,生成对应的需求文本,再根据 “文本画图” 来生成图片。

Mermaid

mermaid 支持流程图、时序图、架构图等等多种图片绘制。当然最终生成的效果和样式会根据不同的“文本代码”渲染编辑器而不同。

流程图示例

举一个例子,先把如下需求告诉 AI (比如我这里使用 ChatGPT):

请用Mermaid语法帮我画一个用户登录流程图,包含以下步骤:
1.用户输入账号密码
2.前端校验格式
3.发送请求到后端
4.后端验证用户信息
5.如果验证成功,生成token返回
6.如果失败,返回错误信息
7.前端根据结果跳转页面或显示错误

然后 AI 会生成代码(文本代码):

graph TDA[用户输入账号密码] --> B[前端校验格式]B -->|格式正确| C[发送请求到后端]B -->|格式错误| H[前端提示格式错误]C --> D[后端验证用户信息]D -->|验证成功| E[生成 Token 并返回]D -->|验证失败| F[返回错误信息]E --> G[前端跳转页面]F --> I[前端显示错误信息]

然后把 mermaid 代码放到渲染工具中。

markdown 文本中使用:将 markdown 代码格式标注为 mermaid 语言,即可看到对应图片:

image-20250603065508488

飞书中 mermaid 使用步骤:先输入 / ,唤出快捷指令,然后输入搜索并选择文本绘图,将代码写到左侧,右侧即可生成所需图片,之后根据需要导出即可。

image-20250603070116949

image-20250603070209767

语雀中用法和飞书基本相同:

image-20250603070620628

如果想要修改 AI 生成的图片,那么只需要对文本代码进行修改,图片也会跟着改变。

时序图示例

AI 提示词:

请用Mermaid画一个订单支付的时序图,展示用户、前端、后端、支付网关之间的交互。

然后把生成的代码渲染一下,即可获得图片:

用户 前端 后端 支付网关 点击支付按钮 请求创建支付订单 创建支付请求(生成支付二维码/跳转链接等) 返回支付链接/二维码等 返回支付信息 展示支付页面(二维码/跳转) 扫码或完成支付操作 通知支付结果(回调) 确认接收 主动通知支付结果(可选) 页面轮询或等待通知 查询支付状态 返回支付状态 显示支付成功或失败 用户 前端 后端 支付网关

PlantUML

PlantUML 最擅长绘制 uml 图,绘制的图片更加专业规范(当然不同的文本代码编辑器,生成效果也是不同的,可以从上网众多生成图片中找到自己满意的)。此外,时序图、结构图等等,plantuml 都是支持的。

依旧是举一个例子,ai 提示词如下:

请用PlantUML语法帮我画一个订单系统的类图,包含:
-Order类:订单D、用户ID、总金额、状态、创建时间
-Orderltem类:商品ID、数量、单价
-User类:用户ID、用户名、邮箱
-Product类:商品ID、名称、价格、库存
展示它们之间的关联关系

然后生成代码:

@startuml
class Order {
- orderId: String
- userId: String
- totalAmount: Float
- status: String
- createdAt: DateTime
}class OrderItem {
- productId: String
- quantity: int
- unitPrice: Float
}class User {
- userId: String
- username: String
- email: String
}class Product {
- productId: String
- name: String
- price: Float
- stock: int
}' 关联关系
User "1" -- "0..*" Order : places
Order "1" -- "1..*" OrderItem : contains
OrderItem "*" -- "1" Product : refers to
@enduml

image-20250603072342236

draw.io

drawio 和之前的两种类似,都可以根据文本代码绘图,只是文本代码所需的格式不同而已。

这里我想要根据我之前写的文章 https://blog.csdn.net/XiugongHao/article/details/136355713 ,来生成对应的图片。然后我给ai提示词为:

根据下列内容,生成一个 draw.io 格式的 《节流防抖学习流程图》代码:// 这里直接把原文的 md 格式文本粘贴上去。。。

然后ai 给我生成了一个 xml 格式的代码:

<mxfile host="app.diagrams.net"><diagram name="节流防抖学习流程图" id="NQJhnU1h2lAv_GsA7Ybg"><mxGraphModel dx="1562" dy="752" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><!-- 开始 --><mxCell id="start" value="节流防抖学习流程图" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=16;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="300" y="20" width="300" height="50" as="geometry"/></mxCell><!-- 防抖 --><mxCell id="debounce" value="防抖 debounce" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;fontSize=14;" vertex="1" parent="1"><mxGeometry x="100" y="100" width="200" height="60" as="geometry"/></mxCell><!-- 防抖适用场景 --><mxCell id="debounce_scenario" value="适用场景:\n- resize/input事件\n- 操作DOM/发请求\n- 最后一次触发才执行" style="shape=note;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="100" y="180" width="200" height="100" as="geometry"/></mxCell><!-- 防抖实现方式 --><mxCell id="debounce_method" value="实现方式:\n1. 清除旧定时器\n2. 设置新定时器\n\n使用库: lodash.debounce(func, wait, options)" style="shape=note;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="100" y="300" width="200" height="120" as="geometry"/></mxCell><!-- 节流 --><mxCell id="throttle" value="节流 throttle" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=14;" vertex="1" parent="1"><mxGeometry x="500" y="100" width="200" height="60" as="geometry"/></mxCell><!-- 节流适用场景 --><mxCell id="throttle_scenario" value="适用场景:\n- scroll/timeupdate等高频事件\n- 每隔一段时间执行一次" style="shape=note;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="500" y="180" width="200" height="100" as="geometry"/></mxCell><!-- 节流实现方式 --><mxCell id="throttle_method" value="实现方式:\n1. 是否存在定时器\n2. 无则设置定时器\n3. 执行后重置标记\n\n使用库: lodash.throttle(func, wait, options)" style="shape=note;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="500" y="300" width="200" height="120" as="geometry"/></mxCell><!-- 箭头连接 --><mxCell id="edge1" style="endArrow=block;html=1;" edge="1" parent="1" source="start" target="debounce"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="edge2" style="endArrow=block;html=1;" edge="1" parent="1" source="start" target="throttle"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="edge3" style="endArrow=open;html=1;" edge="1" parent="1" source="debounce" target="debounce_scenario"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="edge4" style="endArrow=open;html=1;" edge="1" parent="1" source="debounce_scenario" target="debounce_method"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="edge5" style="endArrow=open;html=1;" edge="1" parent="1" source="throttle" target="throttle_scenario"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="edge6" style="endArrow=open;html=1;" edge="1" parent="1" source="throttle_scenario" target="throttle_method"><mxGeometry relative="1" as="geometry"/></mxCell></root></mxGraphModel></diagram>
</mxfile>

然后将代码直接粘贴到 drawio 中,没错,就是直接粘贴,然后他会自动生成所需的图:

image-20250603074416456

其他

当然,还有很多可以绘图的工具,比如 xmind 绘制思维导图 等等,还有 svg,canvas 等格式的图片也可以自由生成 logo、图片。


http://www.hkcw.cn/article/CuFBtfUKGI.shtml

相关文章

Java基础(二):八种基本数据类型详解

Java基础系列文章 Java基础(一)&#xff1a;发展史、技术体系与JDK环境配置详解 Java基础(二)&#xff1a;八种基本数据类型详解 目录 一、比特&#xff08;bit&#xff09;和字节&#xff08;Byte&#xff09;1、定义与换算关系2、应用场景差异 二、各类型详解1、整数类型&a…

数据安全合规体系构建的“三道防线“

引言 "三道防线"模型架构图 #mermaid-svg-wbeppAbwa3Vb3nL2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-wbeppAbwa3Vb3nL2 .error-icon{fill:#552222;}#mermaid-svg-wbeppAbwa3Vb3nL2 .error-text{fi…

MySQL强化关键_019_索引优化

目 录 一、最左前缀原则 1.完全使用索引 2.部分使用索引 3.不使用索引 4.效率折损 &#xff08;1&#xff09;使用范围查找 &#xff08;2&#xff09;索引断开 二、索引失效场景 1. 索引列参与运算 2.索引列模糊查询以“%”开始 3.索引列是字符串类型&#xff0c;查…

ABAP锁对象

1、锁表 在一些业务场景中&#xff0c;我们需要将某张表或某张表中的某些数据锁定&#xff0c;防止多人对该表进行操作&#xff0c;导致数据出现问题。SAP对于表的锁定&#xff0c;有专门的锁对象。 1.1、创建锁 事务代码SE11&#xff0c;表的锁对象名称&#xff0c;需要以E…

YOLO-V2 (学习记录)

目录 一、记录YOLO-v2 的处理流程步骤 二、优势与不足 三、细节分析 1.候选框K-means计算细节 2.网络输出 3.损失函数&#xff08;Loss Function&#xff09; 学习之前&#xff0c;需要补充下论文中提到知识点。 1.什么是Batch Normalization 参考博文&#xff1a;Batc…

AI Coding 资讯 2025-06-03

Prompt工程 RAG-MCP&#xff1a;突破大模型工具调用瓶颈&#xff0c;告别Prompt膨胀 大语言模型(LLM)在工具调用时面临Prompt膨胀和决策过载两大核心挑战。RAG-MCP创新性地引入检索增强生成技术&#xff0c;通过外部工具向量索引和动态检索机制&#xff0c;仅将最相关的工具信…

CAMEL-AI开源自动化任务执行助手OWL一键整合包下载

OWL 是由 CAMEL-AI 团队开发的开源多智能体协作框架&#xff0c;旨在通过动态智能体交互实现复杂任务的自动化处理&#xff0c;在 GAIA 基准测试中以 69.09 分位列开源框架榜首&#xff0c;被誉为“Manus 的开源平替”。我基于当前最新版本制作了免安装一键启动整合包。 CAMEL-…

线程池RejectedExecutionException异常

文章目录 1、报错2、定位3、修复4、线程池使用的一点思考 1、报错 检索项目日志时&#xff0c;发现一个异常堆栈信息&#xff0c;核心报错&#xff1a; java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.CompletableFuture$AsyncSupply480a10c7…

视频监控管理平台EasyCVR安防小知识:监控摄像头异响问题排查与处理

在视频监控系统广泛应用于日常生活的当下&#xff0c;监控摄像头出现异响是常见且影响使用体验的问题。为快速定位和解决该问题&#xff0c;特制定本应用解决方案&#xff0c;依据异响来源分为硬盘录像机异响与监控摄像头异响两类进行处理。 一、硬盘录像机发出异响 硬盘录像机…

NX890NX894美光固态闪存NX906NX908

美光NX系列固态闪存深度解析 技术架构与性能突破 美光NX系列固态闪存&#xff08;如NX890、NX894、NX906、NX908&#xff09;的技术核心基于G9 NAND技术&#xff0c;通过优化晶体管结构与制程工艺&#xff0c;显著提升存储密度与读写速度。例如&#xff0c;NX895的MT29F8T08G…

RHEL7安装教程

RHEL7安装教程 下载RHEL7镜像 通过网盘分享的文件&#xff1a;RHEL 7.zip 链接: https://pan.baidu.com/s/1ExLhdJigj-tcrHJxIca5XA?pwdjrrj 提取码: jrrj --来自百度网盘超级会员v6的分享安装 1.打开VMware&#xff0c;新建虚拟机&#xff0c;选择自定义然后下一步 2.点击…

无人机智能识别交通目标,AI视觉赋能城市交通治理新高度

在城市化快速发展的当下&#xff0c;如何实现对道路交通的智能化管理、保障出行安全&#xff0c;成为城市治理的重要命题。传统的交通监控往往依赖地面摄像头&#xff0c;受限于固定视角与安装环境。而今&#xff0c;随着人工智能与无人机技术的深度融合&#xff0c;一种更高效…

使用 HTML + JavaScript 实现文章逐句高亮朗读功能

在这个信息爆炸的时代&#xff0c;我们每天都要面对大量的文字阅读。无论是学习、工作还是个人成长&#xff0c;阅读都扮演着至关重要的角色。然而&#xff0c;在快节奏的生活中&#xff0c;我们往往难以找到足够的安静时间专注于阅读。本文用 HTML JavaScript 实现了一个基于…

《TCP/IP 详解 卷1:协议》第5章:Internet协议

IPv4和IPv6头部 IP是TCP/IP协议族中的核心协议。所有TCP、UDP、ICMP和IGMP 数据都通过IP数据报传输。IP提供了一种尽力而为、无连接的数据报交付服务。 IP头部字段 IPv4 头部通常为 20 字节&#xff08;无选项时&#xff09;&#xff0c;而 IPv6 头部固定为 40 字节。IPv6 不…

WPS word 已有多级列表序号

wps的word中&#xff0c;原来已生成的文档里&#xff0c;已存在序号。比如&#xff0c;存在2、2.1、2.1.1、2.1.1.1、2.1.1.1.1 5层序号&#xff0c;而且已分为5级。但增加内容的时候&#xff0c;并不会自动增加序号&#xff0c;应该如何解决&#xff1f; 原来长这样&#xff…

5 个经典的大模型微调技术

传统微调方法&#xff08;如下图所示&#xff09;对于大语言模型而言并不可行&#xff0c;因为这些模型具有数百亿甚至千亿的参数量&#xff0c;而且显存需求高达数百GB&#xff0c;并非所有人都能获得如此规模的计算资源。 但如今&#xff0c;我们拥有多种优化大语言模型的微调…

爱耕云课时管理系统评测

1 核心功能模块与代码实现 1.1 智能排课引擎&#xff08;Python伪代码示例&#xff09; 爱耕云的排课系统采用约束满足算法&#xff08;Constraint Satisfaction Problem&#xff09;解决教培机构最头疼的资源冲突问题。该系统将教师、教室、课程和时间段抽象为多维资源&…

Go的隐式接口机制

正确使用Interface 不要照使用C/Java等OOP语言中接口的方式去使用interface。 Go的Interface的抽象不仅可以用于dynamic-dispatch 在工程上、它最大的作用是&#xff1a;隔离实现和抽象、实现完全的dependency inversion 以及interface segregation(SOLID principle中的I和D)。…

Linux总结

一、Linux linux系统的构成 1.linux系统内核&#xff1a;提供最核心的功能&#xff0c;如&#xff1a;调度CPU、调度内存、调度文件系统、调度网络通信、调度IO等。 2.系统级应用程序&#xff1a;出厂自带程序&#xff0c;可供用户快速上手操作系统。如&#xff1a;文件管理…

嵌入式复习小练

1.ARM处理器中用作程序计数器PC的通用寄存器是&#xff08;&#xff09; A.R12 B.R13 C.R14 D.R15 答案&#xff1a;D。在 ARM 处理器中&#xff0c;R15 用作程序计数器&#xff08;PC&#xff09; &#xff0c;用于存放下一条要执行指令的地址 2.以下关于ARM程序状态寄存器C…