芥末
发布于 2025-12-18 / 0 阅读
0
0

Next AI Draw.io:用大模型生成和编辑 Draw.io 流程图

画流程图、架构图、UML 图时,真正耗时间的往往不是理解业务,而是重复性的绘图动作:拖组件、摆位置、连线、调颜色、对齐、改文案。图越复杂,越容易在细节上消耗精力。

Next AI Draw.io 解决的正是这个问题。它是一个基于 Next.js 的开源应用,把大语言模型(LLM,Large Language Model)接到 Draw.io 上,让 AI 根据自然语言或截图生成 Draw.io 可识别的 XML 图表文件。生成后的图不是一张静态图片,而是可以继续拖拽、编辑、保存的矢量图。

项目地址:

https://github.com/DayuanJiang/next-ai-draw-io

它解决的核心问题

传统画图工具需要人手动完成所有布局和连线,AI 绘图工具又经常只生成一张不可编辑的图片。Next AI Draw.io 的关键点在于:它生成的是 Draw.io 图表结构,而不是普通位图。

这意味着一次生成之后,后续仍然可以像平时使用 Draw.io 一样继续编辑:

  • 调整节点位置;
  • 修改文字;
  • 改颜色和边框;
  • 重新连接线条;
  • 使用云厂商图标库;
  • 导出 Draw.io 支持的格式。

自然语言生成图表的效果可以直接落到 Draw.io 编辑区,图里的节点、连线和布局都能继续调整。

自然语言生成 Draw.io 图表示例

这类工具最适合“先把图画出来”的场景。AI 负责生成大体结构,人再处理精确布局和视觉细节,比从空白画布开始拖组件快得多。

核心工作方式:让大模型输出 Draw.io XML

Draw.io 的图表底层可以用 XML 表示。一个节点的位置、大小、样式,以及连线的起点和终点,都可以写在 XML 结构里。Next AI Draw.io 的思路就是让大模型把用户需求转换成 Draw.io 能识别的结构化内容。

整体流程可以理解成这样:

flowchart LR
    A[用户输入需求] --> B[Next.js 应用]
    B --> C[调用大语言模型]
    C --> D[生成或修改 Draw.io XML]
    D --> E[Draw.io 渲染图表]
    E --> F[用户继续编辑和导出]

如果用户输入的是一段文字,比如:

画一个电商下单流程图,包含用户、商品服务、订单服务、库存服务、支付服务和消息队列。

大模型需要完成几件事:

  1. 识别图里应该有哪些实体;
  2. 判断这些实体之间的调用关系;
  3. 生成节点、连线和文字;
  4. 给每个元素安排初始布局;
  5. 输出符合 Draw.io 格式要求的 XML。

这个过程的难点不只是“理解文字”,还包括“输出稳定的结构化文件”。如果 XML 标签不完整、节点 ID 引用错误、连线目标不存在,Draw.io 就可能无法正常打开或显示异常。因此模型的格式遵循能力会直接影响生成质量。

主要能力

1. Text-to-Diagram:用自然语言生成图表

Text-to-Diagram 是最核心的功能。用户描述想要的图,大模型把描述转换成 Draw.io 图表。

适合生成的内容包括:

图表类型示例需求
流程图登录流程、审批流程、订单状态流转
架构图微服务架构、云上部署架构、数据同步架构
UML 图类图、组件图、时序关系草图
技术说明图缓存读写流程、消息队列消费流程、权限校验链路

例如可以这样描述:

画一个用户登录认证流程:
1. 用户提交手机号和验证码;
2. 网关把请求转发给认证服务;
3. 认证服务校验验证码;
4. 校验通过后生成 JWT;
5. 客户端后续请求携带 JWT 访问业务服务。

生成出来的图通常可以作为初稿,再根据实际系统细节调整节点名称、布局和边界。

2. AI 辅助修改:像改需求一样改图

图表生成之后,并不需要重新开始。可以继续用自然语言要求 AI 修改现有图,例如:

把“订单服务”拆成“订单写服务”和“订单查询服务”,查询服务连接 Redis 缓存。

或者:

把支付服务的背景改成紫色,并把它放到订单服务右侧。

AI 辅助修改的价值在于减少重复操作。尤其是一个图已经有了十几个节点后,手动改结构往往会牵动很多线条;用自然语言描述修改目标,AI 可以基于当前图表上下文重新调整 XML。

下面的示例展示了基于已有图继续修改的过程,重点不是生成一张全新的图,而是在原有结构上做增删改。

AI 修改已有 Draw.io 图表示例

不过这类修改仍然依赖模型对上下文和布局的理解。简单的颜色、文字、节点增删通常比较稳定;复杂重排、跨区域分组、精确对齐仍然更适合人工最后处理。

3. Image-to-Diagram:把草图或截图变成可编辑图

除了文字输入,Next AI Draw.io 还支持根据图片复刻图表。典型场景有两类:

  • 白板上手画了一个草图,希望转换成正式架构图;
  • 文档里看到一张图,希望变成可编辑的 Draw.io 文件。

这个能力可以称为 Image-to-Diagram。它的大致流程是:上传截图后,AI 识别图片里的节点、文字和连线,再重新生成 Draw.io XML。

flowchart LR
    A[上传草图或截图] --> B[模型识别图中元素]
    B --> C[提取节点、文字、连线关系]
    C --> D[生成 Draw.io XML]
    D --> E[得到可编辑矢量图]

这比“照着图片重新画一遍”省事很多。尤其是团队讨论时先在白板上快速画结构,讨论结束后再转成正式图表,可以减少整理成本。

4. 继承 Draw.io 的图标库和编辑能力

Next AI Draw.io 的优势不只在 AI,还在于它基于 Draw.io。Draw.io 本身已经是成熟的图表工具,内置了大量图形库,包括 AWS、GCP、Azure 等云厂商图标。

画云架构图时,这一点很重要。专业架构图通常不希望所有组件都只是一个写着名字的矩形,而是要使用对应云服务图标,比如负载均衡、对象存储、数据库、消息队列等。

Draw.io 图标库和编辑界面示例

AI 负责生成结构,Draw.io 负责承载图表编辑能力,两者组合起来比单纯生成图片更适合工程文档场景。

适合和不适合的场景

Next AI Draw.io 不是“按一下就得到完美架构图”的工具。它更适合生成初稿,而不是替代人对系统结构的判断。

场景是否适合原因
从 0 到 1 生成流程图初稿适合能快速列出节点和连线,减少重复绘图
画中等复杂度的系统架构图适合可以先生成大体结构,再人工调整
把白板草图整理成正式图适合Image-to-Diagram 可以节省复刻时间
精确到像素级排版的图不太适合AI 对空间布局的控制不如人工稳定
特别复杂的大型架构总览不太适合一次生成节点太多时容易布局混乱,适合拆成多个子图
强规范的正式交付图适合作为初稿最终仍需要人工检查命名、连线和边界

比较务实的用法是让 AI 完成 70% 到 80% 的基础工作:组件放上去、主要关系连起来、初始布局给出来。剩下的部分由人来做,包括视觉对齐、细节命名、边界划分和最终检查。

Docker 部署

项目提供了 Docker 镜像,适合快速启动。准备好模型 API Key 后,可以直接运行:

docker run -d -p 3000:3000 \
  -e AI_PROVIDER=openai \
  -e AI_MODEL=gpt-4o \
  -e OPENAI_API_KEY=your_api_key \
  ghcr.io/dayuanjiang/next-ai-draw-io:latest

参数含义如下:

参数作用
-p 3000:3000把容器内的 3000 端口映射到本机 3000 端口
AI_PROVIDER指定使用的模型服务提供方
AI_MODEL指定调用的模型名称
OPENAI_API_KEY模型服务的 API Key
镜像地址使用 GitHub Container Registry 上的项目镜像

启动后访问:

http://localhost:3000

如果部署到服务器上,需要根据实际情况配置反向代理、HTTPS 和访问控制,避免 API Key 或内部图表被不相关的人访问。

本地开发运行

如果需要改代码或在本地调试,可以克隆仓库运行:

git clone https://github.com/DayuanJiang/next-ai-draw-io.git
cd next-ai-draw-io

npm install
npm run dev

本地运行时同样需要准备模型相关配置。Docker 命令里通过环境变量传入 provider、model 和 API key,本地开发也需要按项目要求配置对应环境变量。

模型选择会影响生成质量

图表生成对模型有两个要求:

  1. 能理解用户描述里的结构关系;
  2. 能稳定输出 Draw.io 需要的 XML。

第二点尤其关键。聊天类回答里偶尔少一个标点问题不大,但 XML 少一个闭合标签、节点 ID 引用错了,图表就可能损坏。

复杂图更适合使用格式遵循能力强的模型,例如 Claude Sonnet 4.5 这类在长上下文和结构化输出上表现更稳的模型。能力较弱的模型可能出现这些问题:

问题表现
XML 不完整Draw.io 无法打开或渲染失败
节点引用错误连线找不到目标节点
布局混乱节点重叠、线条交叉严重
图标选择不准确云架构图里使用了不合适的图形
修改上下文丢失要求改一个节点,结果重写了整张图

如果图比较复杂,可以把任务拆小。例如先让 AI 生成核心服务链路,再补充缓存、消息队列、监控、外部系统等外围部分。这样比一次性要求生成完整大图更稳定。

使用建议

更稳定的工作流可以按这个顺序来:

flowchart TD
    A[描述目标图表] --> B[AI 生成初稿]
    B --> C{结构是否基本正确}
    C -- 否 --> D[补充约束重新生成]
    D --> B
    C -- 是 --> E[用自然语言做局部修改]
    E --> F[人工调整布局和样式]
    F --> G[保存或导出 Draw.io 文件]

提示词里最好包含这些信息:

  • 图表类型:流程图、架构图、UML 图、时序图;
  • 参与组件:有哪些服务、系统、用户、数据库;
  • 关系方向:谁调用谁,数据怎么流动;
  • 分组边界:前端、后端、基础设施、第三方系统;
  • 样式偏好:颜色、图标、横向布局或纵向布局。

一个更完整的提示词可以这样写:

生成一个横向布局的微服务架构图。

包含这些模块:
- 用户端 Web App
- API Gateway
- Auth Service
- Order Service
- Payment Service
- Redis
- PostgreSQL
- Kafka
- 第三方支付平台

关系:
- Web App 调用 API Gateway
- API Gateway 调用 Auth Service 和 Order Service
- Order Service 读写 PostgreSQL,并使用 Redis 做缓存
- Order Service 发送订单事件到 Kafka
- Payment Service 消费 Kafka 消息,并调用第三方支付平台

样式:
- 前端使用蓝色
- 后端服务使用绿色
- 存储组件使用橙色
- 第三方系统使用灰色

需求描述越清楚,AI 越容易生成可用的结构。只写“画一个电商架构图”,模型需要自行猜测组件和关系,结果更容易偏离实际系统。

需要注意的坑

  1. 不要把生成结果当成最终设计

AI 可以画出“看起来合理”的结构,但它不知道真实系统的所有约束。服务边界、数据一致性、权限控制、容灾设计等内容仍然需要工程判断。

  1. 复杂图要拆分

节点很多的大图容易变乱。可以拆成业务流程图、部署架构图、数据流图、监控链路图,而不是把所有信息塞进一张图。

  1. 生成后必须检查连线语义

线条方向很容易影响理解。比如“订单服务调用支付服务”和“支付服务回调订单服务”不是一回事,生成后需要确认箭头方向和文字说明是否正确。

  1. API Key 要妥善管理

自部署时不要把 API Key 写进前端代码或公开仓库。Docker 环境变量适合快速启动,生产环境还需要结合密钥管理、访问控制和日志脱敏。

  1. 截图复刻要注意信息安全

Image-to-Diagram 会把上传的图片交给模型处理。如果截图里有内部系统名称、账号、网络地址或业务数据,需要先脱敏,再上传处理。

小结

Next AI Draw.io 的定位很清晰:用大模型降低画图的启动成本,再用 Draw.io 保留专业编辑能力。它不适合完全替代人工设计,但很适合快速生成流程图、架构图和草图复刻的初稿。

对于经常写技术方案、整理系统设计、补充项目文档的人来说,这类工具能把大量机械绘图动作交给 AI,精力更多放在结构是否正确、边界是否清晰、图表是否能解释问题上。


评论