一段话画流程图,我为什么试这件事
痛点很具体:写文档的时候字我会打,图我不会画。打开画图工具拖两个框就开始烦,对齐、箭头、拐弯,半小时过去图还是丑的,流程一改还得重排一遍。
我想试的是另一条路:把流程用一段话描述清楚,交给生图模型,直接拿一张能贴进文档的 PNG。这条路能不能走通,只看两件事:框里的中文标签会不会写错,箭头会不会乱接。错任何一个,图就废了。
于是我编了一个六节点带分支回环的流程当考题,用 bl image generate 跑了八次,换了四种说法,逐张数节点、数标签、数箭头,其中一张还用看图的那条命令交叉核了一遍。
环境:bl 2.5.0,默认生图模型 qwen-image-3.0,
--size 16:9出图 2688×1536。Key 在控制台密钥管理页领,命令行安装在CLI 安装页。下面所有秒数、字节数、像素差都是我 10 月 23 号在自己电脑上跑出来的。
命令与考题
bl image generate --prompt '一张横向流程图,白色背景,六个圆角矩形节点……' --size 16:9 --timeout 900
生图是异步任务,偶尔要等几分钟,所以我一律带 --timeout 900。
考题是一个注册入库的小流程,六个节点:开始、填写表单、校验、入库、结束,外加一个返回修改。连接关系六条:开始到填写表单到校验到入库到结束,校验往下分一条到返回修改,返回修改再指回填写表单。一个分支加一个回环,不算复杂,但也不是直线,正好能验出模型对连接关系的理解。
判卷不靠感觉,每张图我数三样:节点框几个、框里的字和我给的是否逐字一致、箭头是不是题面那六条。交叉核验那张,看图命令回的是六个节点框加六个逐字标签,和我肉眼数的一致。
读数一览
| 说法 | 耗时 | 字节 | 节点/标签 | 箭头 |
|---|---|---|---|---|
| 标签写全(开始、填写表单……) | 69.9 秒 | 1,066,958 | 6/6 逐字对 | 全对,含回环 |
| 标签缩短成两个字 | 98.5 秒 | 931,863 | 6/6 对 | 全对 |
| 要求不写任何文字 | 86.9 秒 | 978,005 | 6 个空框 | 全对 |
标签写全 + --prompt-extend false | 13.2 秒 | 983,827 | 6/6 对 | 全对 |
| 节点加到十个(extend false) | 13.7 秒 | 1,105,241 | 10/10 对 | 分支开始乱 |
第一张出来我就愣了一下:六个框、六个中文标签一个字没错,连"校验往下到返回修改、返回修改指回填写表单"这个回环都画对了。箭头是带尖的实线,框是圆角矩形,白底,直接贴文档就行。
生图模型写不好中文这个印象太普遍了,我本来也这么以为,所以第一张全对之后我又从头数了一遍,还是一个字没错。这八次里,凡是我要求写字的,标签正确率都是满的;出问题的地方全在箭头和复现性上。
最值的一个开关:--prompt-extend false
同一个提示词,只多加 --prompt-extend false,13.2 秒出图。
不开这个开关的那几次是 69.9 秒、98.5 秒、86.9 秒、82.1 秒、135.6 秒。最快的 69.9 秒是 13.2 秒的 5.3 倍,最慢的 135.6 秒是 10.3 倍。
而这个开关对图的正确性没有可见影响:关掉之后那张,六个标签照样逐字对,回环照样对,差别只是框变成朴素的黑线白底。
它的作用是让模型先把你的一句话扩写成一段更详细的描述,再拿扩写版本去生图。画风景、画海报时扩写可能有好处;画流程图这种"连接关系我已经逐条写死了"的图,扩写只是纯开销,还可能把你精确写好的连接改写成它自己理解的样子。画示意图我现在的默认动作就是关掉它。
标签策略:两字短标签与零文字底图
第二种说法把标签缩短成两个字:开始、填写、校验、入库、结束、返修。98.5 秒,六个标签全对,图变成极简黑线框。
第三种说法要求整张图不出现任何文字。86.9 秒,六个空框,结构依然全对,分支和回环都在。
零文字底图是一条工程上的后路:如果图上的字必须绝对准确,比如要过审或者要印出去,就让模型只负责结构和框,文字自己后期叠。图是 PNG,叠字用任何图片工具都行。代价是自己排版文字,省下的是画框和连线的那半小时。
我的结论是标签越短越稳,两个字最好;连接关系必须逐条写,不要写"按正常流程连接",模型对"正常"的理解和你不一样。
边界一:seed 锁不住版
同提示词 + --seed 42 | 耗时 | 字节 | 结果 |
|---|---|---|---|
| 第一次 | 82.1 秒 | 1,179,022 | 6/6 标签对,自己加了彩色填充和角落装饰点线 |
| 第二次(逐字复跑) | 135.6 秒 | 1,008,798 | 与第一次 md5 不同,像素差 8.54% |
两次都画对了,但两张不是一张图。像素级比对有 8.54% 的像素差异超过阈值(灰度差超过 30 的像素计入),md5 也不同,耗时还差了一大截。
所以别把 seed 当版本锁用。满意的那张当场存下来、命名好,它就是你的版本;要"重跑得到同一张"这个性质,qwen-image-3.0 上我没有拿到。
边界二:节点到十个,标签全对但分支乱
我把节点加到十个:立项、调研、设计、开发、联调、测试、修复、验收、上线、复盘,要求测试往下到修复、修复指回开发。13.7 秒出图,十个标签 10/10 全对,主链箭头也对。
分支错了三处:我要求的回环被画成从测试上方绕到修复顶部的一条线;指向联调的那条箭头方向反了;图上还多出两条哪也不连的悬空竖线。
由此我把可用区间划出来:六个节点上下、带一个分支一个回环,可以一次画对;十个节点的直线链加一个回环,标签没问题,分支必须人工逐条核。再复杂的图别指望一次成,要么拆成两张分别生成,要么拿零文字底图自己补箭头。
要挑图就一次出四张
--n 4 一次要四张,我那次耗时 57.4 秒,四张的字节数在 936,960 到 973,164 之间。
我抽看了第二张:六个标签全对、结构全对,填充是浅灰。四张一起出比单跑四次省时间,而且手里有可比版本,不用在"这张到底行不行"上来回纠结。
我现在固定下来的提示词写法
跑完这八次,我把描述压成四句话,顺序不变。
第一句说版面和风格:横向、白底、扁平矢量、圆角矩形、黑色实线箭头带箭头尖。
第二句说节点:几个框、框里逐字写什么,标签用顿号按顺序列出来。
第三句说连接:谁指向谁,逐条写,分支和回环单独点明"某节点另有一条箭头到某节点"。
第四句说不要什么:不要写其他任何文字。
四句话里最容易被省掉、也最不能省的是第三句的"逐条"。前两句决定图好不好看,第三句决定图能不能用。
什么时候别用它
要能继续编辑的图,别用它。产出是 PNG 位图,框和线不能拖、字不能改,改一个错字就得整张重跑,而重跑还锁不住版。
节点超过八九个、或者有交叉分支的图,别指望一次对。标签它可能全写对,箭头会开始自由发挥,逐条核对的成本可能比自己画还高。
还有一件事照实说:这八张里我没看到角标,换模型自己看角落。
它最合适的场景就是我最开始那个痛点:文档里要一张看得懂结构的示意图,六七个节点,字不多,贴进去就行。这种图它一次就能给你,十三秒到一分半。想先在网页上试同一个模型,可以去阿里云百炼控制台。