外观
第 23 章 多模态提示工程
23.1 交互通道不再只有文字
人在脑子里想一个画面的时候,那个画面是完整的,颜色、形状、空间关系、动态,全都在。可过去几十年,要把这个画面交给计算机,只有一条路,就是把它翻译成文字,通过键盘敲进去。而文字是一条带宽很低的通道,大量信息在翻译的过程中丢掉了。
接收方拿到的只是文字,只能靠这些文字去还原画面,还原出来的,注定是一个丢掉了大量细节的近似版本。
说不清、道不明,这正是过去几十年来人类与计算机交互时长期面临的困境:人局限于文本这一个维度,通过键盘,把完整、多维的思想压缩成一维的、线性的字符流输入给机器,机器再返回另一段字符流。计算机再博学、再有逻辑,也接收不到文字之外的信息,它什么也“看不见”。
多模态(Multimodality)的出现,改变了这个局面。
它带来的最直接的变化,是表达方式的扩展。人可以直接要求模型“画”出一张图,指定“用梵高的笔触画出来”,也可以“拍”出一条飞龙在云中穿梭、鳞片闪闪发光的短片。反过来,计算机也终于获得了“看”的能力。可以给它一张照片,像问一个朋友一样问它:“你看我今天穿的这件衣服,搭这条裤子,会不会显得很奇怪?”
“多模态”,这个词听起来有点学术,有点唬人,但它的本质极其简单,也极其符合人类的本能,就是让沟通,从单一的、低带宽的文本通道,扩展到包含图像、视频、声音等多种信息通道的、高带宽的交互。它不是什么新发明,它只是在“恢复”人类与生俱来的、最自然的沟通方式。
对提示工程师来说,这意味着工作范围一下子宽了:输入和输出不再只有文字,图像、视频、声音都可以进入 Prompt,也可以成为模型的产出。
但同时,这也带来了全新的、令人头大的复杂性。过去只需要跟语言的“语法”和“逻辑”打交道,现在,还必须开始学习图像的“构图”、色彩的“情绪”、视频的“运镜”、声音的“节奏”。编写 Prompt 的思维方式,需要随之做一次根本性的扩展。
这一章就按这个顺序展开:先讲最直观的“文生图”,看怎么用语言控制画面;再讲更复杂的“文生视频”,看怎么在 Prompt 里处理时间和运动;然后把方向反过来,讲怎么让 AI “看懂”给它的图像和文档;最后把这些能力组装起来,看一个有视觉输入的 Agent 能做什么。
读完这一章,你会重新看待自己过去写的那些纯文本 Prompt,语言不再是唯一的交互通道,但它仍然是最核心的那一个。
23.2 文生图从碰运气到结构化描述
文生图(Text-to-Image)是多数人第一次接触多模态 AI 的入口。很多人在 Midjourney、Stable Diffusion、Flux 或者 DALL-E 这样的工具里,体验过用一句话生成一张完整图片的过程,国内用户在豆包这类应用里,也已经能用上同类能力。可能只是在午休时,随手输入一句天马行空的话,比如“一只穿着宇航服的熊猫,坐在火星的红色沙漠上,悠闲地喝着珍珠奶茶”,几秒钟后,一张细节丰富、光影真实、精美得可以立刻当作手机壁纸的图片就呈现在眼前。
时效备注:文生图这条线迭代得飞快。Midjourney 在 2024 年中已经迭代到 v6.1,到 2026 年中通常会有更新版本;Stable Diffusion 阵营的核心权重也已从 SDXL 过渡到 SD 3 与 Flux 系列;DALL-E 这条线则被 OpenAI 整合进了 ChatGPT 与 gpt-image-1 API。每个版本对 Prompt 的语法偏好,比如权重语法
(knight:1.2)、负向提示词列表、自然语言描述 vs 标签化关键词,都不太一样,迁移到新模型时,建议先去对应官方文档看看当前的“最佳实践”。
第一眼看到生成结果时的感受确实强烈:一句随手输入的话,几秒钟就变成了一张完整、精细的图片。
但当最初的兴奋感和新鲜感过去,开始尝试用它来完成一些严肃的、有具体要求的创作任务时,比如帮公司的市场部设计一张海报,或者为个人博客画一张配图,就很可能会遇到完全不同的另一种体验:反复修改,也得不到想要的结果。
想要一张“一个年轻漂亮的中国女孩,在阳光下的麦田里,脸上带着幸福的微笑”,结果它生成了一个金发碧眼、颧骨高耸的欧美脸,背景里的麦田看起来像是欧洲中世纪的油画,女孩的微笑也显得僵硬而诡异。忍着性子,修改 Prompt,加上“东亚人特征,黑色头发”,结果它生成了一个看起来像日本动漫角色的女孩。再次修改,加上“写实风格,照片级真实感”,这次脸型对了,结果她那只伸出来的手上,长了六根手指。
开始在 Prompt 里跟它“吵架”,用大写字母强调“请确保她有五根手指,FIVE FINGERS!!!”,结果它给了一只长着七根手指的手。想要一个简洁的、扁平化风格的 Logo 设计,它却给了一张细节多到爆炸、充满了巴洛克式卷曲花纹的复杂插画。
几个小时下来,对着一堆不达标的“失败品”,很自然会冒出一个问题:这个工具到底能不能胜任严肃的创作任务?
这种落差,根源在于很多人一开始就搞错了与文生图模型打交道的方式:以为只要把模糊的愿望丢进去,它就能领会意图、完美实现。但实际上,模型只按字面执行,你说得越模糊,它猜得就越随意。要得到稳定的结果,必须给出极其精准、结构化、毫无歧义的描述。
编写文生图 Prompt,本质上就是学会写这种精确的描述。与其说是在“描述”画面,不如说是在“编排”一个视觉世界。一个高质量的文生图 Prompt,通常包含几个核心的、不可或缺的构成要素,下面逐个拆开讲。
先看主体(Subject),也就是画面里到底画什么。这是最基本的问题。但仅仅说“一个女孩”是远远不够的,这等于把大量决定权留给了模型,需要用精准的、有画面感的词语,写清她的所有细节。是“一个穿着民国时期蓝色学生装、扎着两条麻花辫、眼神清澈的年轻女孩”,还是“一个穿着未来感十足的银色紧身战斗服、留着利落的粉色短发、眼神坚毅的女性未来战士”?主体的细节越丰富,特征越明确,模型“自由发挥”导致跑偏的空间就越小,结果也就越接近想象。甚至可以具体到她戴的配饰、衣服的材质、脸上的情绪。
再看风格(Style),也就是画面整体呈现什么样式。希望这幅画看起来像什么?是梵高《星空》那样,充满了狂野奔放的、能看到笔触肌理的油画感?还是宫崎骏动画里那种,天空湛蓝、云朵洁白、充满了清新治愈感的日式动画画风?是《银翼杀手》那种,霓虹灯在湿漉漉的街道上反射出迷幻光芒的赛博朋克未来感?还是中国水墨画那种,讲究“计白当黑”、充满了写意和留白韵味的东方美学?
风格词是整个 Prompt 中最能影响画面“气质”和“感觉”的部分。有人可能会说:“可我不是艺术史专家,我说不出那么多流派啊!”没关系,不必是。可以用很多方式来定义风格。
最直接的,是指定著名艺术家的名字,比如 in the style of Vincent van Gogh 或者 by Leonardo da Vinci。如果知道一些艺术流派,那当然更好,比如 Impressionism(印象派)、Cubism(立体主义)、Surrealism(超现实主义)。
但更简单的方法,是使用媒介(Medium)作为风格,比如 watercolor painting(水彩画)、charcoal sketch(炭笔素描)、3D render(三维渲染)、photorealistic(照片级真实感)。甚至,还可以直接引用喜欢的游戏、电影或动画的名称,比如 in the style of Genshin Impact(原神风格)、in the style of Studio Ghibli(吉卜力工作室风格)。模型“看”过互联网上几乎所有的图片,它“认识”这些流行文化符号。
构图与镜头(Composition & Shot)解决的是从哪个角度、多远去看主体的问题。希望观众从哪个角度去看这个主体?是“特写镜头(close-up shot)”,把镜头怼到女孩的脸上,只为了捕捉她眼神里的一丝忧郁,还是“广角镜头(wide-angle shot)”,把人和景都收进来,展现她与那片广阔无垠的麦田之间的关系?
构图的规则,模型也“懂”。可以告诉它,主体是在画面的正中央(centered composition),还是遵循经典的“三分法(rule of thirds)”构图,把主体放在画面的三分线交点上,让画面看起来更和谐、更有呼吸感。还可以指定拍摄的角度,是“从下往上看的仰视(low-angle shot)”,这种角度通常会营造一种高大、雄伟、充满力量的感觉,还是“从上往下看的俯视(high-angle shot)”,带来俯视全局的感觉,或者表现出角色的渺小与孤独?这些专业的摄影术语,对于模型来说,就是构建画面空间感和叙事感的“硬指令”。
光照(Lighting)决定画面的氛围和情绪。摄影圈常说“摄影是用光的艺术”,这句话在 AI 绘画里同样适用。同样一个女孩在麦田里的场景,在“清晨柔和的、带着一丝雾气的阳光(soft, misty morning light)”下,会显得宁静、纯洁而美好;在“夏日午后刺眼的、几乎没有影子的顶光(harsh midday sun)”下,则可能显得燥热、烦闷和极度现实;而在“黄金时刻(golden hour)”那种日落时分,太阳即将沉入地平线时的那种温暖、柔和、能把万物都染成金色的光线下,整个画面都会渲染出一种浪漫、怀旧而梦幻的色彩。
还可以指定更具戏剧性、更具风格化的光。比如,可以要求“伦勃朗光(Rembrandt lighting)”,这是一种源于画家伦勃朗的布光方式,特点是人物脸部大部分处于阴影中,只有一侧有一个标志性的三角形光斑,能营造出极强的立体感和神秘感。或者,可以要求“体积光(volumetric lighting)”,也就是常说的“丁达尔效应”,那种能清晰地看到一束束光线穿过空气中的尘埃或雾气的感觉,非常适合营造神圣或梦幻的氛围。
把这些要素组合起来,最初那个模糊的、结果不可控的 Prompt,也就是“一个年轻漂亮的中国女孩,在阳光下的麦田里微笑”,就可以升级成一段结构完整的专业级 Prompt:
masterpiece, best quality, photorealistic, a beautiful young Chinese girl with long black hair, wearing a simple white cotton dress, a gentle and happy smile on her face, standing in a vast golden wheat field at sunset. Shot in the style of a movie still, cinematic. The lighting is warm golden hour light, with soft sunlight filtering through the wheat stalks, creating a beautiful bokeh effect in the background. Full body shot, taken from a low angle to emphasize her presence. The composition follows the rule of thirds, with the girl on the right side of the frame, looking towards the left.
这句 Prompt 几乎把所有关键要求都写清楚了。它告诉了模型画什么(一个有具体特征和情绪的中国女孩),怎么画(电影剧照般的照片级真实感),怎么拍(全身,低角度,三分法),以及怎么打光(黄金时刻,柔和的逆光,背景虚化)。要求写得越具体,模型自由发挥的空间就越小,结果也就越接近想要的效果。
但有时候,光告诉它“要做什么”还不够,还得明确地告诉它“不准做什么”。这就是 AI 绘画中一个重要技巧,负向提示(Negative Prompt)。
这就像跟设计师交付需求,除了给参考图和效果图,还得专门拉一个清单,用红笔标注出来,告诉他:“千万不要用这个丑到爆的卡通字体,绝对不要用这个能亮瞎眼的死亡芭比粉,还有,这个客户的 Logo 一定不能变形!”对于 AI 来说,负向提示就是这样一个“避坑清单”、“黑名单”。
可以在一个专门的输入框里,写下所有不希望出现在画面中的东西。这个清单通常会包含一些通用的、用来提升画面质量的词,比如 low quality, worst quality, blurry, jpeg artifacts(低质量,最差质量,模糊,JPEG 压缩痕迹)。
更重要的是,它要包含那些专门用来修正 AI 常见“毛病”的词,比如 ugly, deformed, disfigured, poor anatomy, extra limbs, missing fingers, extra fingers, six fingers(丑陋,畸形,毁容,糟糕的人体结构,多余的肢体,缺手指,多手指,六根手指)。对于前面那个六根手指的问题,负向提示就是最直接的修正手段。
在要素之上,还有一个能对画面做精细控制的高级技巧,叫做权重(Weighting)。有时候,Prompt 里包含多个互相冲突或者重点不一的元素,希望模型更侧重于其中某一个。比如,想要“一个穿着宇航服的骑士”,但发现生成的图片里,宇航服的特征很明显,骑士的盔甲感却很弱。这时候,就可以给“骑士”这个词,或者描述骑士盔甲的词,加上更高的权重。
在 Stable Diffusion 等工具中,通常用括号和数字来表示这种权重,比如 (knight in shining armor:1.2), astronaut suit。这里的 :1.2 就意味着,把“闪亮盔甲的骑士”这个指令的重要性,提高 20%。反之,也可以用 :0.8 来降低某个元素的权重。这相当于明确告诉模型:这个元素更重要,优先满足它;那些元素是次要的。
掌握了主体、风格、构图、光照、负向提示、权重这些要素,文生图就不再是碰运气。写 Prompt 的过程,更像一个不断试错和实验的迭代:增加一个形容词,修改一个权重,观察画面的变化,直到能够稳定地、可复现地得到想要的结果。
23.3 文生视频用分镜控制时间与运动
文生图解决的是静态画面。文生视频(Text-to-Video)在这个基础上,还要处理时间和运动,对 Prompt 的要求也相应提高了一层。
像 Sora(OpenAI,2024 年 2 月首发、2025 年 9 月迭代到 Sora 2)、Kling(快手,2024 年 6 月上线、随后迭代到 Kling 1.6 / Kling 2.0)、Luma AI(Dream Machine,2024 年 6 月发布)这些工具的演示视频,第一次在互联网上广泛传播的时候,给很多人留下了很深的印象:AI 不仅能生成以假乱真的静态图片,还能生成动态的、连贯的、大体符合物理规律的视频。
时效备注:文生视频这条线到 2026 年中已经迭代了好几轮,头部产品的格局也洗过牌。OpenAI 曾把 Sora 整合进 ChatGPT 的对话界面和
sora-2API,但 Sora 的网页与 App 端已在 2026 年 4 月底停止服务,sora-2API 也计划在 2026 年 9 月底下线;Kling 2.0 已经支持到分钟级长视频和原生音频,Luma 把重点放在了企业级 API 化;除了这三家,Google DeepMind 的 Veo 2、Meta 的 Movie Gen、快手可灵的海外版等也加入了这条赛道。视频生成模型对 Prompt 的“导演分镜”要求,每一代都有细微差异,比如 Sora 偏好自然的叙事性描述,Kling 对摄影术语更敏感,所以实际写 Prompt 时,还是以当下使用的那一款模型的官方示例为准。
这其中的技术跨越,远比旁观者角度看到的要大得多。
如果说,生成一张图片,是让 AI 在一个二维的空间(X 轴和 Y 轴)里,根据描述,去猜测和填充每一个像素点的颜色;那么,生成一段视频,则是让 AI 在一个三维(X 轴,Y 轴,以及代表时间的 T 轴)的时空里,去预测和创造每一个像素点在下一帧的“运动轨迹”和“状态变化”。它不仅要知道“这个东西是什么”,还要知道“这个东西接下来会发生什么”。它需要对物理世界的基本规律(比如重力、惯性、光影变化)有深刻的“理解”,才能创造出不让人“出戏”的动态世界。
这种维度的增加,对 Prompt 的要求也高了一个量级。写 Prompt 的人要开始按电影分镜的思路组织内容:Prompt 不再是一份静态的画面描述,而是一份包含了时间线和动作过程的“分镜脚本”。
在文生图 Prompt 的所有要素基础之上,文生视频的 Prompt 里,必须增加几个关于时间和运动的关键维度,否则,得到的很可能只是一张会“蠕动”的、毫无意义的动态图片。
动作与叙事(Action & Narrative)是视频 Prompt 里最重要的部分。视频的核心是“动”,是变化,是故事。Prompt 要清晰地描述出,在这个场景里,谁,在做什么,发生了什么变化。一个好的视频 Prompt,本身就是一个微型故事。
一个静态的图片 Prompt 可能是:“一只金毛犬,坐在公园的长椅上,嘴里叼着飞盘。”这会生成一张很可爱的照片。
而一个动态的视频 Prompt 则应该是:“一只毛发蓬松、看起来无比快乐的金毛犬,在草地上兴奋地奔跑,它的目标是前方不远处的一张公园长椅。它跑到长椅前,四肢发力,轻盈地一跃而上,稳稳地落在长椅上,然后开心地摇着毛茸茸的大尾巴,嘴里还骄傲地叼着一个它刚刚接住的红色飞盘。”
对比一下就能感受到,后者的描述里,包含了一个完整的、有起承转合的微型故事:奔跑(起) -> 跳跃(承) -> 坐下(转) -> 摇尾巴(合)。它给了模型一个清晰的、符合逻辑的“动作序列”去遵循。叙事越连贯,动词用得越生动,越符合现实世界中一只狗的行为预期,模型生成稳定、流畅、不“穿帮”的视频的可能性就越大。如果给它一个不合逻辑的指令,比如“一只狗跳起来,然后飞走了”,它可能会尝试生成,但结果很可能是怪异和崩坏的。
镜头语言(Cinematography)是第二个关键维度。在静态图片里,关心的是“镜头”,是一个固定的视角;而在视频里,关心的是“镜头运动”:镜头是固定不动(static shot),还是在场景中移动?
写 Prompt 时可以直接使用电影行业的专业术语,这些模型在训练中见过大量带这类标注的视频素材,能把术语和画面效果对应起来。
平移镜头(pan shot)是相机固定在原地、水平转动的镜头,非常适合用来展示宏大的场景。比如,可以这样写:A slow pan shot from left to right, revealing a sprawling, bustling medieval city at sunrise, with smoke rising from chimneys and people starting their day.(一个缓慢的从左到右的平移镜头,逐渐揭示出一座在日出中苏醒的、庞大而繁忙的中世纪城市,烟囱里升起炊烟,人们开始了一天的生活。)
推拉镜头(dolly shot / zoom)则分两种,相机本身向前或向后移动(Dolly),或者通过变焦来拉近拉远(Zoom)。这两种方式在视觉上略有不同,但都可以用来引导观众的注意力。比如,可以用它来制造紧张感:A dramatic dolly zoom towards the detective's face as he looks at the clue and realizes the shocking truth.(一个戏剧性的推拉变焦镜头,在他看到线索并意识到惊人真相时,快速推向侦探的脸部。)
升降镜头(crane shot)是相机垂直上升或下降的镜头。这通常用来在故事的开头或结尾,建立或脱离一个场景。比如:A crane shot starting from a close-up of a single flower on the ground and rising up high, showing that the flower is in the middle of a vast, post-apocalyptic wasteland.(一个升降镜头,从地面上一朵花的特写开始,缓缓升高,最终展示出这朵花开在一片广阔的、末日后的荒原之上。)
这些镜头语言的加入,能极大地提升视频的“电影感”,让它从一段简单的、像是手机随手拍的“素材”,变成一段有情绪、有表达、能讲故事的“电影片段”。
节奏与速度(Pacing & Speed)是第三个关键维度。视频是有节奏的。希望故事缓缓展开,还是节奏快、冲击强?
可以通过一些关键词来控制视频的节奏。
慢动作(slow motion)是营造情绪冲击的常用手段。比如,可以用它来定格一个关键瞬间:A warrior dodging an incoming arrow in dramatic, breathtaking slow motion, with individual rain drops frozen in the air around him.(一个战士在戏剧性的、令人窒息的慢动作中躲避一支迎面而来的箭,他周围的每一滴雨珠都仿佛凝固在空中。)
延时摄影(time-lapse)则适合表现时间的流逝。比如:A time-lapse of a busy city intersection from day to night, with the sun setting, lights turning on, and car headlights and taillights turning into beautiful streaks of light.(一段从白天到黑夜的城市繁忙十字路口的延时摄影,太阳落下,华灯初上,汽车的头灯和尾灯变成了美丽的光的条纹。)
至于快节奏剪辑(fast-paced editing、quick cuts),虽然目前还不能像剪辑师一样,精确控制每一个剪辑点,但加入这些词,可以强烈地“暗示”模型,生成更短、更快的镜头,营造一种紧张、刺激的氛围,非常适合动作场景。
还有一个很多人漏掉的要素:时长(Duration)。文生视频和文生图有一个直接差别:图片没有长度,视频必须回答“拍多长”。这件事的控制权主要在产品参数里,不在 Prompt 里:可灵(Kling)给 5 秒和 10 秒两档,Sora 单段最长 20 秒,Runway、Veo 这类产品也把单段长度控制在几秒到十秒上下(截至 2026 年 8 月)。在 Prompt 里用自然语言补一句 a 5-second shot,能帮模型把动作节奏对齐到目标时长,但它只是提示,不是开关。
实践上的建议很简单:单段别贪长。各家的基础档位都停在 10 秒上下,这不是巧合,镜头越长,动作逻辑崩坏、物体变形的概率就越高。想要更长的成片,正确做法是一段一段生成,再剪辑拼接。
将所有这些动态元素,与之前在文生图中学到的所有静态元素(主体、风格、光照、构图)组合起来,就能把一个简单的视频想法,扩展成一份信息量很大的“分镜脚本”。
比如,想生成一个“机器人在未来城市中行走”的视频。
一个初级的、几乎肯定会失败的 Prompt 可能是:A robot walking in a futuristic city.
而一个经过深思熟虑的专业级 Prompt 则可能是:
cinematic, masterpiece, 8k, photorealistic. A sleek, humanoid robot made of chrome and carbon fiber, with glowing blue optical eyes, is confidently walking through a bustling, multi-layered futuristic city street at night. The city is filled with flying vehicles whizzing by and giant, shimmering holographic advertisements. The overall style is heavily inspired by "Blade Runner 2049", with a dark, moody, and atmospheric feel. A slow, smooth 5-second tracking shot, as if filmed with a gimbal, follows the robot from its side as it walks, with subtle lens flares washing over the lens as it passes the neon signs. The ground is wet from a recent rain, reflecting the vibrant neon lights from the advertisements. The entire video is in a slight, cinematic slow motion to emphasize the robot's graceful movement and the overwhelming scale of the city.
这份 Prompt 把各个方面的要求都写清楚了:主角和场景的具体设计(机器人材质、城市元素),风格和镜头运动(《银翼杀手》风格,侧面跟踪镜头),氛围和光照(夜晚,霓虹反射与镜头眩光),节奏(电影感慢动作),以及时长(5 秒单镜头)。
当然,必须坦诚,目前的文生视频技术还处于非常早期的阶段,生成结果很不稳定:它可能把脚本执行得很好,也可能完全误解意图,生成逻辑混乱、物理错误、人物和场景互相渗透变形的失败结果。
但作为提示工程师,工作就是在这种不确定性中,寻找确定性。把 Prompt 写得更精准、更专业、更符合视频制作的规律,同时用负向提示等方式,规避模型最容易犯的错误。这是这一阶段的新挑战。
23.4 教 AI 看图说话与指代
到目前为止,这一章讲的都是生成,也就是用语言去生成图像和视频。但多模态是双向的:不仅要能“说→看”,让语言变成画面;也要能“看→说”,让机器能用语言来理解和描述它看到的画面。
现在把方向反过来:拿着刚生成出来的图片或视频,向 AI 提问,让它来分析和回答。
这项能力,在学术界有一个听起来有点拗口、让人望而生畏的名字,叫视觉语言模型(Vision-Language Models, VLMs)。名字不用在意,只需要知道:它能把一张图片和一段文字一起输入模型,让模型理解两者之间的关系。
这种交互方式带来了一批过去难以实现的应用场景。其中最基础的一个,叫做指代理解(Referring Expression Comprehension)。
这个词听起来也很学术,但它的本质很简单,就是人类从两三岁起就掌握的一个基本技能,“指指点点”。
想象一下,和朋友一起去逛一个热闹的集市,人山人海,琳琅满目。想让朋友注意到远处摊位上一个特别有意思的陶罐,会怎么说?肯定不会说“请看那个摊位上的那个东西”,因为那太模糊了,跟没说一样。多半会下意识地伸出手指,一边指,一边说:“你看,就是那个,卖风筝的那个大爷旁边,挂着一串红灯笼的那个摊位上,摆在最左边那个,上面画着一只猫的那个蓝色的陶罐。”
“卖风筝的大爷旁边”、“挂着红灯笼”、“最左边”、“画着猫”、“蓝色”,所有这些描述性的短语一条条叠加,把范围一步步缩小,最终从成百上千个物体中,准确指到那一个陶罐身上。
指代理解,就是让 AI 具备同样的能力。可以给它一张极其复杂的图片,然后用语言,而不是鼠标,去“圈出”感兴趣的特定区域或物体。
比如,上传一张家里书架的照片,上面乱七八糟地堆满了各种书、手办和杂物。然后,Prompt 不再是生成指令,而变成了“提问”或“圈定”指令。可以提问,在这张照片里,那本封面是深蓝色、上面有金色月亮图案、被一本红色的书压住了一半的书,是什么书?;可以下指令,请为照片中那个戴着草帽、坐在最高一层的路飞手办,生成一段生动的描述。;也可以直接让模型动手操作,在这张图里,把所有《三体》系列的书都用红色的方框圈出来。
这种能力看起来简单,实际用途很大。它意味着,人与 AI 的交互不再是全局性的、笼统的,而是可以精确到具体区域和物体的。语言在这里起的作用,相当于用鼠标点选目标,而且往往比鼠标更快、更灵活。
把这种“指指点点”的能力应用到企业级的文档处理领域,就是多模态应用中最贴近实际业务的话题之一,文档智能(Document Intelligence)。
无论是在工作还是生活中,每个人都要面对大量格式各异的文档。PDF 格式的、长达几十页的商业合同是一种;手机拍下来的、有点歪斜和反光的发票扫描件是一种;图文混排、充满了各种图表和箭头的研究报告是一种;格式混乱、排版五花八门的求职者简历也是一种。从这些非结构化的、主要是为了让人类阅读而设计的文档里,手动地、一个个地去提取关键信息,是一件枯燥、耗时、容易出错的工作。
而现在,可以把这些文档的“图片”(无论是扫描件、照片还是屏幕截图),直接交给多模态模型,用 Prompt 指明要提取的信息,让 AI 替人完成这些重复性的工作。这里的能力不专属于某几家海外模型,通义千问的 Qwen-VL 系列、智谱的 GLM-4V、DeepSeek 的 DeepSeek-VL 系列,都提供了图像理解能力,国内业务完全可以按需选用。
想象一下,一名财务人员,月底需要处理几百张不同公司开来的增值税发票。过去,需要一张张地打开图片,在复杂的表格里用眼睛逐个寻找“发票代码”、“发票号码”、“开票日期”、“价税合计”这几个关键字段,然后把它们一个一个地、小心翼翼地手动敲进 Excel 报销系统。这个过程,不仅慢,而且极易出错,一个数字敲错,就可能导致严重的财务问题。
现在,可以把这个流程自动化。写一个简单的脚本,遍历所有的发票图片,然后对每一张图片,都调用一次多模态模型的 API,并附上这样一段 Prompt:
这是一张中国的增值税发票图片。请从图片中提取以下四个关键信息:发票代码(通常在右上角,是一串数字),发票号码(在发票代码下方,是另一串数字),开票日期(格式为年-月-日),以及价税合计的金额(通常在表格下方,标签是“价税合计(大写)”或“Total”)。请以一个严格的 JSON 对象格式返回结果,key 必须是 "invoice_code", "invoice_number", "issue_date", "total_amount"。如果某个信息在图片中找不到,请将对应的值设为 null。
模型会“看”这张图片,凭借它在预训练阶段“见过”的大量发票样本,定位到“价税合计”那几个汉字周围的区域,然后准确地识别出那个阿拉伯数字金额,并按照要求的 JSON 格式,把所有信息返回。脚本拿到这个 JSON 之后,就可以直接写入数据库或 Excel,整个过程全自动完成。
这个过程,相当于一个不知疲倦、严格照章执行的处理工序,而 Prompt 就是它的操作手册。
编写这类用于信息提取的 Prompt,有几个关键的、能极大提升成功率的技巧。
最基本的,是提供尽可能多的定位线索。不要只说“提取总金额”,要在 Prompt 里写出目标信息周围最显著的文字线索。比如,“那个在‘总计’或‘Total’标签右边的数字”,或者“那个位于表格最下面一行、‘金额’那一列的单元格里的内容”。这些空间和文本上的线索,能极大地帮助模型进行精准定位,减少歧义。
再往前一步,是强制锁定输出格式。对于任何信息提取任务,强制要求模型以 JSON 或其他结构化格式输出,是至关重要的。这能让后续程序处理变得极其简单和可靠。甚至可以在 Prompt 里,直接给出一个带有空值的 JSON Schema 的例子,告诉它:“你就照着这个格式,把内容给我填进去就行了。”
再进一步,是进行“防御性”提示。要处理的文档格式千变万化,充满各种不规范和意外,需要像写代码时考虑各种边界情况一样,预料到各种可能的情况,并在 Prompt 里给出清晰的指导。比如:“如果发票上同时有大写和小写的总金额,请优先提取小写的阿拉伯数字。如果找不到‘价税合计’,就去找‘合计’或者‘Total Amount’。如果这些标签都找不到,就在结果中明确说明,不要自己猜测。如果图片模糊到无法识别,也请直接告诉我。”这种充满“防御性”思维的提示,能让自动化系统变得更加鲁棒,不会在遇到意外时悄无声息地崩溃或返回错误数据。
从简单的“看图说话”,到复杂的“文档信息提取”,多模态的“理解”能力,让 AI 从只能处理干净文本,扩展到能处理现实世界里杂乱的、非结构化的视觉信息。提示工程师的工作,也从偏创意的画面描述,扩展到了需要严谨逻辑和周密考虑的信息提取设计。
23.5 把视觉能力接入 Agent 循环
前面几节分别讲了如何让 AI “生成视觉”(文生图/视频)和“理解视觉”(视觉问答/文档智能)。现在把这些能力,连同前面章节中学到的 Agent 知识,也就是核心循环、System Prompt 和工具调用,组合起来,构建一个完整形态的智能体。
要构建的,是一个真正意义上,打通了“看、想、做”全链路的系统,跨模态 Agent(Cross-modal Agent)。
这个 Agent 不再只处理纯文本。通过摄像头等视觉输入,它能直接接收现实世界的信息。
回到第 20 章里反复提到的 Agent 核心循环:“感知-规划-行动”。
在之前的纯文本 Agent 里,“感知”环节能接收的只有文字,信息维度单一。而现在,它的输入可以是一张图片、一段来自摄像头的实时视频流,或者一份包含了复杂图表的 PDF 报告。
这个看起来只是增加一个输入通道的改变,会带动规划和行动环节一起升级,让 Agent 的能力产生实质性的提升。
来看一个具体的、几乎每个人都可能遇到的场景:组装一件从宜家买回来的、拥有上百个零件、说明书只有图几乎没有字的家具。
所有零件和螺丝都铺在地板上,对着说明书研究了半个小时,还是分不清哪个零件是哪个。
一个纯文本的 Agent,在这种情况下基本是无能为力的。跟它说“我正在组装宜家的‘比利’书柜,现在进行到第五步了,但我找不到那个叫‘Cam lock nut’的零件”,它最多只能上网搜一下“比利”书柜的通用安装视频,然后给一段干巴巴的文字描述,比如“它是一个圆形的、侧面有十字开口的金属件”。但地板上可能有一堆长得差不多的圆形金属件,这段描述的帮助,几乎为零。
而一个跨模态 Agent 带来的体验则完全不同。可以直接用手机,对着地板上那堆乱七八糟的零件,拍一张照片,然后用语音或文字问它:
“这是我所有的零件,说明书上说我现在需要一个‘Cam lock nut’,帮我看看是哪一个?”
这个跨模态 Agent 的工作流程值得逐步拆解。先看感知(Perception),它接收到的,不再是一段模糊的文字描述,而是一张包含了所有零件真实形状、尺寸和纹理的高分辨率照片,以及问题“哪个是‘Cam lock nut’?”。
进入规划(Planning)环节。它的核心是一个多模态模型,能同时处理图像和文本。它会先“看”这张照片,对地板上所有的物体进行分割和识别,认出哪个是木板,哪个是螺丝,哪个是螺丝刀。再根据提到的关键词“Cam lock nut”(偏心连接螺母),在包含宜家家具零件信息的知识库里检索,找到这个零件的标准图片、三维模型和功能描述。接下来是关键一步,它会将知识库里那个标准零件的视觉特征,与照片里的几十个真实零件进行“视觉匹配”,忽略那些明显不符的,最终将目标锁定在那个最符合特征的物体上,并生成一个清晰的、带有明确视觉指代的行动计划。
轮到行动(Action),Agent 执行这个计划,给出的回复,可能是这样的,它甚至可以直接在上传的图片上进行编辑和标注:
“找到了!就是我用红色圆圈圈出来的这个小东西。它是一个圆形的金属件,直径大约1.5厘米,侧面有一个十字形的凹槽,就是用螺丝刀拧的那个地方。您看看是不是这个?根据说明书,下一步您需要把它按进那块标号为‘3’的大木板侧面的圆孔里。”
这两种体验的差别非常明显:不再是拿着一段文字描述自己去对零件,而是 AI 直接指出是哪个零件、下一步该做什么。
这个宜家的例子只是众多场景中的一个。比如,一个工厂里的质检 Agent,它可以通过摄像头实时“感知”流水线上的产品,一旦“看”到有瑕疵的零件,就能立刻“规划”出停机指令,并“行动”起来,调用 API 暂停生产线。一个医疗诊断辅助 Agent,它可以“看”懂医生上传的 X 光片,结合病人的文字病历,“规划”出可能的诊断意见,并“行动”起来,高亮出病灶区域,供医生参考。
在构建这种跨模态 Agent 时,Prompt 设计,也变得更加立体和复杂。System Prompt 里,不仅要定义它的角色、使命和文本工具,还要明确地告诉它,它的“视觉能力”是什么,以及它应该如何结合视觉信息和文本信息来进行思考。
比如,在那个质检 Agent 的 System Prompt 里,可能需要加入这样的指令:
“你的主要感知输入,是来自产线摄像头的实时视频流。你需要持续不断地将视频帧与我们提供的‘标准产品图’进行比对。你的核心任务是识别出任何形状、颜色或尺寸上的偏差。一旦发现偏差,你的思考流程是:第一,立即调用
stop_conveyor_belt工具;第二,将有问题的视频帧截图,并调用save_defect_image工具进行保存;第三,生成一段描述偏差的文字报告,并调用send_alert工具,将报告和图片一起发送给人类主管。”
这个 Prompt,就是一个典型的、融合了视觉感知、逻辑规划和多工具行动的“跨模态工作流”。
对提示工程师来说,Prompt 正在从纯文本指令,扩展为包含视觉输入的指令;要驾驭的智能体,也从只处理文字,变为能同时处理文字和图像。这件事更难,但能做的事也更多。
23.6 可控性技术栈与一致性工程
23.2 讲的六要素把主体、风格、构图、光照、负向、权重写齐,能解决大部分文生图问题。但还剩一类硬需求,六要素调不出来。
工程师或设计师要的不只是"画得像",还要"长得对、摆得对、连贯对"。一本儿童绘本里同一个角色要在十页插图里摆不同姿势;一家连锁店的一百张促销海报里同款商品外观必须保持一致;一个室内设计项目要出五版配色方案,户型结构不能变。在这些场景里,靠写 Prompt 解决不了问题。Prompt 改得再细,也只是"语义控制",管不到像素层面的形状、位置和外观。
这一节处理的就是这类问题。介绍可控性技术栈,让生成结果从"看运气"变成"工程化可控"。核心思路是给模型加一个"控制信号源",让生成过程既服从文本 Prompt,又服从另一份结构化的输入。这一节按控制对象由"结构"到"形象"到"风格"的顺序讲三件事:ControlNet 把构图控制拉回模型外,IP-Adapter 让跨图人物长相一致,LoRA 与零训练方案把风格固化进模型。
ControlNet 用条件图控制构图
ControlNet 是 Lvmin Zhang 等人 2023 年 2 月发表的方法(arXiv:2302.05543,),最早作为 Stable Diffusion 的附加控制模块开源。它的核心思路很朴素,把 Stable Diffusion 的 U-Net 编码器复制一份作为"控制信号源",再通过一种叫"零卷积"(zero convolution)的结构把控制信号注入扩散模型的解码器。
零卷积是这个机制成立的关键。这种卷积层的权重在训练开始时全部为 0。这意味着 ControlNet 在训练初期对原模型"零输出",不会破坏已经训练好的 Stable Diffusion 能力。随着训练推进,权重从零开始慢慢生长,直到学到控制信号该怎样引导生成过程。这种从零起步的设计让 ControlNet 可以挂接到任意已有的 Stable Diffusion 权重上,不需要从头重训。
控制信号在 ControlNet 里以"条件图"的形式出现。一张普通图像经过不同的预处理器,会被转成不同形态的条件图。常见的有这几种。Canny 边缘图只保留物体的轮廓线;Depth 深度图把物体远近编码成灰度信息;OpenPose 人体姿态图提取出人体关键点和骨架;Segmentation 语义分割图把不同物体标记成不同色块;Normal 法线图记录物体表面朝向。Canny 控制"东西长什么样",Depth 控制"东西在哪儿前后",OpenPose 控制"人怎么站",各自对应不同的控制维度。
实际工作流分两步。第一步,把参考图交给预处理器得到条件图。比如,把一张人物的正面照丢给 OpenPose 预处理器,得到一张只剩骨架线条的图。第二步,把条件图和文本 Prompt 一起送进 ControlNet 增强后的扩散模型。Prompt 写"一个穿红色汉服的年轻女性",条件图规定"她左手叉腰、右手提灯笼、头微微上扬",两个信号一起作用,模型生成出来的图既有文本指定的内容,又有结构上的精确控制。
来看一个工程里典型的应用场景。某出版社要做一本面向小学生的科普漫画,十页插图,每页主角都是一个戴眼镜、背书包的男孩,只是姿势和场景在变。靠 Prompt 写"一个戴眼镜、背书包的小男孩"是画不出十张连贯图的,男孩每张都长不一样。但如果先用一张设计稿提取出男孩的 OpenPose 骨架图,每页的姿势都基于这张骨架生成,再叠上场景和动作的文本 Prompt,十页的角色一致性立刻就有了。
再换一个场景。一家电子产品的电商团队要做促销海报,需要在不同的节日背景下展示同一款蓝牙耳机。如果每次都靠 Prompt 写"白色椭圆形耳机,长柄",画出来的耳机造型每次都微妙地变。海报数量一多,顾客看着会觉得"这不是同一个产品"。用 ControlNet + Canny 边缘图就能解决这个问题。先画一张耳机的设计稿,提取 Canny 边缘图,每次生成海报时把这张边缘图作为条件,耳机轮廓就会被锁死,不同背景下的造型差异会显著缩小。
到这里可以看清 ControlNet 的边界。它管的是"结构稳定"——姿态、轮廓、空间布局、深度关系,写不进 Prompt 的那些硬约束。但还有一类需求 ControlNet 解决不了:一个角色跨图保持同一个人物的长相。这是下一节 IP-Adapter 要解决的问题。
想一想:ComfyUI 或 Stable Diffusion WebUI 都内置了 ControlNet 节点流程。挑一张手边的照片,提取 Canny 边缘图,再用一段文本 Prompt 生成一张“在同一姿态下换了场景”的图,看看控制效果。
IP-Adapter 用图像提示词锁定角色形象
上一节讲的 ControlNet 解决的是“姿态稳定”和“结构稳定”。跨图保持同一个角色的长相,是另一类问题。
一家服装品牌的电商团队要给一款新出的连衣裙拍 30 张模特图,要在不同的城市背景、不同的姿势、不同的光线条件下展示。如果每个姿势都新生成一次模特的脸,模特长相会微妙地漂移,30 张图看起来像 30 个不同的人。一个绘本作者要给一本 32 页的图画书画主角小明,每一页的小明都要是同一个人、穿同样的衣服。一款手游要做角色宣传图,英雄“霜羽”必须跨 10 张素材图保持一模一样的外观造型。这些场景的共同点是:需要模型在文本之外,拿到一个“参考形象”,让后续所有生成都“长得像”。
IP-Adapter(Image Prompt Adapter)是腾讯 AI Lab 2023 年 8 月发表的方法(arXiv:2308.06721,Hu Ye 等,),项目页 ip-adapter.github.io。它的核心思想是给文生图模型再加一个“图像提示词”的输入通道,让模型既能读文本、又能读图像。
IP-Adapter 的关键设计是“解耦交叉注意力”(decoupled cross-attention)。文生图模型原本用一套交叉注意力把文本特征注入到图像生成过程里。IP-Adapter 在这个基础上加了一套独立的交叉注意力,专门处理图像特征。文本特征和图像特征各自走自己的通道,互不干扰,最后在生成阶段融合。这样既保留了原模型对文本的响应能力,又增加了对图像参考的响应能力。
工程上 IP-Adapter 的吸引力在于它的轻量。整个适配器只有 2200 万参数(22M),训练好后可以冻结原 Stable Diffusion 的全部权重,只跑这个适配器。这意味着一个 IP-Adapter 权重文件可以接到任何基于同一基础模型微调过的版本上,比如社区里各种主题 LoRA 模型,都能直接用,不需要从头重训。
工作流是三步。第一步,准备一张“参考图”,通常是角色正面或 3/4 侧面的清晰肖像。第二步,把参考图丢给 IP-Adapter 配套的图像编码器(默认是 CLIP 视觉编码器),得到一组图像特征。第三步,把图像特征和文本 Prompt 一起送进 SD + IP-Adapter 的组合模型。Prompt 写“这个角色在城市街道上行走,穿着风衣”,模型生成的新图里,角色的五官、发型、配饰都会跟参考图保持一致。
来看一个具体的电商场景。一家服装品牌要做一组夏季连衣裙的模特图。品牌先拍了一张真人模特的肖像照作为“形象资产”。然后设计师用 IP-Adapter 把这张肖像锁定为参考图,每一张新生成的图都基于这张肖像,同时结合 ControlNet 的 OpenPose 条件控制模特姿势。这样出来的 30 张模特图里,同一款连衣裙的 30 种穿法中,模特的脸始终是同一个人,但姿势、背景、光线每张都不同。
还有一个 IP 形象设计的常见用法。一个茶饮品牌要推出一款新口味“紫苏葡萄”的吉祥物。设计师画了一张吉祥物的标准形象图,然后用 IP-Adapter 作为参考,批量生成这只吉祥物“在做奶茶”、“在跳舞”、“在和顾客合影”等几十个动作。这些图里吉祥物的造型一致,但场景和动作每次都不同,可以直接用在门店海报、外卖平台、活动落地页上。
IP-Adapter 的另一个隐性优势是它和 ControlNet 可以叠加。文本 Prompt 管“画什么场景”,IP-Adapter 管“角色长什么样”,ControlNet 管“角色怎么摆”,三个信号各管一件事,互不冲突。这意味着同一个角色可以同时保持长相一致、姿态可控、场景灵活。这是单一控制技术做不到的组合。
到这里 ControlNet + IP-Adapter 已经能解决“长相稳定 + 姿态稳定”。还有一类需求是“风格稳定”,所有生成的图都使用同一种画风,比如都是水彩风、都是皮克斯动画风、都是吉卜力风。这是下一节 LoRA 与零训练风格迁移要讲的内容。
想一想:在 IP-Adapter 项目页(ip-adapter.github.io)有官方的演示案例。挑一个角色参考图的例子,用 Hugging Face 上的 demo 跑一遍,看看你自己的图作为参考图时效果如何。
LoRA 与零训练风格迁移:把风格固化进模型
ControlNet 把“结构”控制住了,IP-Adapter 把“长相”控制住了。还有第三类常见需求:所有生成的图都使用同一种画风。同一本绘本全部用宫崎骏式的水彩淡彩,同一品牌的全部详情页都用赛博朋克霓虹色调,同一款游戏的所有宣传图都用皮克斯 3D 动画风格。这一类问题,要靠“风格固化”解决。
风格固化的两条主流路线。第一条是 LoRA 训练:用几十张同风格的样本训练一个小型适配器,让模型学会这种风格。第二条是零训练方案:用 InstantStyle、Style Aligned 这类方法,直接用参考图当风格种子,不训练也能迁移风格。
LoRA(Low-Rank Adaptation,低秩适应)是 Edward J. Hu 等人 2021 年 6 月在微软发表的方法(arXiv:2106.09685,)。原本是为大语言模型设计的参数高效微调技术,后来被社区发现可以无缝用在 Stable Diffusion 上做“风格 LoRA”。
LoRA 的核心思想是“冻结原模型,注入小矩阵”。它不去改原模型几十亿参数,而是在模型的某些层旁边并联两个低秩矩阵 A 和 B(典型秩为 4 到 64)。训练时只更新 A 和 B,原模型权重全部冻结。这样一来需要训练的参数从几十亿降到几百万,训练用的显存可以省 3 倍,推理时没有额外延迟。
在 SD 社区的实际工作流是:先准备 30 到 100 张同风格的图片(自己想用的画风、材质、氛围),给每张图写一段文本描述,然后训练一个 LoRA。训练时间从十几分钟到几小时不等,取决于数据量和硬件。训练好的 LoRA 是一个几十到几百 MB 的小文件,可以挂到任何同基础模型(如 SD 1.5、SDXL)的 checkpoint 上。推理时,文本 Prompt 会和这个 LoRA 一起作用,所有生成结果都会带上 LoRA 学到的风格。
来看一个具体场景。一家做国风动画的工作室,要为新项目“山海经”画大量概念图,整体风格参考北宋山水画。在 SDXL 基础上,他们训练了一个“北宋山水”LoRA,用 50 张宋画山水作品作为训练集。训练完成后,所有概念图只需要在文本 Prompt 里写“concept art of 山海经 + 北宋山水 LoRA”,出来的图都自动带有青绿山水、留白、皴法等宋画特征。这比每次都在 Prompt 里写“北宋山水风格、青绿色调、写意皴法”省事得多,而且风格一致性远高于纯 Prompt 控制。
LoRA 训练的最大优势是风格强度可控,权重从 0 到 1.5 可调。0 是完全关闭 LoRA,1 是默认强度,1.2 到 1.5 是强烈风格化。设计师可以根据需要调整权重,在“风格统一”和“创意自由度”之间找到平衡点。
但 LoRA 不是银弹。训练需要数据准备(找样本、写描述)、算力(哪怕小也要消费级 GPU 几小时)、调参(rank、学习率、训练步数都要试)。对偶尔需要换一次风格的小项目来说,训练成本不划算。这时候零训练方案更合适。
InstantStyle 是 Haofan Wang 等人 2024 年 4 月发表的方法(arXiv:2404.02733,),项目页 instantstyle.github.io;代码仓库见 instantX-research 组织(github.com/instantX-research/InstantStyle)。它的核心思路是两条。一是在特征空间里把“风格”和“内容”分开处理,假设同一空间内的风格特征可以相加减。二是把参考图特征只注入到“风格特定的模块”中,避免污染内容生成路径。
InstantStyle 不需要任何训练,运行时只要一张参考图,就能让后续生成的所有图都贴近参考图的风格。和 LoRA 比,InstantStyle 的优势是开箱即用、速度快;劣势是风格强度不如专门训练的 LoRA 强,对极端风格(比如高度抽象的艺术家)迁移效果有限。
类似的零训练方案还有 Style Aligned(Google Research,2024 年)。它通过共享注意力层让一批图保持风格一致,适合一次生成 4 到 8 张同风格图组的场景。
工程上怎么选?需要长期稳定的特定风格(比如品牌视觉资产),选 LoRA。需要快速试几种风格对比,选 InstantStyle。需要一次性出一组同风格图(4 到 8 张),选 Style Aligned。
到这里 23.6 节把“结构、形象、风格”三类可控性技术都过了一遍。下一节 23.7 解决一个更上游的问题:怎么评估生成结果到底好不好,以及在生产环境里成本怎么控。
想一想:去 Hugging Face 上搜”LoRA”,找一个社区训练的“宫崎骏风”LoRA,下载下来挂到 SDXL 上,用一段普通 Prompt(比如“a cat”)跑一张图,对比不用 LoRA 的输出,体会风格迁移的效果。
多模态评测基准:文生图与视觉理解的两套考卷
23.2 到 23.6 都在讲怎么写 Prompt、怎么控制生成。还有一个更上游的问题:生成的结果到底好不好?视觉模型看得对不对?答案是靠评测。多模态评测比纯文本评测更复杂,因为要同时评两件事:一是生成侧的质量,文生图和文生视频的图像是否清晰、是否符合文本、是否多样;二是理解侧的能力,视觉语言模型能否从图中读出正确信息、能否答对学科问题。
生成侧的经典指标。FID(Fréchet Inception Distance)把生成图和真实图的特征分布做对比,数值越低越好。CLIP Score 用 CLIP 模型算生成图与文本的语义相似度。ImageReward 和 HPSv2 这类“人类反馈学习型”指标更贴近真实的人类偏好,但需要人工标注数据训练。生成侧评测有个常见陷阱:模型可以针对 FID 做“对抗优化”,生成好看的标准图但缺乏多样性。所以现在业内常用“多指标 + 人类评估”的组合判断。
理解侧的评测基准近两年爆发式增长。最具影响力的是 MMMU,由 Xiang Yue 等人 2023 年 11 月发表(arXiv:2311.16502,),覆盖 1.15 万道大学学科级别的多模态问题,涵盖艺术与设计、商科、科学、人文社科等学科,要求模型同时具备学科知识和视觉理解能力。MMMU 很快成为业内公认的多模态理解能力基准。
但 MMMU 也有局限。研究团队 2024 年 9 月发布了升级版 MMMU-Pro(arXiv:2409.02813,Xiang Yue、Tianyu Zheng 等,),主要做了三件事。一是剔除“纯文本就能答对”的题,把视觉成分变成必需。二是把选择题选项从 4 个扩到 10 个,消除随机猜测的运气成分。三是把题目和选项全部渲染到同一张图里,强制模型做 OCR + 视觉推理。结果主流模型在 MMMU-Pro 上的得分比原版 MMMU 低 16 到 27 个百分点,揭示出“很多模型在 MMMU 上得分高,是因为它们在 OCR 之后拼凑答案,而不是真的理解视觉内容”。
其他常用的理解侧基准还有 ChartQA(专门看图表)、DocVQA(专门看文档)、OCRBench(专门测 OCR)、MMVet(综合能力)。国内的中文基准有 MMBench-CN、CMMMU、C-Eval 的多模态扩展等。
工程上用哪个基准要看任务。做通用 VLM 选型,看 MMMU 和 MMMU-Pro。做文档处理,看 DocVQA。做图表数据提取,看 ChartQA。做纯 OCR,看 OCRBench。
23.7.1 把“测什么”过了一遍。下一节 23.7.2 看“怎么便宜用”,多模态 API 的成本结构和生产化要点。
想一想:去 Papers with Code 的 MMMU 排行榜查一下最新的 Claude、GPT-4o、Gemini、Qwen-VL、InternVL 等模型的得分,理解“现在的 SOTA 模型在哪些学科上还达不到 60 分”这件事的含义。
多模态成本结构与生产化要点
多模态 API 的成本结构和纯文本 API 完全不同。文本 API 按 token 计价,多模态 API 按“分辨率档位 + 视频时长 + 视觉 token”三个维度分别计价。如果不把这套结构弄清楚,单次调用的成本可能比想象的高一个量级。
第一类是文生图,按“分辨率 + 质量档位”计价。以 OpenAI 2025 年 4 月发布的 gpt-image-1 API 为例,1024×1024 的方形图按质量分三档。低质量每张 0.011 美元,中质量 0.042 美元,高质量 0.167 美元。1024×1536 的竖图或 1536×1024 的横图,中质量每张 0.063 美元,高质量 0.25 美元。粗略估算,做一组 10 张高质量海报图,单次调用成本约 1.7 美元,加上调试过程可能跑 50 次以上,总成本超过 80 美元。
第二类是文生视频,按“秒”计价。快手 Kling 2.0、OpenAI Sora 2 等都按生成时长计费,不同档位每秒价格不同。1 分钟 1080p 高质量视频的成本往往是同等时长文本 API 的几十到上百倍。这也是文生视频目前主要用在短素材、关键镜头、广告样片这类高单价场景的原因。
第三类是视觉理解,按“图像 token”定价。GPT-4o、Gemini 1.5、Claude 等模型的视觉理解能力按输入的图像尺寸折算成 token。一张 1024×1024 的图像通常折算 765 到 1500 多个 token(取决于模型与档位),相当于处理 5 到 10 段长文本。批量图片输入时,token 量会线性增加。
生产化的关键是“漏斗式处理”,把多模态 API 的成本压下来。典型的漏斗分三档。第一档,先把图片降采样到 512×512 或更低分辨率,用便宜模型或本地小模型做粗筛,过滤掉明显无关的图。第二档,对剩下的候选图用中等质量的中端 API 做精筛,比如 gpt-image-1 中等档或 Qwen-VL-Max。第三档,对通过精筛的少数图调用高端模型做最终生成或最终决策。这样 100 张候选图处理下来,可能只有 10 张走到第二档,只有 3 张走到第三档,总成本能压到直接全量调用高端模型的十分之一。
另一个生产化要点是“批量异步”。多模态生成大多是异步任务,生成一张图可能需要几秒到几十秒。生产环境要设计成批量提交加回调通知的模式,而不是同步等待。OpenAI 的 Batch API、Kling 的批量任务接口都支持这种模式,能拿到显著折扣(通常 50% 左右)。
到这里 23.7.2 把“成本结构 + 生产化”过了一遍。下一节 23.7.3 看“还有什么新形态”,实时视频流和 3D / 世界模型。
想一想:把自己团队下一个要用多模态 API 的项目,按“输入图片平均分辨率、调用频次、是否需要高质量生成”三个维度估算一个月成本,看看和文本 API 的成本差几个量级。
实时视频流与 3D / 世界模型概览
多模态的能力边界在 2024-2026 两年扩展得很快。视频不再只是 T2V(文本生成视频)一条线,还有 V2T(视频生成文本理解)和实时视频流输入。3D 和世界模型这条新线让模型从“生成静态图像”扩展到“生成可交互的世界”。
实时视频流这条线。GPT-4o 在 2024 年底开放了视频流输入能力,Gemini 1.5 也支持视频上传和实时视频对话。模型不再是处理一段上传好的视频文件,而是处理摄像头传来的实时流,每秒几十帧,连续分析。这条线的应用场景是视频陪伴、视频问答、视频实时标注。一个典型场景是直播电商,主播在镜头前介绍商品,模型实时识别商品、读出参数、回答弹幕问题,不需要预先上传商品图片。
3D 与世界模型这条新线更前沿。DeepMind 2024 年 12 月 4 日发布了 Genie 2(“Genie 2: A Large-Scale Foundation World Model”,)。Genie 2 可由单张参考图或文生图 prompt 触发,生成可交互 3D 世界(截至发布日仍为有限研究预览),支持第一人称、第三人称、等距视角,可以模拟重力、水、烟雾、反射等物理效果,生成的画面能在 10 秒到 1 分钟内保持一致。同年晚些时候,Google 把它和 Gemini 2.0 智能体组合,开始在游戏开发和具身智能训练中试用。
NVIDIA 在 2025 年 1 月的 CES 上发布了 Cosmos 平台,定位是“物理 AI 的基础”。Cosmos 提供世界基础模型、视频标记工具、护栏模型三套组件,主要面向自动驾驶、机器人、智慧城市等需要大规模仿真训练的场景。Cosmos 把世界模型变成可商用的基础设施,而不是研究预览。
World Labs 由李飞飞联合 Justin Johnson、Christoph Lassner、Ben Mildenhall 创立,2024 年 9 月走出隐身并获 2.3 亿美元融资(a16z 等领投),估值约 10 亿美元;之后在 2025 年又从 NVIDIA、AMD、Autodesk 等处融到约 10 亿美元。World Labs 专注“空间智能”,让 AI 理解、推理、生成 3D 世界。和 Genie 2、Cosmos 不同的是,World Labs 更偏向“从 2D 图像或文本生成 3D 场景资产”,而不是“生成可交互的世界”。
这些新形态背后的根本原因是同一个架构收敛。视频流输入、世界模型、3D 生成,本质上都是把“序列数据 + 多模态基础模型”做组合。理解这条线对提示工程师的意义在于:未来要交付的多模态应用,越来越多地涉及实时流、长视频、3D 资产,这些都不是“写好一段 Prompt”就能解决的。
23.7 节把“测什么、怎么便宜用、还有什么新形态”三层问题过了一遍。下一节 23.8 进入 2025 年最热的 Agent 新形态——Computer Use 与 Browser Use。
想一想:去 deepmind.google 看 Genie 2 的官方演示视频,体会“从一张图生成可交互 3D 世界”这件事的能力边界和失败模式。
23.8 Computer Use 与 Browser Use 当代表态
23.5 讲的跨模态 Agent 是在 API 接口级别调用工具。一笔订单、一个天气查询、一段数据库写入,都有现成的 API 可以让 Agent 直接调用。但有一类任务没有 API 可调,只能靠“看屏幕、点击操作”完成。这正是 Computer Use 范式要解决的问题。
Computer Use 范式与 Anthropic 的首次推出
Computer Use 的核心机制是:模型接收屏幕截图,输出“光标移动、点击、输入文字”这类原子操作指令,外部程序把指令翻译成真实的鼠标键盘事件,操作完成后截图回到模型,形成感知、决策、操作的闭环。模型看不到任何系统内部状态,只能看到屏幕上显示的内容,就像一个坐在电脑前的人。
Anthropic 在 2024 年 10 月发布了升级版 Claude 3.5 Sonnet,同步推出 Computer Use 公共测试版。这是首个在商用 API 中提供 Computer Use 范式的前沿模型。Anthropic 自己在公告里把 Computer Use 定位为“实验性、仍显笨拙、容易出错”,但认为这条路线会快速迭代。
首批接入 Computer Use 的客户包括 Asana、Canva、Cognition、DoorDash、Replit、The Browser Company,做的都是“几十步到几百步”的多步任务。Replit 把 Computer Use 集成进了 Replit Agent 的应用评估环节:Agent 构建出 Web 应用后,用 Computer Use 模拟真人用户在浏览器里走一遍核心流程,自动发现交互卡点。
典型应用场景。一家电商运营团队要把 100 个新商品的图片、标题、SKU 信息录入 ERP。传统做法是 RPA 脚本,但 RPA 写起来脆弱,ERP 一改版,脚本就崩。Computer Use 的优势是它不依赖 UI 内部结构,依赖的是屏幕上看到的内容。同样这个场景,工程师不再写 XPath 选择器,而是给模型看 ERP 截图、说“在这个红色框里输入商品标题”,模型自己识别输入框、自己定位、自己输入。
但 Computer Use 不是银弹。Anthropic 自己在官方公告里坦承“cumbersome and error-prone”,多步操作的成功率随步数指数下降。复杂表单、长流程、需要细致视觉判断的任务,效果并不理想。这也是 Computer Use 在工业落地时通常和传统 API 自动化配合用,而不是完全替代的原因。
下一节 23.8.2 看 OpenAI Operator 与开源 Browser Use 是怎么把这条范式进一步往前推的。
想一想:去 Anthropic 官方仓库 anthropic-quickstarts 看 computer-use-demo 的 README,理解“截图、决策、操作”循环的具体代码结构。
OpenAI Operator 与 Browser Use:产品化与浏览器专注化
Anthropic 推出了 Computer Use 范式的 API,但把它产品化的是 OpenAI,把浏览器自动化做深的是开源社区。这一节看这三家的实现细节和工程权衡。
OpenAI Operator 在 2025 年 8 月已停运,相关能力整合进 ChatGPT Agent Mode;其工程经验仍被 Computer Use 范式沿用。2025 年时 OpenAI 曾以这种方式上线,但 2025 年下半年已合并到 ChatGPT 的 Agent Mode。Operator 在其产品期内不再要求开发者自己实现截图、操作循环,而是 ChatGPT 用户直接打开侧边栏,用自然语言下指令,比如“帮我订一杯星巴克拿铁送到公司”,Operator 会在自己的虚拟浏览器里走完整套流程:登录、选品、填地址、付款。
Operator 背后的模型叫 CUA(Computer-Using Agent),专门针对 Computer Use 任务做过训练。OpenAI 自己也用 OSWorld、WebArena、WebVoyager 这类 Computer Use 基准给 CUA 打分,在多个基准上超过了同期 Claude 与开源方案。CUA 与 Operator 是 2025 年消费级 Computer Use 产品形态的代表。
开源社区的 Browser Use(github.com/browser-use/browser-use,2024 年底首发,)走了另一条路。它不试图覆盖桌面 GUI 自动化,而是专门做浏览器自动化,通过 Playwright 控制 Chromium,让 LLM 看到浏览器页面的 DOM 和截图,操作的是浏览器原生的 click、type、scroll、navigate 等动作。这条路线的优势是浏览器场景天然有 DOM 这一“结构化信号”,模型除了截图还能拿到元素坐标、属性、文本,比纯截图稳得多。
类似的浏览器自动化框架还有 Stagehand(更偏研究,把 Computer Use 拆成观察、推理、动作三阶段)。Skyvern 定位企业 RPA,专门做后台系统的表单填写和数据搬运。
工程上怎么选?做消费级 Agent 产品,看 OpenAI Operator。做浏览器数据采集和测试自动化,看 Browser Use 加上 Playwright。做企业 ERP、后台系统自动化,看 Skyvern 或传统 RPA 加上 Computer Use 兜底。做研究性探索,看 Stagehand 与 OSWorld、WebArena 基准。
23.8.2 把“OpenAI 产品化、开源浏览器专注化”讲完了。下一节 23.8.3 看 Computer Use 的真实落地限制与失败模式。
想一想:去 Browser Use 的 GitHub README 看 quick start,跑一段“用 Browser Use 访问某网站提取指定信息”的代码,体会“DOM 加截图”双信号输入的实际效果。
工程落地要点与失败模式
Computer Use 在演示视频里看起来很神奇,在真实生产环境里是一类典型的“窄而强”工具。它解决一类问题,不能解决所有问题。它的失败模式往往是一堆琐碎的对不上,不是灾难性的一步崩盘。理解这些局限,比把它吹成“通用 GUI 自动化”更工程化。
真实的失败场景都很琐碎。一家 SaaS 厂商的登录页改版,把“登录”按钮从右上角挪到了页面中央,原本的训练脚本或截图参考图就失效了,Computer Use 仍在按老位置点击,登录动作失败。一个表单填到第 6 步时,弹出一个“是否订阅邮件”的复选框弹窗,Computer Use 没识别这是个弹窗,继续点下一步,结果点击穿透到了弹窗后面的元素。一个表格分页时,滚动位置偏移了一行,模型把第 5 行的数据读成了第 6 行。一个 OCR 步骤把“¥1,200”读成了“¥1200”,少了逗号,提交后系统报错。Cookie 同意弹窗挡住了“立即购买”按钮,模型没看到关键操作。这些都是日常会上线后的常见故障。
工程落地的核心原则是“窄域工具优先,通用 GUI 兜底”。优先为高频任务开发 API 工具或专用集成,只有在没有 API 的环节才用 Computer Use 兜底。一个真实可参考的分工:商品信息录入用 ERP 的 API 接口完成 90%,剩下 10% 没有 API 的步骤(如上传图片附件)才用 Computer Use。
第二个原则是“快速失败,加人工接管”。Computer Use 操作中一旦遇到截图与预期不符、连续两步都失败、关键按钮找不到,必须立即停止,把任务标记为“需人工介入”,把当前屏幕状态、已完成的步骤、卡点截图一起发给运营人员,而不是无限重试。Anthropic 在 Computer Use 文档里专门强调了“人工在环”(human-in-the-loop)的设计模式。
第三个原则是“录制加回放用于异常分支”。对稳定的核心流程,用 API 自动化跑。对每周可能变化一次的不规则流程,先用真人操作一次录制,Computer Use 在遇到这些分支时回放录制。这样 Computer Use 不是“每一步都重新决策”,而是“决策关键节点、复用录制好的固定动作”,成功率从 30% 拉到 80% 以上。
到这里 23.8 节把“范式起源、多家展开、工程落地限制”讲完了。本章从 23.1 交互通道的多模态开始,一路走到 23.8 的 Computer Use。中间经过文生图、文生视频、视觉理解、可控性技术、评测基准、成本结构、新形态,构成了工程师落地多模态应用所需的全套知识骨架。
下一章第 24 章《超越 Prompt Engineering:Context 与 Harness》会把这个多模态视角拉回到更通用的 LLM 系统设计:模型之外那一整套上下文工程和驾驭代码怎么搭。
想一想:拿一个团队里反复出 bug 的“商品录入 ERP”流程,画一张流程图,标出哪些步骤有 API、哪些步骤没有 API、哪些步骤 Computer Use 已经验证过成功率最高。然后重新设计一遍,看哪些步骤应该用 API 替代 Computer Use。
本章总结 把 Prompt 扩展到语言之外
这一章从纯文本 Prompt,进入了由图像、光影和运动组成的多模态世界:输入和输出都不再限于文字,一次交互能承载的信息量大大增加。
文生图部分讲的是:写 Prompt 的人从碰运气,变成按主体、风格、构图、光照、负向提示、权重这些要素来结构化地组织描述。生成一张满意的图片,靠的是结构精准、细节丰富的 Prompt,不是运气。
文生视频更前沿,生成结果也更不稳定。这一部分要在画面要素之外,再加上叙事、镜头和节奏:Prompt 从一张静态的画面描述,升级成一份包含了时间维度的动态“分镜脚本”。
再看反方向,让 AI 去“看”。指代理解让 Prompt 可以在复杂的视觉信息中精确定位目标;这项能力落地到文档智能这个现实场景,通过严谨的 Prompt 处理格式混乱的 PDF 和扫描件,把它们变成结构化数据。
把所有能力组合起来,就是跨模态 Agent。当 Agent 的“感知”环节接入视觉输入之后,它那经典的“感知-规划-行动”循环就有了实质性的升级:不再只基于文字推测,而是能直接观察现场情况并实时行动。
再往深处走一层。23.6 节讲的可控性技术栈(ControlNet、IP-Adapter、LoRA、InstantStyle)解决的是稳定性,让同一角色、同一风格跨多张图保持一致。23.7 节讲的评测基准(MMMU、MMMU-Pro、ChartQA、DocVQA)与生产化要点,把“多模态好不好用”从直觉判断推进到可量化的工程指标,并把成本结构(按分辨率、按秒、按 token)摆到台面上。23.8 节讲的 Computer Use 与 Browser Use 是 2025 年最热的 Agent 新形态,把“屏幕截图、决策、操作”的范式变成可商用的 API 与产品,给没有现成 API 的任务提供了最后一道兜底。
走完这一章,值得带走的,不仅仅是关于多模态 Prompt 的具体技巧和公式,更是一次思维层面的、重要的跃迁,彻底打破“语言是唯一交互界面”的惯性思维。
一个“所见即可交互”的时代正在到来。未来,人与 AI 的沟通,会越来越像人与人之间最自然、最高效的沟通,会用语言,也会用手势,会指指点点,会分享图片和视频。Prompt,也必将演变成一种更加丰富、更加立体、更加整合的“多模态指令包”。
从这个角度看,多模态扩大了提示工程师的工作范围:过去只能把想法用文字描述给 AI,现在可以直接给出图像和视频作为输入或参照。AI 也在获得理解这些输入的能力,人与 AI 之间的沟通通道,正在向人与人之间沟通的方式靠近。
参考资料
Midjourney. Updates(官方版本动态页,V6.1 于 2024 年 7 月底发布). https://www.midjourney.com/updates
Stability AI. Introducing Stable Diffusion 3.5(文中确认 SD3 Medium 于 2024 年 6 月发布、SD 3.5 于 2024 年 10 月发布). https://stability.ai/news-updates/introducing-stable-diffusion-3-5
Black Forest Labs. Announcing Black Forest Labs(FLUX.1 系列,2024 年 8 月). https://bfl.ai/announcing-black-forest-labs/
OpenAI. Introducing our latest image generation model in the API(gpt-image-1,2025 年 4 月). https://openai.com/index/image-generation-api/
ByteDance Seed. Seedream 4.0 图像创作模型(豆包 App 的文生图能力). https://seed.bytedance.com/zh/seedream4_0
AUTOMATIC1111. Stable Diffusion WebUI Features(提示词权重语法 (word:1.2) 的官方文档). https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/features
OpenAI. Sora 2 is here(2025 年 9 月 30 日发布;文中同时确认初代 Sora 于 2024 年 2 月亮相,并公告 Sora 产品自 2026 年 4 月 26 日起停运). https://openai.com/index/sora-2/
OpenAI Help Center. What to know about the Sora discontinuation(Sora 网页与 App 端于 2026 年 4 月 26 日停运,Sora API 将于 2026 年 9 月 24 日下线). https://help.openai.com/en/articles/20001152-what-to-know-about-the-sora-discontinuation
Kuaishou. Kuaishou Unveils Proprietary Video Generation Model “Kling”(官方新闻稿,2024 年 6 月). https://www.prnewswire.com/news-releases/kuaishou-unveils-proprietary-video-generation-model-kling-testing-now-available-302168757.html
可灵 AI 官方文档(视频模型能力:2.0 系列支持音频生成,视频续写最长可至 3 分钟). https://klingai.com/document-api/pricing/base/video
Wikipedia. Dream Machine (text-to-video model)(Luma Labs,2024 年 6 月上线). https://en.wikipedia.org/wiki/Dream_Machine_(text-to-video_model)
Google. State-of-the-art video and image generation with Veo 2 and Imagen 3(2024 年 12 月). https://blog.google/innovation-and-ai/models-and-research/google-labs/video-image-generation-update-december-2024/
Meta AI. Meet Movie Gen(2024 年 10 月). https://ai.meta.com/blog/movie-gen-media-foundation-models-generative-ai-video/
Qwen 团队. Qwen2.5-VL 发布博文(Qwen-VL 系列,阿里巴巴通义千问). https://qwenlm.github.io/zh/blog/qwen2.5-vl/
智谱 AI 开放平台. GLM-4V 系列模型文档. https://docs.bigmodel.cn/cn/guide/models/free/glm-4v-flash
DeepSeek. DeepSeek-VL: Towards Real-World Vision-Language Understanding(官方仓库;论文 arXiv:2403.05525). https://github.com/deepseek-ai/DeepSeek-VL
OpenAI. Sora is here(官方发布页:Sora 支持最长 20 秒、最高 1080p 的视频生成). https://openai.com/index/sora-is-here/
AITOP100. 可灵 AI 使用指南:视频生成(第三方指南:可灵生成的视频长度提供 5 秒/10 秒两种选项). https://www.aitop100.cn/infomation/details/27123.html
Lvmin Zhang, Anyi Rao, Maneesh Agrawala. Adding Conditional Control to Text-to-Image Diffusion Models. arXiv:2302.05543, 2023-02-10 v1(ControlNet,). https://arxiv.org/abs/2302.05543
Hu Ye, Jun Zhang, Sibo Liu, Xiao Han, Wei Yang. IP-Adapter: Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models. arXiv:2308.06721, 2023-08-13(腾讯 AI Lab,项目页 ip-adapter.github.io,). https://arxiv.org/abs/2308.06721
Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, Weizhu Chen. LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685, 2021-06-17(Microsoft,). https://arxiv.org/abs/2106.09685
Haofan Wang, Matteo Spinelli, Junxiong Wang, Lixiang Gong, Kunpeng Li, Xie Han, Qiang Wang. InstantStyle: Free Lunch towards Style-Preserving in Text-to-Image Generation. arXiv:2404.02733, 2024-04-03. https://arxiv.org/abs/2404.02733
Xiang Yue, Yuansheng Ni, Kai Zhang, Tianyu Zheng, et al. MMMU: A Massive Multi-discipline Multimodal Understanding and Reasoning Benchmark for Expert AGI. arXiv:2311.16502, 2023-11. https://arxiv.org/abs/2311.16502
Xiang Yue, Tianyu Zheng, et al. MMMU-Pro: A More Robust Multi-discipline Multimodal Understanding Benchmark. arXiv:2409.02813, 2024-09. https://arxiv.org/abs/2409.02813
OpenAI. API pricing for image generation models(gpt-image-1 三档价格:低、中、高 0.011、0.042、0.167 美元/1024×1024,2025-04 发布,). https://openai.com/api/pricing/
Google DeepMind. Genie 2: A Large-Scale Foundation World Model(2024-12-04 发布,). https://deepmind.google/discover/blog/genie-2-a-large-scale-foundation-world-model/
NVIDIA. Cosmos Platform for Physical AI(CES 2025-01 发布,). https://www.nvidia.com/en-us/cosmos/
Anthropic. Computer use public beta with upgraded Claude 3.5 Sonnet(2024-10,). https://www.anthropic.com/news/3-5-models-and-computer-use
OpenAI. Operator / Computer-Using Agent 产品页(2025-01 发布,). https://openai.com/index/introducing-operator/
Browser Use. 开源浏览器自动化库(github.com/browser-use/browser-use,2024-12 首发,). https://github.com/browser-use/browser-use