本课目标
掌握图像、音频等多模态输入的接入方式,理解多模态在 Agent 场景的典型用法。
客户给你发了一张产品截图:"帮我查一下这个的库存。"以前的流程:你盯着图看型号 → 手动输入查询。现在呢?模型直接"看"图,提取型号,调 Tool 查询,一气呵成。
本讲的核心就一句话:多模态不是"模型可以看图"的技术炫技,而是减少用户→系统的信息转换环节。用户本来就习惯发图,那就让模型直接理解图。
核心内容
Media 对象:一张图也是消息的一部分
Spring AI 通过 Media 对象挂载到 user 消息上,模型看到的不再只是文字:
byte[] imageBytes = resourceLoader.getResource("classpath:/product.jpg").getContentAsByteArray();
Media image = new Media(MimeTypeUtils.IMAGE_JPEG, new ByteArrayResource(imageBytes));
String desc = chatClient.prompt()
.user(u -> u.text("描述这张产品图,并判断是否适合作为电商主图")
.media(image))
.call()
.content();
URL 直接引用也可以:new Media(MimeTypeUtils.IMAGE_PNG, URI.create("https://example.com/chart.png").toURL())。
关键理解:图不是单独发给模型的——图跟文字一起组成 user 消息。模型"看到"的是"一段描述性的文字 + 一张图",然后基于两者综合理解。
四个真枪实弹的场景
- 图文客服:客户发来产品截图,模型识别型号 → 调 Tool 查库存和报价 → 综合回答。减少了客户翻型号、手动输入的环节。
- 合同/发票 OCR:拍照的合同,视觉模型提取关键字段 → 进文本 RAG 流程。比传统 OCR 靠谱在它能理解"表格的上下文"而不只是识别字符。
- 会议录音:音频模型转写 → 摘要 → 进知识库。过去开完会要人写纪要,现在模型直接出。
- 图表解读:BI 报表截图丢进去,模型解读趋势并给出建议。这是数据可视化跟 AI 结合的最短路径。
生产注意点
- 图片 token 成本远高于文字。一张 4K 手机照片可能吃掉几万个 token。先压缩到 1024px 以内再上传——质量损失可忽略,成本省一半。
- 多模态 + 工具调用是黄金组合:模型看图 → 提取信息 → 调工具 → 综合,一气呵成。
- 不是所有模型都支持多模态。换厂商先确认能力矩阵。Spring AI 的抽象层让厂商切换成本低,但"能力差距"没法靠代码填。
什么场景用图像直读,什么场景先走传统 OCR?判断标准:如果图片里除了文字还有布局、颜色、图表等"视觉信息"需要理解——用多模态。如果只是纯文字提取——OCR 更便宜且结果更可控。
动手练习
- 实现"拍图问价":上传商品图片,模型识别型号后自动调库存查询
- 对比同一张图 1024px vs 原图分辨率下的回答质量和 token 消耗