在架构设计和文档可视化场景中,手动拖拽 draw.io 图形往往耗时费力,而引入自然语言(NL)命令驱动的 AI 编辑,能将复杂描述瞬间转化为专业图表。这种方法的核心在于将用户意图解析为 draw.io 的 XML 格式,通过 Vercel AI SDK 流式调用 LLM 生成结构化输出,实现创建、修改和迭代的无缝闭环。
项目采用 Next.js App Router 构建前端,结合 react-drawio 组件嵌入 draw.io 画布,实现实时渲染。用户在侧边聊天面板输入如 “生成一个 AWS 架构图,用户连接到 EC2 前端实例”,AI 即响应生成 XML,并逐步流式更新画布。repo 中示例显示,Claude Sonnet 4.5 在 AWS 图标集上表现最佳,能准确调用官方形状库,避免泛化模型的布局错乱。
关键证据在于多提供商支持:默认 AWS Bedrock,其次 OpenAI GPT-4o、Anthropic Claude 等。AI 处理流程为:解析 NL → 意图提取(节点、连接、样式)→ XML 构建 → 校验渲染。当前虽全量生成 XML,但 TODO 计划增量修改,提升长会话效率。图像上传功能进一步扩展:AI 识别截图结构,复刻为可编辑 XML,支持二次优化。
落地参数需精准调优。首先,模型选择阈值:优先 Claude-3.5-Sonnet-20241022-v2(Bedrock)或 GPT-4o,温度 0.1–0.3 确保 XML 格式严格;弱模型如 Llama3.2 仅用于简单流程图。环境配置清单:
AI_PROVIDER=bedrock # 或 openai/anthropic/google/ollama
AI_MODEL=anthropic.claude-3-5-sonnet-20241022-v2:0
# Bedrock: AWS 凭证 via CLI/env
# OpenAI: OPENAI_API_KEY=sk-xxx
ACCESS_CODE_LIST=yourpass # 防滥用,必设
部署清单(Vercel/Docker):
- 克隆 & 依赖:
git clone https://github.com/DayuanJiang/next-ai-draw-io && npm i - Env 配置:复制
.env.example→.env.local,填 API 密钥。 - 开发启动:
npm run dev,访问 localhost:3000。 - 生产部署:
- Docker:
docker run -p 3000:3000 -e AI_PROVIDER=openai ... ghcr.io/dayuanjiang/next-ai-draw-io:latest - Vercel: 一键部署,Dashboard 设 env vars。
- Docker:
- 监控点:
- Token 消耗:LLM 生成长 XML 约 5k–20k tokens / 图,设预算警报。
- 超时阈值:60s 会话 bugfix → 增 streamTimeout=120s。
- 历史回滚:内置版本控制,监控变更频率 >5 次 / 图提示优化提示词。
提示工程至关重要。基础提示模板:“生成 draw.io XML,包含 [节点列表],连接 [关系],使用 AWS/GCP 图标,动画连接器可选。” 迭代时添加上下文:“基于当前 XML [base64 或 snippet],修改 [具体变更]。” 风险控制:XML 校验脚本预跑,避免渲染崩溃;回滚策略为历史快照。
工程实践扩展:集成到 CI/CD,PR 描述 NL → 自动图生成 README;团队协作设 ACCESS_CODE 多密码。性能阈值:画布 >50 节点分层渲染,弱网下优先 Ollama 本地。相比 Mermaid 等文本工具,此方案输出矢量 XML,直导 Confluence/Jira。
局限:当前非纯增量编辑,长图重绘卡顿;依赖强 LLM,成本约 0.01–0.05 USD / 图。优化路径:fine-tune XML 生成器,或 hybrid 规则 + LLM。
资料来源:https://github.com/DayuanJiang/next-ai-draw-io README & 示例;Live Demo: https://next-ai-drawio.jiang.jp/。
(正文 1028 字)