更新(2026年7月6日): 我让多个大语言模型画了一个简单的ASCII方框,每一个都画得不错。所以基本的方框问题可能在前沿已经基本解决了。我现在猜测,问题出现在上下文变得复杂时——更长的对话、多部分布局,或者模型已经处理了其他许多约束时。简单的方框,没问题。但在复杂上下文中画复杂的ASCII艺术,问题可能仍然存在。
试着让任何大语言模型画一个简单的ASCII方框。比如这样:
+----------+
| |
| |
+----------+
看起来很简单,对吧?大多数模型都会画得一团糟。垂直线对不齐,角落的位置也不对。就像一个喝过两杯啤酒的人画的方框。
我对为什么会这样产生了好奇,于是用Gemini进行了深入研究。这是我的发现。
核心问题:大语言模型看不到字符
大语言模型不是逐字符读取或写入文本的。它们以称为“标记”的块为单位处理文本。六个空格可能是一个标记。模型不会看到 [ ][ ][ ][ ][ ][ ] — 它看到的是一个代表“一些空白”的抽象块。
当它试图确定两个管道字符之间应放置多少空格以匹配上方的行时,实际上是在猜测。而且它经常猜错,因为它在进行空间布局时没有实际的空间意识。
这就是分词盲点。模型试图进行精确的网格计算,却在处理块状、模糊的单位时遇到了困难。
问题更严重:等宽字体偏差
ASCII艺术只能在等宽字体中工作——每个字符占据相同的宽度。但大语言模型是在大量使用等宽字体的文本(如i比m窄得多)中进行训练的。模型对文本间距的整个统计理解都是基于等宽假设的。要求它在固定宽度的网格中思考,就像让只读草书的人写出完美的印刷体一样不现实。
也无法回去修正
大语言模型从左到右、从上到下生成文本。一次一个标记。没有画布。没有“撤销”。没有能力查看最终输出并说“第3行歪了,让我来修正一下”。
要画一个完美的方框,模型必须在生成第2行时预测第4行的空间布局,没有任何视觉反馈。如果它早期计算错误,错误会传递下去。
当你要求它修正自己画的歪框时会发生什么?
这就是有趣的部分。如果你指出它的对齐错误并要求它修正,你可能会得到以下两种结果之一:
- 它自信地道歉,输出的仍然是那个破框。
- 它过度纠正,使问题变得更糟。
为什么?根本问题没有改变。它仍然在处理相同的块状标记、相同的等宽字体偏差,以及相同的从左到右生成方式。而现在,破框版本已经出现在其上下文窗口中,拉扯着其注意力权重朝向破框的模式,而不是从头开始。
就像让某人在盯着破框的图片时重新画这张图片。参考会污染修正。
如何真正画对
一些有效的小技巧:
强制字符级逻辑。 要求模型编写一个Python脚本,使用精确的字符串长度打印方框。print("+" + "-" * 10 + "+")是数学上无懈可击的。模型不需要空间推理——它只需要计数。
给出精确的数字。 与其说“画一个方框”,不如说“上边一行有20个短划线,中间行的管道之间恰好有18个空格”。你将一个视觉布局问题转换成了基本的数学问题,大语言模型处理得很好。
使用可见字符而不是空格。 要求它使用点号来表示空格,然后你自己来替换。空格会被分词成奇怪的、模糊的块。点号不会。
为什么有些模型能画对而有些不能
在这一任务上,模型之间存在巨大的差距。那些画得好的模型通常具备以下一种或多种优势:
精细的分词器。 新型模型(尤其是像Qwen-Coder或最近的Claude/GPT迭代这样的代码导向模型)使用了更精细的分词。它们能“看到”16个空格是16个独立的单位,而不是一个模糊的块。
大量的代码预训练。 代码充满了结构化的ASCII——注释、Markdown表格、终端输出、架构图。大量训练代码的模型内部有一个“统计地图”,知道在结构化块中|后面会跟什么。它们对固定宽度文本的空间直觉更好。
推理能力。 具有链式思维(如o系列或DeepSeek-R1)的模型会将视觉问题转换为明确的数学问题,然后再生成。它们不是猜测管道的位置,而是积极地计算:“第1行是20个字符宽。我需要一个管道,18个空格,再一个管道。”
这对通用模型质量意味着什么?
总的来说是肯定的。如果一个模型能画出完美的ASCII方框,这表明它具有以下能力:
- 精确的标记处理(适用于代码、字符串操作、缩进)
- 空间推理(适用于解析表格、布局、线框图)
- 严格的指令遵循和约束跟踪
这就像运动员的敏捷性训练。它并不意味着它们在每项运动中都表现出色,但它证明了它们具备基础的身体素质——速度、平衡、空间意识——这些素质使它们在大多数事情上都能表现出色。
需要注意的是:一个模型可能在代码优化方面表现优异,能画出每一个ASCII方框,但在创意写作或细腻分析方面仍然表现平平。专业化很重要。
但如果一个模型连简单的方框都画不好,对齐的角落也不对,那也是一个真正的信号。这意味着分词器是块状的,空间推理能力较弱,或者指令遵循不够严谨。所有这些都会影响其他任务。
最后总结
ASCII方框问题是一个小巧玲珑的诊断工具。它揭示了大语言模型处理文本(标记块、从左到右、没有视觉反馈)与人类处理文本(逐字符、空间、迭代)之间的差距。能够弥合这一差距的模型是真正更好的——不是因为画方框重要,而是因为使它工作所需的底层能力对其他所有任务都重要。