SuperAPI AI 工具集

azure-diagrams

部署与运维

查看项目

更新于 10-14 20:49

技能介绍

用途

Azure Diagram Generator 用于为 Azure 基础设施生成架构图。当用户拥有 ARM(Azure Resource Manager)模板(JSON)、提供 Azure CLI 输出(例如 az vm list)、希望可视化 Azure 资源、提及 Azure 服务(虚拟机、存储账户、VNet 等),或要求“为我的 Azure 基础设施画图”时,可激活此技能。

主要能力

该技能通过解析 Azure 资源并直接调用 Eraser API 来生成 Azure 专用图表,流程如下:

  1. 解析 Azure 资源:从 ARM 模板、CLI 输出或描述中提取资源。
  2. 映射 Azure 关系:识别资源组、VNet、子网和服务连接。
  3. 生成 Eraser DSL:从 Azure 资源创建 Eraser DSL 代码。
  4. 调用 Eraser API:使用 /api/render/elements,diagramType 为 "cloud-architecture-diagram"。

可识别的 Azure 组件包括:

  • 网络:虚拟网络(VNet)、子网、网络安全组、负载均衡器
  • 计算:虚拟机、虚拟机规模集、应用服务、Functions
  • 存储:存储账户、Blob 存储、文件共享
  • 数据库:SQL 数据库、Cosmos DB、Redis 缓存
  • 安全:网络安全组、Azure AD、Key Vault
  • 负载均衡:Application Gateway、Load Balancer、Traffic Manager
  • 其他:Service Bus、Event Hubs、API Management

可映射的关系包括:VM 位于子网中、子网位于 VNet 中、VNet 位于资源组中、存储账户被 VM 访问、数据库被应用访问、网络安全组附加到子网。

使用方式

当用户提供 Azure 基础设施信息时:

  1. 解析来源:

    • ARM 模板:提取 resources 数组,识别类型(如 Microsoft.Compute/virtualMachines)。
    • CLI 输出:解析 az 命令的 JSON 输出。
    • 描述:识别 Azure 服务名称和关系。
  2. 识别 Azure 组件(见上文列表)。

  3. 映射关系(见上文列表)。

  4. 生成 Eraser DSL。标签格式规则:标签必须位于单行,绝不能在标签属性内使用换行;保持标签简单可读;DSL 格式需正确换行(每行一个节点/组,但标签保持单行);如需包含 CIDR 块或实例类型等元数据,放在同一个引号字符串中,例如 [label: "VNet 10.0.0.0/16"]。

示例:

myVNet [label: "VNet 10.0.0.0/16"] {
  subnet1 [label: "Subnet 1"] {
    myVM [icon: azure-vm, label: "Virtual Machine"]
    gateway [icon: azure-app-gateway]
  }
  subnet2 [label: "Subnet 2"] {
    database [icon: azure-sql]
  }
}
storage [icon: azure-storage]
myVNet -> myVM
myVM -> database
  1. 发起 HTTP 请求。生成 DSL 后必须执行以下 curl 命令,不能只生成 DSL 而不调用 API。在 X-Skill-Source 头中需替换为你的 AI 代理名称(Claude 用 claude,Cursor 用 cursor,ChatGPT 用 chatgpt,Gemini 用 gemini,否则使用小写的模型/代理名称):
curl -X POST https://app.eraser.io/api/render/elements \
  -H "Content-Type: application/json" \
  -H "X-Skill-Source: eraser-skill" \
  -H "Authorization: Bearer ${ERASER_API_KEY}" \
  -d '{
    "elements": [{
      "type": "diagram",
      "id": "diagram-1",
      "code": "<your generated DSL>",
      "diagramType": "cloud-architecture-diagram"
    }],
    "scale": 2,
    "theme": "${ERASER_THEME:-dark}",
    "background": true
  }'
  1. 分析期间跟踪来源:记录读取的每个文件路径及提取的信息(如 infra/main.bicep - VNet 和子网定义);记录查阅的外部文档、示例或 URL;为每个来源注明其对图表的贡献。

  2. 处理响应。响应必须始终包含以下元素并带有清晰标题:

  • 图表预览:
## Diagram
![{Title}]({imageUrl})

使用 API 响应中的实际 imageUrl。

  • 编辑器链接:
## Open in Eraser
[Edit this diagram in the Eraser editor]({createEraserFileUrl})

使用 API 响应中的实际 URL。

  • 来源部分(如适用):
## Sources
- `path/to/file` - What was extracted
  • 图表代码部分:使用 eraser 语言标签的代码块:
## Diagram Code
```eraser
{DSL code here}

- 了解更多链接:可在 https://docs.eraser.io/docs/using-ai-agent-integrations 了解 Eraser。

额外内容规则:如果用户只要求图表,除上述 5 个元素外不包含任何其他内容;如果用户明确要求更多(如“解释架构”“建议改进”),可包含该额外内容;绝不添加未请求的部分(如 Overview、Security Considerations、Testing 等)。默认输出应简短,图表图像本身已说明问题。

## 适用场景

- 用户拥有 ARM 模板(JSON)并希望可视化其中的 Azure 资源。
- 用户提供 Azure CLI 输出(如 az vm list --output json)并希望生成架构图。
- 用户用自然语言描述 Azure 基础设施并希望生成图表。
- 用户提及 Azure 服务(虚拟机、存储账户、VNet 等)或要求“为我的 Azure 基础设施画图”。

## Azure 专用提示

- 资源组:将资源组显示为逻辑容器。
- VNet 作为容器:始终显示 VNet 包含子网和资源。
- 网络安全组:包含 NSG 规则和附件。
- 订阅:如提供订阅上下文则注明。
- 数据流:显示流量流向(Internet → Application Gateway → VM → SQL Database)。
- 使用 Azure 图标:在描述中请求 Azure 专用样式。

## 限制

- 需要设置 ERASER_API_KEY 环境变量才能调用 Eraser API。
- 生成 DSL 后必须执行 curl 命令调用 API,不能仅生成 DSL。
- 标签必须位于单行,不能包含换行。
- 默认输出应简短,仅包含图表预览、编辑器链接、来源、图表代码和了解更多链接这 5 个元素(除非用户明确要求更多)。
- 关于收费、价格、平台支持范围等具体信息,资料中暂未提供。