09_Spring AI 干货笔记之多模态

一、多模态 API

"所有自然相连的事物都应结合起来教授" - 约翰·阿摩司·康米纽斯,《世界图解》,1658年

人类通过多种数据输入模式同时处理知识。我们的学习方式和经历都是多模态的。我们不仅仅有视觉、听觉或文本。

与这些原理相反,机器学习过去常常专注于处理单一模态的专用模型。例如,我们开发了用于文本转语音或语音转文本任务的音频模型,以及用于目标检测和分类等任务的计算机视觉模型。

然而,新一代多模态大语言模型开始涌现。例如 OpenAI 的 GPT-4o、Google 的 Vertex AI Gemini 1.5、Anthropic 的 Claude3,以及开源产品 Llama3.2、LLaVA 和 BakLLaVA,它们能够接受多种输入(包括文本、图像、音频和视频),并通过整合这些输入来生成文本响应。

多模态大语言模型特性使模型能够处理文本并结合图像、音频或视频等其他模态生成文本。

二、Spring AI 多模态

多模态指的是模型同时理解和处理来自不同来源信息的能力,这些来源包括文本、图像、音频及其他数据格式。

Spring AI 消息 API 提供了支持多模态 LLM 所需的所有抽象。

UserMessage 的 content 字段主要用于文本输入,而可选的 media 字段允许添加一个或多个不同模态的附加内容,例如图像、音频和视频。MimeType 指定了模态类型。根据所使用的 LLM,Media 数据字段可以是作为 Resource 对象的原始媒体内容,也可以是指向内容的 URI。

目前 media 字段仅适用于用户输入消息(例如 UserMessage)。它对系统消息没有意义。包含 LLM 响应的 AssistantMessage 仅提供文本内容。要生成非文本媒体输出,您应使用专用的单模态模型。

例如,我们可以将以下图片(multimodal.test.png)作为输入,并要求 LLM 解释它所看到的内容。

对于大多数多模态 LLM,Spring AI 代码大致如下所示:

java 复制代码
var imageResource = new ClassPathResource("/multimodal.test.png");

var userMessage = UserMessage.builder()
    .text("Explain what do you see in this picture?") // 文本内容
    .media(new Media(MimeTypeUtils.IMAGE_PNG, this.imageResource)) // 媒体内容
    .build();

ChatResponse response = chatModel.call(new Prompt(this.userMessage));

或者使用流式的 ChatClient API:

java 复制代码
String response = ChatClient.create(chatModel).prompt()
		.user(u -> u.text("Explain what do you see on this picture?")
				    .media(MimeTypeUtils.IMAGE_PNG, new ClassPathResource("/multimodal.test.png")))
		.call()
		.content();

并产生类似以下的响应:

这是一个带有简单设计的水果碗图片。碗由金属制成,带有弯曲的金属丝边缘,形成了一个开放结构,使得水果从各个角度都可见。碗内有两根黄色的香蕉,放在一个似乎是红苹果的上面。香蕉略微过熟,果皮上的棕色斑点表明了这一点。碗的顶部有一个金属环,可能用作提手。碗放置在一个平坦的表面上,背景为中性色,清晰地展示了碗内的水果。

Spring AI 为以下对话模型提供多模态支持:

  • Anthropic Claude 3

  • AWS Bedrock Converse

  • Azure Open AI(例如 GPT-4o 模型)

  • Mistral AI(例如 Mistral Pixtral 模型)

  • Ollama(例如 LLaVA, BakLLaVA, Llama3.2 模型)

  • OpenAI(例如 GPT-4 和 GPT-4o 模型)

  • Vertex AI Gemini(例如 gemini-1.5-pro-001, gemini-1.5-flash-001 模型)

相关推荐
安徽正LU o561-6o623o710 小时前
露-鼠兔解剖台 鼠兔二用解剖台 无干扰恒温加热鼠台 无干扰恒温加热兔台
人工智能
工藤学编程10 小时前
零基础学AI大模型之RunnableBranch
人工智能
全栈小510 小时前
【AI应用】Tbox神仙用法,一句话描述创作效果还不错的应用,随机菜单生成开发,一起来看看是如何通过多智能体协同开发
人工智能·tbox·智能体协同·百宝箱
bylander10 小时前
【论文阅读】VTP:Towards Scalable Pre-training of Visual Tokenizers for Generation
论文阅读·图像处理·大模型
字节数据平台10 小时前
火山引擎发布“企业认知引擎”,驱动企业从“数据驱动”迈向“认知驱动”
人工智能
Java后端的Ai之路10 小时前
【分析式AI】-OOF预测学习指南
人工智能·机器学习·oof预测
roman_日积跬步-终至千里10 小时前
【人工智能导论】09-学习-注意力机制与Transformer:用注意力机制动态关注,用Transformer并行计算,用GPT理解生成语言
人工智能·学习·transformer
大、男人10 小时前
FastMCP高级特性之Message Handling
人工智能·python·mcp·fastmcp
b***251110 小时前
汽车圆柱电池气动点焊机:串并联组合自动化焊接的核心驱动力
大数据·人工智能
kkk1234410 小时前
2025 大模型的发展
人工智能·深度学习·机器学习