多模态 API

原文:https://docs.spring.io/spring-ai/reference/api/multimodality.html

“所有自然联系的事物都应该结合起来教授”——约翰·阿莫斯·夸美纽斯,《Orbis Sensualium Pictus》,1658 年

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

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

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

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

Spring AI 多模态

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

Spring AI Message API 提供了支持多模式 LLM 所需的所有抽象。

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

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

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

对于大多数多模式 LLM,Spring AI 代码看起来像这样:

var imageResource = new ClassPathResource("/multimodal.test.png");

var userMessage = new UserMessage(
    "Explain what do you see in this picture?",  // content
    new Media(MimeTypeUtils.IMAGE_PNG, this.imageResource));  // media

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

或者使用流式的 ChatClient API:

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 (e.g. GPT-4o models)
  • Mistral AI (e.g. Mistral Pixtral models)
  • Ollama (e.g. LLaVA, BakLLaVA, Llama3.2 models)
  • OpenAI (e.g. GPT-4 and GPT-4o models)
  • Vertex AI Gemini (e.g. gemini-1.5-pro-001, gemini-1.5-flash-001 models)
作者:Jeebiz  创建时间:2025-08-03 12:11
最后编辑:Jeebiz  更新时间:2025-08-08 00:47