架构师必备:用 AI 快速生成架构图

274 阅读7分钟

沉默是金,总会发光

大家好,我是沉默

在一次部门例会上,我被项目经理点名:“为什么每个模块的对接都这么慢?研发看不懂接口,测试找不到数据源……” 项目协作一团乱,原因却很简单——没有一张清晰的架构图。

起初我也觉得,写代码、搭框架才是“正事”,架构图不过是汇报材料上的“装饰”。但频繁的沟通失误和落不了地的需求让我明白,一张好的架构图,不是“外包装”,而是团队理解和协作的基础。

可问题是——
写代码的你,常常被“画图”卡住了。

各种软件太重、操作太繁,一不小心画了一张只有自己看得懂的图。

后来我换了思路:用更标准化、自动化的方式来画图。比如用 SVG + HTML、Markdown + Mermaid,通过 AI 自动生成图表。图更规范了,效率也提升了,协作也顺畅多了。

这篇文章就来聊聊:

  • 常见架构图有哪些

  • 画图语法与工具推荐

  • AI 快速绘图实战

  • 架构图的真正价值

让你从“画图焦虑”中解脱出来。

**-**01-

**常见架构图有哪些
**

先上效果图,生成的架构图长这样:

1. 系统上下文图(系统与外部依赖的边界)

image.png

2. 组件架构图(系统内部模块与交互关系)

image.png

3. 部署架构图(物理/云环境资源分配)

image.png

4. 数据流图(追踪数据处理路径与转换逻辑)

image.png

5. 微服务架构图(服务拆分与治理策略)

image.png

6. 安全架构图(系统安全防护层级)

image.png

你没看错,这些图不是我拖着鼠标点半小时画出来的,而是用一句自然语言,交给 AI 自动生成的。

**-**02-

画图语法与工具推荐

1. 使用 SVG+ 生成 html 文件

SVG 是一种基于 XML 的矢量图形标准,可以直接嵌入 html 页面中。优点是可控性强、样式灵活,但学习成本略高,适合需要高度自定义的场景。

示例提示词:

作为[专业]专家,请生成一个[技术主题]的 SVG 代码,要求:
元素:[列出所有需要包含的图形/节点/连线]
布局:[方向/排列方式/层级关系]
样式:[配色方案/形状/尺寸要求]
交互:[悬停效果/点击事件/动画等,如需要]
文字:[需要显示的标签/标题/注释]
输出:[完整可运行的 HTML 代码]

2. 使用 Markdown + Mermaid 绘制图表

Mermaid 是一种轻量级的图表 DSL(领域特定语言),支持用 Markdown 风格写图,这是目前程序员和写作者中非常流行的方式。只需要用几行文本语法,就能快速生成流程图、时序图、架构图等。适合项目文档、流程说明等场景。

示例提示词:

作为[专业]专家,请用 Mermaid 生成[场景][图表类型]:  
图表类型:[flowchart/sequenceDiagram/gantt等]  
元素:[节点/参与者/任务名称]  
关系:[连接线/消息流/依赖关系]    
样式:[主题配色/形状/线型]    
扩展:[注释/超链接/子图]  
输出:[完整 Markdown 代码块]  

3. SVG、Mermaid 功能对比

根据具体需求选择方案:

  • 需要高度定制化 → SVG

  • 快速文档演示 → Mermaid

  • 需要交互功能 → SVG + JavaScript

  • 团队协作文档 → Mermaid + Markdown

  1. 推荐工具:
  • ChatGPT / DeepSeek

  • Cursor / Trae(AI 编程编辑器)

  • GitHub Copilot Chat / Codeium Chat(嵌入 VSCode)

**-**03-

AI 快速绘图实战

1. SVG+html 案例:微服务架构图

Prompt:

作为系统架构专家,请生成一个微服务架构的 SVG 代码,要求:
元素:用户、Web前端、移动端、桌面客户端、第三方应用、API网关、
用户服务、认证服务、订单服务、商品服务、支付服务、通知服务、
搜索服务、多个数据库、缓存、搜索引擎、服务注册与发现、配置中心、
消息队列、日志系统、监控告警、链路追踪

布局:由上至下分五层,分别是客户端层、API网关层、微服务层、
数据层、基础设施层;每层使用包裹矩形分区,内部模块横向排列,
层与层之间留有间距,模块之间也留有边距

样式:每层使用不同背景色表示层级,节点为圆角矩形,等宽等高;
模块文字与框体配色协调,整体使用简洁蓝绿灰色调;
图标题位于顶部居中,字体加粗

交互:每个节点悬停显示该服务的简要说明(使用 title 提示),
可扩展为点击弹窗展示详情(可用 JavaScript 模拟 alert)

文字:每个节点需要显示服务名称;每层左上角标注层级名称,
标题为“微服务架构图”

输出:完整可运行的 HTML + SVG 代码,适合嵌入网页展示

生成代码:

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>微服务架构图</title>
  <style>
    body {
      font-family'Arial', sans-serif;
    }
    .label {
      font-size14px;
      fill: #111827;
      text-anchor: middle;
      dominant-baseline: middle;
    }
    .box {
      rx: 10;
      ry: 10;
      stroke: #ccc;
      stroke-width1;
    }
    .layer-title {
      font-weight: bold;
      font-size16px;
      dominant-baseline: middle;
    }
  </style>
</head>
<body>
<svg width="1280" height="960">
  <!-- 图标题 -->
  <text x="640" y="40" text-anchor="middle" font-size="28" font-weight="bold">微服务架构图</text>
  <!-- 客户端层 -->
  <rect x="60" y="60" width="1160" height="100" fill="#DBEAFE" rx="12"/>
  <text class="layer-title" x="80" y="85" fill="#3B82F6">客户端层</text>
  <g fill="#3B82F6">
    <rect class="box" x="180" y="110" width="140" height="40"/>
    <text class="label" x="250" y="130">Web前端</text>
    <rect class="box" x="360" y="110" width="140" height="40"/>
    <text class="label" x="430" y="130">移动端</text>
    <rect class="box" x="540" y="110" width="140" height="40"/>
    <text class="label" x="610" y="130">桌面客户端</text>
    <rect class="box" x="720" y="110" width="140" height="40"/>
    <text class="label" x="790" y="130">第三方应用</text>
  </g>
  <!-- API网关层 -->
  <rect x="60" y="180" width="1160" height="80" fill="#D1FAE5" rx="12"/>
  <text class="layer-title" x="80" y="205" fill="#10B981">API网关层</text>
  <g fill="#10B981">
    <rect class="box" x="480" y="210" width="320" height="40"/>
    <text class="label" x="640" y="230">API 网关 / 负载均衡</text>
  </g>
  <!-- 微服务层 -->
  <rect x="60" y="270" width="1160" height="110" fill="#FEF3C7" rx="12"/>
  <text class="layer-title" x="80" y="295" fill="#F59E0B">微服务层</text>
  <g fill="#F59E0B">
    <rect class="box" x="120" y="320" width="120" height="40"/>
    <text class="label" x="180" y="340">用户服务</text>
    <rect class="box" x="260" y="320" width="120" height="40"/>
    <text class="label" x="320" y="340">认证服务</text>
    <rect class="box" x="400" y="320" width="120" height="40"/>
    <text class="label" x="460" y="340">订单服务</text>
    <rect class="box" x="540" y="320" width="120" height="40"/>
    <text class="label" x="600" y="340">商品服务</text>
    <rect class="box" x="680" y="320" width="120" height="40"/>
    <text class="label" x="740" y="340">支付服务</text>
    <rect class="box" x="820" y="320" width="120" height="40"/>
    <text class="label" x="880" y="340">通知服务</text>
    <rect class="box" x="960" y="320" width="120" height="40"/>
    <text class="label" x="1020" y="340">搜索服务</text>
  </g>
  <!-- 数据层 -->
  <rect x="60" y="390" width="1160" height="110" fill="#EDE9FE" rx="12"/>
  <text class="layer-title" x="80" y="415" fill="#8B5CF6">数据库层</text>
  <g fill="#8B5CF6">
    <rect class="box" x="120" y="440" width="100" height="40"/>
    <text class="label" x="170" y="460">用户DB</text>
    <rect class="box" x="230" y="440" width="100" height="40"/>
    <text class="label" x="280" y="460">认证DB</text>
    <rect class="box" x="340" y="440" width="100" height="40"/>
    <text class="label" x="390" y="460">订单DB</text>
    <rect class="box" x="450" y="440" width="100" height="40"/>
    <text class="label" x="500" y="460">商品DB</text>
    <rect class="box" x="560" y="440" width="100" height="40"/>
    <text class="label" x="610" y="460">支付DB</text>
  </g>
  <g fill="#06B6D4">
    <rect class="box" x="680" y="440" width="100" height="40"/>
    <text class="label" x="730" y="460">缓存</text>
    <rect class="box" x="790" y="440" width="100" height="40"/>
    <text class="label" x="840" y="460">搜索引擎</text>
  </g>
  <!-- 基础设施层 -->
  <rect x="60" y="510" width="1160" height="130" fill="#CCFBF1" rx="12"/>
  <text class="layer-title" x="80" y="535" fill="#22D3EE">基础设施层</text>
  <g fill="#22D3EE">
    <rect class="box" x="120" y="570" width="120" height="40"/>
    <text class="label" x="180" y="590">服务注册</text>
    <rect class="box" x="260" y="570" width="120" height="40"/>
    <text class="label" x="320" y="590">配置中心</text>
    <rect class="box" x="400" y="570" width="120" height="40"/>
    <text class="label" x="460" y="590">消息队列</text>
    <rect class="box" x="540" y="570" width="120" height="40"/>
    <text class="label" x="600" y="590">日志系统</text>
    <rect class="box" x="680" y="570" width="120" height="40"/>
    <text class="label" x="740" y="590">监控告警</text>
    <rect class="box" x="820" y="570" width="120" height="40"/>
    <text class="label" x="880" y="590">链路追踪</text>
  </g>
</svg>
</body>
</html>

展示:

image.png

  1. Mermaid 案例:购物流程的时序图

Prompt:

作为电商系统专家,请用 Mermaid 生成用户购物流程的时序图:
图表类型:sequenceDiagram

元素:用户、购物车、商品服务、支付服务、订单服务

关系:消息流:用户添加商品到购物车 -> 
购物车请求商品信息 -> 
商品服务返回商品信息 -> 
用户提交订单 -> 
支付服务进行支付 -> 
订单服务创建订单

样式:线型:实线,颜色:绿色,箭头方向:单向

扩展:注释:每个步骤的处理时间

输出:[完整 Markdown 代码块]  

生成代码:

sequenceDiagram
    participant User as 用户
    participant Cart as 购物车
    participant ProductService as 商品服务
    participant PaymentService as 支付服务
    participant OrderService as 订单服务
    User->>Cart: 添加商品到购物车
    Cart->>ProductService: 请求商品信息
    ProductService->>Cart: 返回商品信息
    User->>OrderService: 提交订单
    OrderService->>PaymentService: 请求支付
    PaymentService->>OrderService: 支付成功
    OrderService->>User: 创建订单并通知用户
    Note over User, Cart: 每个步骤的处理时间

展示:

image.png

  1. 自然语言生成图表(DeepSeek)

Prompt:

生成金融系统监控架构的 Mermaid 流程图,
包含端到端追踪、指标采集、告警模块

生成代码:

flowchart LR
  A[移动端] --> B{Nginx 网关}
  B --> C[交易服务]
  C --> D[(MySQL)]
  subgraph 监控体系
    E[Prometheus] --> F[Grafana]
    C -. 指标 .-> E
    D -. 慢查询日志 .-> G[ELK]
    G --> F
  end
  F --> H[企业微信告警]

展示:

image.png

**-**04-

架构图的真正价值

我以前也觉得画架构图是“汇报时候走个形式”,直到系统越来越复杂、接口越来越多,才发现:

  • 架构图是开发的导航图
    能快速定位模块边界,理清依赖关系

  • 架构图是沟通的翻译器
    一张图,产品、研发、测试、运维都能理解

  • 架构图是版本的历史记录
    对比新旧架构,一眼看出哪些是变动点

从不会画图,到“用一句话画图”,我只做了一件事:把工具从“拖拽软件”换成了“AI 助手”。

所以这篇文章,送给每个和我一样:写得出代码,却画不出图的架构师。

今天开始,告别画图焦虑。

**-**05-

粉丝福利

关注:,送你 DeepSeek 全部资料,如果你正在室使用 DeepSeek,又或者刚准备学习 AI 大模型。可以仔细阅读一下,或许对你有所帮助!

image.png