1. 纯文本模型“画图”的原理核心:它其实是在写代码
可能很多人第一反应是:大模型凭什么能“画图”?我又没给它接视觉模块。这个疑问很自然,但搞明白之后你会发现,这个逻辑其实非常朴素——纯文本模型不是真的去“画”,它是通过生成一种能被别的工具解析和渲染的文本格式,来实现“出图”的效果。这跟人类工程师用SVG、用HTML、用绘图代码干活,本质上是同一回事。
1.1 文本就是符号的排列组合,图形只是符号的解释方式
我们平时觉得“看图”和“读文字”是两码事,但从计算机的角度看,SVG、Mermaid、ASCII字符画,本质上都是一串字符串。一枚圆形的图标,在SVG里就是circle cx="50" cy="50" r="20"这么一小段文本;一张流程图,在Mermaid里就是A --> B这种文本描述;甚至照片级图像,在计算机底层也不过是一堆像素坐标加颜色值。
纯文本模型在训练阶段读过海量包含代码、SVG、Markdown、结构化文档的文本数据,它内化的是这些符号系统的“语法规则”和“统计规律”。当它生成start后面跟着(100,100)再跟着circ r="30"的时候,它并不是真的“看到”了一个圆,而是根据训练数据里的概率分布,推测“在SVG语境下,这种字符串序列最可能构成一个有效形状”。这就像一个人背熟了围棋棋谱,虽然不会自己领悟围棋哲学,但照样能摆出标准的开局布局。
这也是为什么纯文本模型能“画图”这件事听起来玄乎,实现起来却很稳。它没有视觉能力,但它有极其强大的模式匹配和序列生成能力。SVG和Mermaid这类语言的结构是高度规范化的,模型只要学会了结构的规律,输出就是可用的图形代码。
1.2 SVG是真·纯文本模型最顺手的画布
模型可以画的图有很多种,但要说最核心、也最容易出效果的,我得首推SVG。原因很简单:SVG本身是纯XML文本,结构清晰,标签封闭,没有模糊的语义空间。模型生成它,比生成自然语言段落还“安心”,因为SVG的约束性很强,标签名、属性、取值都有明确规范。
再一个,SVG是矢量图,缩放不糊,体积小,一段代码往往也就几十到上百行,token消耗极低。这也就是说,你花几分钱就能让模型给你画一组精细的图标,而且在浏览器、设计软件里都直接能渲染,还能随便改颜色、改坐标。
注意:这里的“纯文本模型”不包括多模态模型。多模态模型可以直接输出图片,但纯文本模型只能输出代码。你要做的是把“图”的形态,转成“代码”的形态。这个思维转换是玩转一切的基础。
1.3 模型的“空间想象力”从哪来?坐标和元素之间的预测逻辑
说到“空间想象力”,很多人觉得不可思议。其实模型的所谓“想象”,体现在它生成坐标和数据时的自洽性上。当模型生成rect x="20" y="20" width="100" height="100"时,它并不需要理解“左上角20,20”是什么屏幕坐标,它只需要知道在这个上下文里,后面跟着的width和height应该保持正数、数值合理、并且跟周围的元素在分布上大致协调。
这个能力来自于训练语料中大量存在的真实SVG文件。模型见多了“画布尺寸是800x600、元素居中对齐”的代码,它就学会了在类似需求下,自动生成“viewBox=0 0 800 600”、“元素坐标居中”的结构。你给它一句“画一个居中显示的小房子”,它就能根据数据分布推理出,房子主体大概在三层楼高的位置,屋顶应该靠上,窗户应该在主体内部,于是自动生成一套相对合理的坐标和尺寸。
当然,这种“空间想象力”有上限。让它画一个复杂的带透视的人脸,它大概率会翻车,因为它没有视觉,只有文本概率。但如果你需要的图形是几何形状、图标、流程图、图表,那它的空间建模能力足够用了。我实测下来,画两三层嵌套的坐标结构,只要提示词里明确要求“元素不重叠”,它基本都能算对位置。
2. 四种主流画图姿势与选型:用在哪,就用哪种
了解了原理,我们来看实操。纯文本模型“画图”不是只有一种姿势,根据你想画的东西、用在什么环境,可以灵活选择不同的输出格式。我把常用的四种方式整理了一下,你直接按需取用。
2.1 SVG矢量图:图标、几何图形、数据可视化最佳选择
这是纯文本模型画图的核心技能。适合画:扁平化图标、公司logo的简化版、仪表盘、统计图表(柱状图、饼图)、简单的卡通造型、图画示意图等。
优点是精度高、可编辑、矢量无损。缺点是不适合画柔和复杂的写实图像,毕竟SVG本质上就是用几何形状拼东西,模型很难用纯SVG画出一片有光影层次的自然风景。
提示词模板示例:“用SVG画一个简约风格的文件夹图标,尺寸400x400,主体颜色用蓝色渐变,背景透明,简洁美观,只输出SVG代码。”
2.2 Mermaid图表:流程图、时序图、甘特图的超级神器
如果你要画的是流程图、时序图、思维导图、状态机,那么Mermaid是纯文本模型最舒服的领域。Mermaid的语法非常结构化,比如用graph TD表示从上到下的流程图,用A-->B表示连线,用A{判断}表示菱形节点。模型对这类语法几乎零失误,甚至比人写还稳定。
Mermaid的优势是:文本描述的就是图表逻辑本身,改动起来极其方便。我画一个带反馈回路的流程图,只需要改一行C-->A,图形就自己更新。这简直是为了技术人员和产品经理量身定做的。
提示:如果你的内容里嵌入了Mermaid代码,需要在支持的Markdown渲染器或在线编辑器中渲染,比如Typora、Obsidian、GitHub或者Mermaid Live Editor。纯文本模型生成的是代码,渲染是另一个环节。
2.3 ASCII字符画:复古风,适用于终端和纯文本环境
这一招相对冷门,但偶尔有奇效。ASCII字符画是用#、*、.、|这些字符拼出图案。纯文本模型很擅长这个,因为ASCII艺术本身就是一种“文本形态的图片”,模型只要掌握了字符排列的疏密关系,就能画出小动物、人脸轮廓、简单的图标。
适合的场景很有限:终端里的启动横幅、代码注释里的趣味插图、纯文本格式的邮件签名。它不适合精细的图形,也谈不上美感,但在那些不能贴图片、只能输入字符的地方,这一招就把“画图”这个需求救了回来。
提示词示例:“用ASCII字符画一只站立的小猫,宽度控制在60个字符以内,使用#号表示轮廓,空格表示留白。”
2.4 带绘图代码的图表:用Python或前端框架渲染高质感图
如果你要的是数据图表,比如销量趋势、用户增长曲线、多维柱状图,那纯文本模型可以让你写Python代码(用matplotlib、plotly),或者HTML+CSS+JavaScript代码。模型生成的是代码,你在本地或在线环境跑一下,就能得到一张非常专业、带交互的图表。
这比直接生成SVG的好处是:图表的样式库更丰富、存在坐标轴和网格、能自适应数据变化。比如让模型生成一份plotly代码,它甚至能输出一个能悬浮查看数值的交互式图表。
提示词示例:“用Python matplotlib画一张折线图,展示一周内每天的用户访问量,数据为[120, 180, 150, 200, 230, 210, 260],线条颜色为蓝色,加网格,加标题‘一周访问量趋势’,保存为png图片。”
2.5 四种方式怎么选?一张表帮你理清楚
| 画图方式 | 输出内容 | 适用场景 | 可编辑性 | 渲染要求 |
|---|---|---|---|---|
| SVG矢量图 | XML标签代码 | 图标、几何图形、简单插画、轻型图表 | 高(直接改坐标和颜色) | 浏览器或设计软件 |
| Mermaid图表 | 文本描述语法 | 流程图、时序图、思维导图、甘特图 | 很高(改一行文字,图就变了) | Markdown渲染器、在线编辑器 |
| ASCII字符画 | 纯字符图形 | 终端、纯文本环境、趣味注释 | 中(需要手工调整字符) | 任意文本环境 |
| 代码绘图 | Python/JS代码 | 数据图表、交互式可视化 | 高(改参数重跑即可) | Python环境、Web浏览器 |
我个人的习惯是:画流程图和状态机,必选Mermaid;画图标和示意图,选SVG;画数据分析图,直接用Python代码;偶尔想在代码注释里加个彩蛋,来一段ASCII小动物。这四种姿势覆盖了你日常工作中99%的“临时画图需求”。
3. 实操案例演示:一步一步让模型画出能直接用的图
光说原理和选型,你可能还体会不到它有多顺手。我准备了三个最常用场景的实操案例,从提示词到输出,完整演示一遍,你照着抄就行。
3.1 案例A:用SVG画一个扁平化的小房子图标
先来最简单的图标场景。我测试时的提示词是这样的:
请生成一个SVG代码,画一个扁平化风格的房子图标。 要求:画布尺寸400x300,背景透明。 房子主体使用圆角矩形,颜色为温暖的橙色(#FF9F43)。 屋顶使用三角形,颜色为棕色(#B33771)。 门使用半圆形,颜色为白色,位于房子底部中央。 窗户使用圆形,数量两个,颜色为浅蓝色(#54A0FF),对称分布在门的两侧。 所有元素要居中,互不重叠,视觉舒适。 只输出SVG代码,不要解释。模型很快给出了一段类似这样的SVG代码(我整理后更标准一些):
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 300" width="400" height="300"> <rect x="60" y="120" width="280" height="150" rx="10" fill="#FF9F43"/> <polygon points="40,120 200,40 360,120" fill="#B33771"/> <circle cx="125" cy="185" r="25" fill="#54A0FF"/> <circle cx="275" cy="185" r="25" fill="#54A0FF"/> <path d="M 170 270 Q 200 210 230 270 Z" fill="#FFFFFF"/> </svg>这个过程里值得注意的细节是:模型会把rect的x和y跟viewBox的尺寸自动对齐,居中逻辑也是正确的。这段代码直接复制到浏览器新建一个.html文件里用<img src="house.svg">引用,或者粘贴到在线SVG编辑器里,渲染出来的就是一个标准的扁平化小房子,比例协调,颜色统一。
3.2 案例B:用Mermaid画一个“用户登录流程图”
流程图是文本模型画图最有价值的场景。我给出的提示词是:
请用Mermaid语法画一个用户登录的流程图。 要求:从开始节点进入,然后输入账号密码,然后进行验证,验证通过则进入首页,验证失败则重新输入。 图形方向从上到下,用decision节点表示验证逻辑。 只输出Mermaid代码,不要解释。模型输出如下:
graph TD A([开始]) --> B[输入账号密码] B --> C{验证是否通过} C -- 通过 --> D[进入首页] C -- 不通过 --> E[提示错误] E --> B这段代码放到任意支持Mermaid渲染的编辑器中,就会生成一张带菱形判断节点、有失败的反馈回路的流程图。你注意看最后一行E --> B,这是模型自己补上的“失败回到输入”逻辑,它理解了“重新输入”这个需求。这个能力对于画业务流程图尤其有用,模型不只是画图形,它真的会思考流程的完整闭环。
3.3 案例C:用Python生成一张带趋势线的销售折线图
最后是数据分析最常见的场景。提示词如下:
请用Python matplotlib生成一张折线图。 数据:某产品6月份每天销量(单位:件),列表为[55, 67, 49, 72, 88, 95, 102, 76, 68, 81, 90, 96, 110, 87, 63, 58, 99, 105, 112, 80, 74, 91, 86, 72, 65, 78, 84, 97, 103, 118]。 要求:X轴显示“日期(6月)”,Y轴显示“销量(件)”,线条颜色为绿色,线宽2,添加圆点标记,添加网格,标题为“6月份每日销量趋势”,保存为sales_trend.png。 只输出Python代码,不要解释。模型输出类似这样:
import matplotlib.pyplot as plt data = [55, 67, 49, 72, 88, 95, 102, 76, 68, 81, 90, 96, 110, 87, 63, 58, 99, 105, 112, 80, 74, 91, 86, 72, 65, 78, 84, 97, 103, 118] days = range(1, 31) plt.plot(days, data, color='green', linewidth=2, marker='o', markersize=4) plt.xlabel('日期(6月)') plt.ylabel('销量(件)') plt.title('6月份每日销量趋势') plt.grid(True, linestyle='--', alpha=0.6) plt.tight_layout() plt.savefig('sales_trend.png', dpi=150)你只需要在本地装好matplotlib库,跑一下python sales_chart.py,一张带网格、带圆点标记、布局整洁的折线图就生成了。这个场景我觉得价值极大,因为它把“数据分析”和“汇报图表”从“用Excel慢慢调”变成了“一段代码搞定”,而且模型会自动处理标签、标题、网格这些常规操作。
3.4 提示词技巧:怎么让模型画得更准
实际测试下来,我发现提示词的质量直接决定画图质量,有四个关键技巧:
第一,明确输出格式。一定要加一句“只输出SVG代码”或“只输出Python代码”或“用Mermaid语法”,明确限定输出格式,模型就不会啰嗦地解释思路,直接给你干代码。
第二,明确尺寸和颜色。给出具体的画布尺寸(400x300)和颜色的色号(#FF9F43),模型在计算坐标和配色时就有据可依,不容易超出画布范围或者配出辣眼睛的颜色。
第三,明确空间关系。提醒“元素居中、互不重叠、视觉舒适”,这能有效防止模型生成一堆重叠的图形。虽然模型有空间推理能力,但你不提醒,它有时候会把窗户画在门上。
第四,迭代修改。这招太常用了。比如第一次生成的SVG房子,你觉得窗户太小,你可以直接说“把两个窗户的半径从25改成35”,模型会在原代码基础上做局部修改,而不是重新生成整张图。这个“上下文连续修改”的能力,是纯文本模型画图最大的杀器。
4. 对比真正的“画图”模型:说是画图,不如说是“画代码”
很多人会拿纯文本模型画图去跟Stable Diffusion、Midjourney这类专业图像生成模型比。比完之后可能觉得纯文本模型画得太“丑”了,根本拿不出手。但我的看法是完全反过来的,这两者根本不是同一维度的东西,纯文本模型画图有它无法被替代的独特优势,也有它明摆着的短板。
4.1 纯文本画图的四个独特优势
第一个优势是可编辑性。扩散模型生成一张图,你要改一个细节,基本只能重新生图,或者用inpainting工具擦掉重画。而纯文本模型生成的是SVG或Python代码,你想改颜色,直接改fill="#FF9F43"里的色号;你想移动位置,直接改x和y的坐标。对于工程师和产品经理来说,这种“改代码就能改图”的体验,比在PS里拖拽图层还要精确。
第二个优势是成本极低。生成一段SVG代码通常只需要几百个token,折合几分钱。而用扩散模型生成一张高质量图片,需要消耗大量的计算资源。尤其是在你只需要一个简单的示意图、一个内部用的小图标时,用纯文本模型画图,基本等于免费。
第三个优势是风格可控性。Diffusion模型生成的结果经常“过度设计”,你让它画一个蓝色圆角矩形,它可能给你加一堆华丽的光影效果。而纯文本模型生成的SVG是严格遵循参数的,你说蓝色就是标准蓝,说圆角矩形就是纯粹的圆角矩形,完全没有发挥空间,这反而保证了出图的一致性。对于需要嵌入到系统里的图标、需要保持视觉统一的设计资产,这种“指哪打哪”的能力非常珍贵。
第四个优势是能融入到自动化流程里。因为输出的是文本,你可以把模型生成的Mermaid代码直接塞进项目的Markdown文档,把生成的Python代码接进定时数据报表任务。这种“文本生成→渲染→集成”的链路,是扩散模型很难做到的。
4.2 纯文本画图的四个明显短板
短板也摆在这里,不避讳:
一是无法生成写实的照片级图像。你要它画一个“黄昏时分的森林”,纯文本模型只能给你一堆几何形状拼出来的树和云,效果大概率像幼儿园简笔画。
二是审美上限有限。纯文本模型画出来的东西有种“理工男审美”,规规矩矩,但缺乏艺术性和冲击力。如果你要的是营销海报级别的视觉,还是老老实实用专业图像模型。
三是对模糊描述理解困难。你如果说“画一个好看的花”,它不知道“好看”具体是什么构成,只能平均地生成一个大众审美里更偏向“安全”的形状。它对形容词的理解远不如对数值的理解。
四是偶发的坐标错乱。虽然概率不高,但模型在画复杂图形时,偶尔会把某个元素的坐标算错,导致图形超出画布或者相互遮挡。这时候需要你人工介入,或者靠提示词里的“互不重叠”来约束。
4.3 我给出的应用场景建议
我这里整理了一张实际使用选择表,你根据自己的场景选就行:
| 使用场景 | 推荐方案 |
|---|---|
| 技术文档配图、流程图、架构图 | 纯文本模型 + Mermaid |
| 数据图表、分析汇报 | 纯文本模型 + Python代码 |
| 产品原型、UI图标、简单插画 | 纯文本模型 + SVG |
| 艺术创作、复杂商业设计、真实照片风 | 专业扩散模型 |
| PPT中需要快速示意图、带文字的结构图 | 纯文本模型 + Mermaid |
我的真实感受是,这两种工具更像是互补关系。扩散模型解决“天马行空的创作”,纯文本模型解决“严谨克制的制图”。大部分工作场景里,我们需要的其实是后者,这也是为什么我觉得纯文本模型画图“很好用”的原因。
5. 常见问题与避坑实录:这些坑我都替你踩过了
这节内容是我最想分享的实操部分。纯文本模型画图确实好用,但肯定不是零门槛,我在实际使用中踩了些坑,也总结出不少排查技巧。整理成一份清单,你遇到问题可以直接对照。
5.1 SVG渲染出来一片空白怎么办
这是新手最容易碰上的问题。原因大概率是viewBox和宽高比例不匹配。比如模型生成的SVG里viewBox="0 0 100 100",但元素坐标却写到了x="300",那就直接画在外面了。
排查思路是:打开SVG文件,先看viewBox的值,再看里面元素的坐标是否在这个范围内。我一般会让模型在提示词里明确“所有元素坐标保持在画布范围内”,或者把画布尺寸设置得大一些,比如viewBox="0 0 400 300",同时要求元素坐标使用50到350之间的值,这样匹配成功率会高很多。
5.2 图形重叠或者位置错乱
即便有空间推理能力,模型偶尔也会把两个圆叠一起。我的解法是:在提示词里加入“计算所有元素的坐标,确保任意两个元素之间至少有10像素的安全距离”。这等于给模型提出了一个显式的约束条件,它会根据数据分布去推测合理的间距。
如果已经生成错了,不用重新生成,直接跟模型说:“第二个圆和矩形重叠了,请把圆的圆心坐标调整到(100, 80)。”
5.3 生成的代码太长被截断
大模型的输出有token上限,当你让它画一个包含几十个元素的复杂SVG时,它可能写到一半就断掉。应对办法有两个:一是改用循环生成,比如“用Python代码生成包含50个圆点均匀分布的图案”,让代码紧凑地完成重复工作;二是把复杂需求拆步骤,先让它生成基础框架,再让它“往框架里补充细节”。
5.4 Mermaid语法有时渲染报错
Mermaid有一个比较头疼的点是对缩进和标点敏感。模型生成英文标点还好,一旦生成中文字符偶尔会出现全角符号,直接导致渲染失败。
我实测的解决办法是:让模型用英文节点标签,或者明确要求“所有节点标签使用中文,但语法符号使用英文半角”。同时,在使用graph TD这类关键字时,确保大小写正确,graph TD是全小写加空格。渲染失败的另一个原因是内存溢出,如果你画的图太大,拆成两个图会更好。
5.5 生成的Python代码运行报错
这主要是环境问题,不是模型问题。检查三件事:第一,是否安装了所需的库(pip install matplotlib/plotly);第二,Python版本是否匹配(通常3.8以上没问题);第三,是否有中文字体缺失。如果图里出现了方框乱码,那是因为系统没有中文字体,在代码里加一行plt.rcParams['font.sans-serif'] = ['SimHei'](Windows)或者['WenQuanYi Zen Hei'](Linux)就能解决。
5.6 防止“AI审美丑”的几个提示词滤镜
最后分享几个我一直在用的风格词,能明显改善输出图的观感:
- “使用扁平化设计风格,去掉阴影和渐变”
- “配色使用低饱和度的马卡龙色系”
- “图标线条统一为2px粗细”
- “保持画面留白,不填充过多装饰元素”
这些词能有效把模型生成图往“现代简洁”的方向拉一把,避开它默认那种花哨但俗气的美术风格。实测下来,这套组合拳的效果非常明显。
6. 我的实战心得与最后的建议
我用了小半年之后,最大的体会是:纯文本模型画图,核心价值不是“替代专业绘图软件”,而是“让画图这个动作变得无比轻量”。过去我想画一张流程图,得打开Visio或者Draw.io,拖控件、调样式,五到十分钟过去了;现在我把想法写成一段Mermaid描述,贴到编辑器里,几秒钟就有了一张结构精准、逻辑清晰的图。这个效率提升,对高频做文档、做汇报的人来说,是现象级的。
我现在的固定工作流是:文档里所有结构图(架构、流程、状态机)全部用Mermaid;需要展示数据趋势,用模型生成的Python代码跑一张图;产品里的基础图标,用SVG代码直接嵌入前端组件。这一整套流程下来,我几乎不需要打开任何图形界面软件。
最后再分享一个小技巧:当你需要复杂且高质量的可视化时,别局限于SVG或matplotlib,可以试试让模型生成Plotly的代码。它出来的图表是交互式的,鼠标悬停能显示具体数值,还能在网页里嵌入,客户和领导看了都会觉得专业。纯文本模型的画图上限,其实取决于你提需求的翻译能力——你越能把它翻译成精确的坐标、逻辑、参数,它就越能给你画出接近专业的成果。
说到底,它不是一个“画家”,而是一个“会写代码的美术工程师”。把我的经验和这一路踩过的坑整理下来,希望能帮你少走些弯路,早点把这个省钱又高效的技能用起来。