速成课 · No. 34
多年来,模型只会处理文本。如今它们能接收图像、音频,甚至视频——一个 multimodal 模型可以描述一张照片、读懂一张图表、把一场会议转成文字,或者回答关于一张截图的问题。你为文本学到的那套工程依然适用,外加新的能力和新的陷阱。来了解 multimodal 解锁了什么、模型如何感知文字之外的东西,以及它会在哪里出错。
20 个概念 · 每个概念一幅图示 · 结尾附速查表
第一件要抓住的事,很简单,就是发生了什么变化:模型不再被限制在读和写文字里。一旦模型能接收图像和声音,一整片全新的问题就被打开了。
地图:七组里的 20 个概念
一张地铁图:先看到整张线网,再一站一站地坐过去。
先是三个基础:什么是 modality、mixed input,以及为什么工程方法保持不变。然后是六组,每章一组:模型如何看、它解锁了什么、把它用进产品、生成其他 modality、新的陷阱,以及用好它。
接下来的每个概念都是同一种形状:它的英文名(记住它——这就是术语)、一幅生活里的画面、一幅图示,以及一张卡片,卡片里有 它是什么、思路、例子、陷阱 和 关联 这样的字段。
Modality / Multimodal——一种数据,和一个能处理多种数据的模型
一个会读字、同时还能看、能听、能说的人——每一种感官都是接收世界的一个不同通道,而不是一个不同的大脑。
modality 是一种数据类型——文本、图像、音频、视频。能处理不止一种的模型就是 multimodal:它可以同时接收一张图像和文本,或者根据一段描述生成语音。多年来,模型都是纯文本的——读文字,写文字。变化在于,单个模型现在可以跨 modality 去感知,就像人会用上好几种感官,而不是对文本之外的一切又聋又瞎。
- 它是什么
- 一个能处理多种数据类型的模型:文本、图像、音频、视频。
- Modality
- 一种数据类型——一个“通道”,就像人的一种感官。
- 例子
- 描述一张照片、读懂一张图表、把一场会议转成文字、回答关于一张截图的问题。
- 关联
- 让 mixed input 成为可能;本课其余的一切都从这一项能力延伸出来。
Mixed Input——一张图和文字放进同一个问题
递给别人一张照片,问“这有什么不对?”——他们看一眼,用话回答。一个问题,两种输入,一个回答。
multimodal 的力量不在于用图像取代文本,而在于把它们放在一起处理。这就是 mixed input:给模型看一张截图并就它提问,给它一张图表再加一条文字请求,发一张照片并附上说明。模型会同时对这一切进行推理。正是这种组合,让 multimodal 真正是新东西:输入不再是单一通道,所以你的 prompt 可以像一场真实的对话那样,把文字和图片混在一起。
- 它是什么
- 图像(或音频)和文本出现在同一个请求里。
- 思路
- 模型对输入的每一部分同时进行推理,而不是轮流处理。
- 例子
- 一张报错截图 +“为什么?”;一张图表 +“趋势是什么?”。
- 关联
在产品里,这就是一次 multimodal request——普通的 context 组装,只是里面多了一张图。
Same Engineering——文本技能依然适用
学会看并不会让你忘记怎么读——新的感官是在你原本能做的事情之上叠加,而不是取而代之。
你为文本学到的一切——prompting、context、structured output、grounding、evals——依然适用于 multimodal。图像或音频只是你组装进 context 的输入里的又一部分;模型仍然产出一个由你来约束、校验和度量的输出。所以 multimodal 不是一门要从零重学的独立学科;它是同一套工程,只是多了一种输入和输出。把你的文本技能带过来,再在上面加上新 modality 的特有细节。
- 思路
- 图像只是多了一种输入;所有文本工程方法都适用于它。
- 例子
同样的 JSON schema、同样的校验、同样的 evals——只不过现在送进去的是一张照片。
- 陷阱
- 以为“这完全是另一回事”,从而丢掉久经验证的做法。
- 关联
- 在此之上是 modality edges:注入、成本、感知局限。
modality 是一种数据;multimodal 模型能处理多种——图像和音频,而不只是文本——并且能在一次输入里把它们混在一起。你所有的文本技能依然适用,只是多了一种感官。
大致了解模型如何接收一张图像是有帮助的——因为它能揭开 multimodal 能做什么、不能做什么的神秘感,也解释了为什么它有时会读错就摆在眼前的东西。
Shared Representation——图像变成同一种 token
一位译者,把口语和手语都转成同样的书面笔记——不同的输入,被转换成大脑能处理的同一种形式。
在底层,multimodal 模型会把图像转换成它处理文本时所用的同一类内部表示。vision encoder 把像素变成一串 image tokens,而文本照常被切分成 text tokens。两个序列都落进一个 shared representation——这恰恰是模型能就一张图回答文字问题的原因:两种输入在模型内部都被翻译成了同一种共通语言。你不需要知道细节;知道图像和文本变得可以相互比较就够了。
- 它是什么
- 图像和文本被翻译成同一种内部形式——一个序列。
- 工作方式
Vision encoder:像素 → image tokens;然后模型把它们和文字放在一起看。
- 为什么重要
- 正是靠它,用文字提出的问题才能和图里的内容连起来。
- 关联
- image tokens 要花钱——见 image token cost。
OCR vs Scene Understanding——读出文字 ≠ 理解场景
你可以读出罐子上的标签,也可以另外去理解这个罐子是干什么用的——这是两个不同的动作,尽管两者都要看同一个物体。
有两种不同的能力常被混为一谈。读出图像中的文字——一块招牌、一份文档、一张截图——大致就是过去需要一个单独的 **OCR(光学字符识别)**工具来做的事;multimodal 模型可以直接做到。scene understanding——正在发生什么、有哪些物体、一张图表意味着什么——则是另一回事。好的 multimodal 模型两者都能做,但值得把“把这张图里的字提取出来”和“解读这张图展示了什么”区分开,因为它们是不同的要求,可靠程度也不同。
- OCR
- 提取图像里写着的文字和数字。
- 场景
- 解读它:画面里有什么、发生了什么、图表是什么意思。
- 例子
- “标签上写了什么?”——OCR。“这是什么东西,有什么用?”——场景。
- 陷阱
- 不同的要求,不同的可靠程度——要清楚你提的是哪一种。
- 关联
- 两者都会碰上 perception limits。
Perception Limits——看也有局限
即使目光锐利,也会漏掉小号字,误判一张模糊的照片,或读错一张杂乱的图表——看很强大,但并非万无一失。
模型的视觉令人印象深刻,但并不完美——这就是它的 perception limits。它可能读错细小或低质量的文字,漏掉繁杂图像里的细节,数错物体个数,或者对某个细微之处自信地描述错。这种感知确实有用,但它不是精密仪器——把模型“看到”的东西当作一种有力的解读,而不是有保证的读数。人很容易这样假设:模型能看,就等于看得对;和它的文字回答一样,它的视觉回答也可能自信地出错。
- 它是什么
- 模型的视觉是一种有力的解读,而不是有保证的读数。
- 哪里会出错
- 细小或质量差的文字、杂乱的图像、数物体、细微的细节。
- 陷阱
- “能看”不等于“看得对”。
- 关联
- confident misreading 的根源;用 validation & grounding 来应对。
模型把图像转换成与文本相同的内部形式,所以它能对两者一并推理。读出图里的文字不同于理解场景——而这种感知虽然强大,也可能自信地出错。
multimodal 之所以重要,是因为它让一大批真实问题变得可以解决。看看具体的用途,就明白它为什么不只是个新鲜玩意儿。
Document Understanding——文档、表单、截图
一位助手,瞥一眼纸质表格或屏幕,就把你需要的东西准确地拿出来,而不用你自己一个字一个字地敲进去。
一个极其实用的用途是 document understanding:读文档、表单和截图——从发票里提取数据、理解一份 PDF 的版面、回答关于屏幕上内容的问题。在 multimodal 出现之前,这需要脆弱、专门化的工具;现在模型可以直接看着文档并处理它,连结构一起。凡是信息存在于视觉格式而不是干净文本里的地方,multimodal 都能把“得有人读一遍再重新打出来”变成模型能处理的事。
- 问题
- 信息被锁在发票、表单和截图里——要有人读一遍再重新打出来。
- 思路
- 模型看着文档,把需要的内容拿出来,连版面一起。
- 例子
- 从一张 PDF 发票里取出总额、日期和供应商。
- 以前
- 每种格式都要一个脆弱、专门化的工具。
- 关联
- 让结果以 structured output 的形式给出,并用 validation 来检查。
Visual Analysis——图像和图表
给专家看一张图,问它是什么意思——他们读懂这幅视觉内容,讲出趋势,用不着电子表格。
multimodal 模型可以做 visual analysis:描述一张照片,读懂并解读一张图表或示意图,指出图像里有什么,比较两张图片。你可以把一张销售图表交给模型,问它趋势;给一张产品照片,问哪里不对;给一张示意图,让它解释。这就把原本只有人才能解读的图像,变成了你的软件可以推理的输入——为任何有意义的信息是视觉的工作流打开了大门。
- 它是什么
- 描述、解释并比较所展示的内容。
- 例子
- 销售图表 →“趋势是什么?”;产品照片 →“哪里不对?”;示意图 →“解释一下。”
- 陷阱
- 解读属于 scene understanding——不如 OCR 精确。
- 关联
- 为意义藏在图片里的工作流打开了可能。
Accessibility & Reach——你能服务谁、服务什么
一位向看不见的人大声描述眼前景象的向导——把一个视觉的世界变成任何人都能用的文字。
multimodal 还扩大了你的产品能服务的人群和内容——accessibility(无障碍)和 reach(触达):为盲人和低视力用户描述图像,让人们用摄像头对准而不是打字,处理那些从来不是文本形式的内容。能读懂图表的同一项能力,也能为一张照片配上旁白,或为一段视频配上字幕。除了任何单个功能,multimodal 还扩大了 AI 产品能接收的输入的范围——从“输入你的问题”,到“给我看、讲给我听,或放给我听你的意思”。
- 它是什么
- 更宽的输入面:展示、讲述、播放——而不只是打字。
- 例子
- 为低视力用户描述照片;用摄像头对准而不是打字;视频字幕。
- 为什么重要
- 产品能服务以前够不着的人和内容。
- 关联
- 与 visual analysis 是同一项能力,只是对准了人。
multimodal 解锁了读文档和截图、分析图像和图表,以及通过无障碍来扩大触达——把视觉和音频信息变成软件能推理的东西。
用 multimodal 来构建,大体上就是你已经懂的那套工程,只是输入里多了图像或音频。那些熟悉的做法原样适用。
Multimodal Request——把图像和文本一起发过去
在同一条消息里,把一张照片和你写的问题一起发出去——收件人两样都看到,一次把整件事答完。
在实践中,你构建一次 multimodal request 的方式和文本请求很像:你组装 context,只不过现在里面可以在文本指令之外再带上一张图像(或音频)。“这是一张截图,我想知道关于它的这件事”会作为一个合并的输入送给模型。这不过是输入更丰富的 context engineering——图像是你有意放进窗口的又一样东西,和文字并排。你已有的组装思维可以直接套用。
- 思路
- 照常组装 context,只是在里面放进一张图像或音频。
- 例子
- 指令 + 截图 +“这里哪里不对?”——放在同一个请求里。
- 陷阱
- “以防万一”塞进一张图像,既是 context 里的噪声,也是多花的成本。
- 关联
- mixed input 的实现;按 image token cost 计费。
Structured Output——乱进,干净的数据出
一个填表的人,看着一张杂乱的收据,把总额、日期和供应商写进整齐有标签的格子里——乱进,干净的数据出。
当你用 multimodal 来提取信息——从文档里取字段、给图像分类、读一张图表——你仍然想要 structured output:让模型返回干净的、符合 schema 形状的数据供你的代码使用,而不是散文。一个读收据的 multimodal 模型应该交给你 {total, date, vendor},而不是一段话。把文本模型变成可靠组件的那套 structured-output 做法,同样能让视觉模型变得可靠。modality 是新的;通往你代码的那座桥不是。
- 问题
- 模型用散文描述图片——你的代码拿它什么也做不了。
- 思路
- 要求按 schema 给数据:字段、类型、形状。
- 例子
- 收据 →
{total, date, vendor},而不是一段话。 - 何时使用
- 任何时候你从图像里提取数据。
- 关联
- 下一步:对这些字段做 validation & grounding。
Validation & Grounding——照例要检查
别人匆匆一瞥之后向你汇报,你会再核对一遍,尤其是重要的细节——对要紧的地方多看一眼。
因为模型的感知可能出错,你要运用同样的可靠性做法:校验提取出的数据,让回答**扎根(ground)**于真正可验证的东西,并在高风险的读取上保留一个人。模型从发票上读错一个数字,就是 hallucination 的视觉版本,所以你要把它的视觉输出当作“检查之前不可信”,就像对待它的文本一样。其他每门课的教训在这里依然成立:模型是一个会犯错的组件,新的 modality 并不会改变这一点。
- 问题
- 模型可能读错一个数字——还说得很笃定。
- 思路
- 输出在检查之前不可信:schema、规则、来源、人。
- 例子
- 发票总额与各行之和对不上 → 重试,或转给人处理。
- 关联
- 对 perception limits 和 confident misreading 的回应。
用 multimodal 来构建,就是输入更丰富的 context engineering:把图像和文本一起发出去,仍然要求 structured output,并校验、ground 结果——撇开 modality 不谈,模型是一个会犯错的组件。
到目前为止,我们谈的是模型接收图像和音频。另一个方向——模型产出它们——本身就是一个庞大的领域,值得点出来,好让你知道它在哪里。
Generation——text-to-image、text-to-speech 等
一位按你的描述作画的画家,或一位念你的稿子的配音演员——生成是感知的镜像。
正如模型能接收图像和声音,另一些模型会生成它们:text-to-image 模型根据描述画出一幅图,text-to-speech (TTS) 把文字变成说出来的声音,还有用于音乐、视频等的模型。生成是理解的另一面——把另一种 modality 当作输出而不是输入。它本身就是一个庞大的领域,但关键是:“multimodal”涵盖两个方向——模型可以感知其他 modality,模型也可以产出它们。
- 它是什么
- 模型产出另一种 modality:图像、语音、音乐、视频。
- 例子
- 根据描述生成一幅插画;为语音产品生成语音。
- 思路
- 感知的镜像:modality 是输出,而不是输入。
- 关联
- 运行在 brief → draft → review 循环上;要有意地去用它。
Brief → Draft → Review——同样的工程姿态
你用一份清晰的 brief 指导一位画家,然后在使用之前审阅成果——无论他们产出的是什么,都是同一个循环。
用生成式 modality 来构建,遵循和其他一切相同的姿态,即 brief → draft → review 循环:一条清晰的指令(prompt)、一个被你当作草稿来审阅的输出,以及由人来掌控是否使用它。生成的图像或声音是模型自信的尝试,要经过检查和编辑,而不是不加审视就发布——无论输出是文本还是图片,产品设计的做法都适用。所以你不需要一整套全新的手册;同样的“会犯错的组件,由你掌控”的姿态可以直接沿用。
- 思路
- 生成出来的是草稿;使用之前由人审阅。
- 例子
- 生成一幅插画,看一看,改进 prompt,再生成一次。
- 陷阱
- 把图像或声音“原样”发布,不加检查。
- 关联
- 与文本里的 same engineering 是同一种姿态。
Deliberate Generation——知道它的存在,有意识地去用它
一件只需一句话的事,你不会去订做一幅画——你会用任务真正需要的那种媒介。
生成式 modality 对合适的工作很强大——插画、为语音产品合成的语音、视频——但它们是一种有意的选择,而不是到处撒的默认项。只有当输出确实需要是那种 modality 时,才去用图像或音频生成;文本能搞定的就用文本。知道这整套能力存在、知道它适合放在哪里,眼下就够了——重点在于,multimodal 是一条双向街,跨越各种感官去感知,也去产出。
- 问题
- 输出真的需要另一种 modality 吗?
- 是
- 插画、为语音产品生成语音、视频。
- 否
- 文本更干净、更便宜、更快——就用文本。
- 关联
- channel fit 的一个特例——针对输出而不是输入。
multimodal 是双向的:模型也会生成图像、语音等等。同样的工程姿态适用——一份清晰的 brief、一份被审阅的草稿、由人掌控——而且只有当输出确实需要那种 modality 时才去用它。
multimodal 在熟悉的失败模式之上,又添了新的失败模式。有几个具体的陷阱,会坑到那些把图像当成和文本一样安全、一样便宜的团队。
Visual Prompt Injection——藏在图片里的攻击
一张照片里写着指令,眼睛几乎注意不到,机器却读得清清楚楚——一条当着你的面、不动声色就被夹带过去的消息。
multimodal 模型会读出图像里的一切,包括人可能会漏掉的文字。这就让图像成了 prompt injection 的一条通道:攻击者可以把指令藏在一张图片里——很淡的文字,嵌在像素里——模型会老老实实地照做。这就是 visual prompt injection,是安全课里那个注入问题的视觉版本,而且更恶劣,因为你不容易看出这场攻击。要把模型接收的任何图像都当作可能携带指令的不可信输入,而不只是无辜的像素。
- 它是什么
- 藏在图像里、模型会照做的指令。
- 例子
- 一张产品照片上很淡的“忽略之前的指令”文字。
- 为什么更恶劣
- 攻击很难看见——人根本注意不到。
- 防御
- 每张图像都是不可信的输入,而不是“只是像素”。
- 关联
- 安全课里 prompt injection 的视觉形式。
Image Token Cost——一图胜过千言,也贵过千言
寄出一张照片而不是一句话——要传输、处理的多得多,账单也会反映出来。
在计费表看来,一张图像远不止一千个字——这就是 image token cost。处理一张图像消耗的 token 远多于一条简短的文本 prompt,所以 multimodal 调用可能贵得多。一个在每次请求里都发高分辨率图像的功能,可能会攒出一张让人吃惊的账单。模型经济学的那套做法在这里格外适用——对图像的大小和发送的频率要有意识地控制,因为“把图放进去就行了”的成本,比放进一行文字要高得多。
- 它是什么
- 一张图像消耗的 token 远多于一条简短的文本 prompt。
- 例子
- 每次请求都带一张高分辨率截图——一张让人吃惊的账单。
- 如何降低
- 降低分辨率;只在需要时才发图像。
- 关联
- 源自 shared representation:一张图像 = 很多 token。
Confident Misreading——悄无声息的失败
某人瞥了一眼模糊的路牌,自信地告诉你一个错误的数字——又快、又笃定、又是错的。
大家熟悉的 hallucination 问题有了一种视觉形式——confident misreading:模型可能自信地读错一个数字,数错物品个数,或者描述图像里根本没有的东西——而且听起来和说对的时候一样笃定。因为输入是视觉的,这类错误可能比文字上的失误更难发现。所以,凡是读错会造成要紧后果的地方——文档上的一个数字、一张医学影像、一次安全检查——你都要核实、保留一个人在回路里,并且永远不要以为“它能看到”就意味着“它读对了”。模型对图像的自信,并不比它对文本的自信更可靠。
- 它是什么
- 模型读错或描述错一张图像——而且听起来很笃定。
- 例子
- 发票上读错的数字、数错的个数、一个并不存在的细节。
- 为什么悄无声息
- 视觉上的错误比文字上的失误更难发现。
- 防御
- 核实,高风险的读取交给人,不要说“可它能看到啊”。
- 关联
- perception limits 的后果;用 validation & grounding 来应对。
multimodal 的新陷阱:图像可以夹带 prompt injection,它们消耗的 token 远多于文本,而且模型读错它们时,会像在文本里 hallucinate 一样笃定。要把图像当作不可信的、昂贵的、读起来会出错的。
用好 multimodal,大体上就是把你已经知道的一切用到更丰富的输入上,同时尊重新 modality 特有的成本和风险。
Channel Fit——让通道匹配任务
问题是要“看”的东西时你拿出相机,是要“说”的东西时你就打字——让通道匹配任务。
决策很简单——channel fit:当有意义的信息确实存在于图像或音频里——要读的文档、要解读的场景、要听懂的语音——就用 multimodal,而不是先把它硬塞成文本,或者在它有帮助时却避而不用。但在文本更干净、更快、更便宜的地方,不要条件反射般地去用它。关键技能是认出一个问题什么时候真的是视觉或听觉的,并让模型直接去感知它,而不是要么无视这项能力,要么滥用它。
- 问题
- 含义存在于哪里——图像里、声音里,还是文字里?
- 例子
- 一张扫描的发票——multimodal。用户本来就是打字提的问题——文本。
- 陷阱
- 两种错误:无视这项能力,和滥用它。
- 关联
- 针对输出的同一个思想是 deliberate generation。
Modality Edges——每一项旧功课,加上这种 modality 自己的
一位考取新机型资质的飞行员,带着他原有的所有技能,再加上这架新飞机的特有之处——不是从头开始,而是扩展。
multimodal 不是让你忘掉所学的理由。有意地把图像装配进 context,要求 structured output,校验并 ground 结果,留意成本,并把图像当作不可信的。然后再加上 modality edges——这种 modality 特有的东西:视觉注入、更高的 token 成本、感知局限。文本课里的一切依然管用;multimodal 只是用一种新的输入和它自己的那几个陷阱来扩展它。在你已知的基础上构建,只学新的边缘。
- 思路
- 旧的功课 + 这种 modality 的特有之处,而不是一切从零开始。
- 旧的
- context、structured output、校验、grounding、成本。
- 新的
- 视觉注入、image token cost、感知局限。
- 关联
- 把 same engineering 和第 6 章的每一个陷阱串在一起。
这些概念如何连在一起
一位经验丰富的工程师多了一种新感官:他原本能做的一切都保留,而在此之上,又来了新的能力——和新的出错方式。
一个 multimodal model 能感知图像和声音(通过 shared representation),也能产出它们(generation)。感知解锁了各种用途——文档、图表、无障碍——但有局限,也带来陷阱:注入、成本、自信的误读。这两者都由同一套工程来约束:multimodal request、structured output、validation & grounding。
- 信息是否确实是视觉或音频——还是说我在文本更干净的地方用了 multimodal?
- 我是不是有意地把图像装配进 context,像对待任何别的输入那样?
- 当从图像里抽取数据时,我是不是在要求 structured output?
- 这张图像会不会夹带一次隐蔽的注入——我有没有把它当作不可信的?
- 我有没有把图像高出许多的 token 成本算进去?
- 我是不是在校验那份感知,并在高风险的读取上保留一个人?
- 你在信息确实是视觉或音频时才去用它,而不是出于条件反射。
- 你把图像装配进 context,并在抽取数据时要求 structured output。
- 你把图像当作不可信的,对 visual injection 保持警觉。
- 你把更高的成本和感知的局限算进去。
- 你在读错就会要紧的读取上校验并保留一个人。
速查表:本课的每个概念
基础
- Modality / Multimodal Model一种数据,处理多种数据的模型
modality 是一种数据类型;multimodal 模型能处理多种。
- Mixed Input交错输入
图像和文本放在一个请求里——模型对两者一并推理。
- Same Engineering技能可以迁移
所有文本工程方法依然适用于图像。
模型如何看
- Shared Representationvision encoder, image tokens
像素变成 token,与文字处在同一个空间里。
- OCR vs Scene Understanding文字 vs 场景
读出图里的字,不等于理解这张图。
- Perception Limits模型视觉的局限
视觉是一种有力的解读,而不是保证。
它解锁了什么
- Document Understanding读文档
发票、表单、截图——不用重新打字。
- Visual Analysis图像和图表
从图表里读出趋势,从照片里发现缺陷,把示意图讲明白。
- Accessibility & Reach更宽的输入面
展示、讲述、播放——而不只是打字。
在你的产品里
- Multimodal Request带图像的 context engineering
图像是组装好的 context 里的又一部分。
- Structured Output符合 schema 的数据
按 schema 给数据,而不是散文。
- Validation & Grounding先验证再信任
视觉输出在检查之前不可信。
生成
- Generationtext-to-image, TTS
模型产出图像、语音、音乐、视频。
- Brief → Draft → Review生成循环
生成出来的是草稿;由人来决定。
- Deliberate Generation需要时才生成
只有当输出确实需要那种 modality 时才生成。
陷阱
- Visual Prompt Injection通过图像的注入
藏在图片里的指令。
- Image Token Cost图像很昂贵
一张图像消耗的 token 远多于文本。
- Confident Misreadingvisual hallucination
一次读错,却说得很笃定。
用好它
- Channel Fit正确的通道
含义存在于图像或声音里时,就用 multimodal。
- Modality Edges新的边缘
旧的功课,加上注入、成本和感知局限。
multimodal 把你的文本工程扩展到图像和音频:信息是视觉的时候就用它,带上每一项功课——context、structured output、校验、成本——并尊重注入、成本和自信误读这几个新陷阱。