AI Flowchart Studio 使用 Gemini 先判断自然语言是否适合转换为流程图,再提取节点与边的结构化数据,随后由本地代码生成 Mermaid 语法并在浏览器中渲染。用户需要提供 Gemini API 密钥或使用部署方配置的服务端密钥,生成后可以手动增删节点、调整方向和主题,并导出 Mermaid、SVG 或 PNG。
项目采用 BYOK(Bring Your Own Key,自带密钥)方式。当前前端会把用户填写的密钥保存在浏览器 LocalStorage,并在生成请求中通过 X-Gemini-API-Key 请求头发送给后端;后端再用该密钥调用 Gemini。
“密钥保存在本地”不等于密钥只在本机使用。生成时密钥和提示词都会经过应用后端,并由后端访问 Gemini。敏感环境应先审查部署实例、传输加密和代码版本。
提示词至少应说明开始事件、处理步骤、判断条件、分支去向和结束状态:
Create a flowchart for a support ticket workflow.
Start when a customer submits a ticket.
Validate required fields, then classify severity.
Critical tickets page the on-call engineer.
Normal tickets enter the support queue.
After a fix, ask the customer to verify.
If verification fails, return to investigation.
If verification succeeds, close the ticket.
Label every decision branch.
项目当前生成的是流程图,不应把它当作任意 UML、BPMN 或数据可视化生成器。输入应能拆成节点与有向边。
Orchestrator 接收用户提示,判断内容是否适合转换为流程图。过于模糊或无关的输入会返回说明,而不是继续生成。
Logic Parser 调用 Gemini,把文本整理成结构化节点和边。节点包含 ID、标签和形状,边包含起点、终点和可选标签。
{
"nodes": [
{"id": "node_1", "label": "Receive ticket", "shape": "round"},
{"id": "node_2", "label": "Critical?", "shape": "diamond"}
],
"edges": [
{"source_id": "node_1", "target_id": "node_2", "label": null}
]
}
生成阶段并不再次调用模型,而是用 mermaid-py 把已验证的数据模型转换为 Mermaid 代码。矩形表示普通步骤,菱形表示判断,圆角形状表示开始或结束。
当前代码中的 Validator 只检查生成结果是否存在且长度不小于 10 个字符。它没有调用 Mermaid 解析器进行完整语法验证,因此不能保证所有输出都能正确渲染。
逻辑解析提示明确要求不要把 start、end、graph、flowchart 或 subgraph 用作节点 ID,因为它们可能与 Mermaid 关键字冲突。
稳定做法是使用带前缀的短 ID:
node_start
step_validate
decision_severity
action_page_oncall
node_closed
显示标签可以使用自然语言,ID 则应保持唯一、简短和稳定。
前端向 /api/generate 发送 POST 请求,JSON 中包含 prompt,用户密钥放在请求头。后端使用 Server-Sent Events(SSE)依次返回分析、结构提取、代码生成和检查状态。
POST /api/generate
Content-Type: application/json
X-Gemini-API-Key: your-key
{"prompt": "Create a ticket workflow..."}
不要在日志、截图或错误报告中保留真实密钥。示例中的值只表示请求结构。
后端优先使用浏览器请求头提供的密钥;如果没有,则读取服务器环境变量 GEMINI_API_KEY。部署方若要求严格 BYOK,不应配置服务端回退密钥。
共享服务端密钥会带来配额、滥用和成本控制问题,还需要身份认证、速率限制和审计。当前简单生成接口不应直接无保护地暴露到公网。
后端返回“完成”不替代浏览器渲染测试,更不替代业务走查。
项目提供手动构建能力,可以添加节点、建立连接和编辑形状。适合修正少量 AI 输出错误:
当前前端实现维护最多 50 个撤销状态,快照包括节点、连接、Mermaid 代码、方向和主题。它适合短期编辑回退,不等于长期版本历史。
清空整个流程时界面明确提示无法撤销。重要修改前应保存项目或复制 Mermaid 代码,不能只依赖撤销栈。
README 说明最多可在浏览器本地管理 5 个项目。节点、连接、项目和密钥都依赖 LocalStorage,因此:
Top-Down 适合决策树和分支较多的流程,Left-to-Right 适合线性工作流和幻灯片。切换方向后要重新检查连线交叉、长标签和画布边界。
方向变化只改变布局,不应改变节点和边。若切换后业务关系发生变化,应检查生成或手动状态转换逻辑。
主题应服务于交付环境:
颜色不应成为唯一语义。成功、失败和判断还应由标签和形状表达。
Mermaid 文本最适合后续编辑、版本控制和技术文档。导出后应在独立渲染器中打开,确认代码没有依赖当前页面状态。
graph TD
node_1([Receive ticket]) --> node_2{Critical?}
node_2 -- Yes --> node_3[Page on-call]
node_2 -- No --> node_4[Enter support queue]
SVG 适合无损缩放、网页和设计排版;PNG 适合聊天、工单和固定尺寸文档。项目会从当前 Mermaid SVG 生成导出结果,PNG 使用放大渲染提高质量。
下载后检查:
仓库说明应用服务器不持久化用户密钥、提示或生成结果,项目和设置保存在浏览器。但在生成期间,提示词和用户密钥仍会传给后端,后端再请求 Gemini。
是否真正不记录数据还取决于实际部署代码、代理、平台日志和 Gemini 服务政策。敏感流程不应仅根据 README 承诺直接上传,应完成独立审查。
当前仓库由静态前端和 FastAPI 后端组成。后端依赖 FastAPI、Uvicorn、Gunicorn、Google Gen AI SDK、Pydantic、python-dotenv 和 mermaid-py。
部署时至少要配置:
FRONTEND_URL,限制允许的 CORS 来源。GEMINI_API_KEY 服务端回退。代码默认允许来源为通配符,不适合直接作为带凭据的生产配置。应指定实际前端来源,并验证跨域凭据策略。
请求体没有 prompt 或内容为空。确认前端输入不是只有空格,并检查 JSON 字段名。
请求头未携带用户密钥,服务器也没有配置环境变量。重新检查设置、浏览器存储和部署环境。
检查 SSE 连接、后端冷启动、Gemini 配额、网络超时和浏览器控制台。阶段状态能帮助确定卡在请求判定还是逻辑解析。
当前 Validator 不执行完整 Mermaid 解析。查看返回代码和浏览器渲染错误,修复保留词、标签特殊字符、箭头或结构问题。
检查是否更换域名、浏览器或无痕会话,以及站点数据是否被清理。本地保存不等于云端备份。
AI Flowchart Studio 的实际链路是 Gemini 判断与解析自然语言、Pydantic 约束节点和边、mermaid-py 生成语法、浏览器完成渲染。生成结果可以继续手动编辑并导出多种格式,但当前后端只做基础非空检查,不能替代 Mermaid 解析和业务验证。使用 BYOK 时还要理解密钥会随生成请求经过后端,做好部署审查、配额限制、密钥轮换和源文件备份。
PaperPlot 如何用自然语言生成可编辑的 Mermaid 图表?
ubuntu无法正常关机卡住了怎么办? ubuntu16.04无法关机的解决办法
Ubuntu优麒麟20.10终极预告曝光 本周四发布正式版本
Mermaid Chart 的 VS Code 扩展如何通过 AI Chat Participant 生成图表?
ubuntu自动挂起是什么意思? ubuntu v20设置自动挂起系统的技巧
ProcessOn 如何通过图片生成 Mermaid 图形并进行图形化编辑?