领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多更新 2024年7月20日:更新消息API层次结构图并更新支持多模态的模型名称
更新 2024年6月2日:添加一个额外的代码片段,展示如何使用新的ChatClient API。
人类通过多种数据输入模式同时处理知识。我们的学习方式、我们的经验都是多模态的。我们不仅拥有视觉、听觉,还有文本。
这些学习的基本原则由现代教育之父约翰·阿莫斯·夸美纽斯在其1658年的著作“世界图解”中阐述。
“所有自然关联的事物都应该结合起来教学”
与这些原则相反,过去,我们对机器学习的方法通常侧重于针对处理单一模态量身定制的专业模型。例如,我们开发了用于文本转语音或语音转文本等任务的音频模型,以及用于目标检测和分类等任务的计算机视觉模型。
然而,新一代的多模态大型语言模型开始涌现。例如,OpenAI 的 GPT-4o、Google 的 Vertex AI Gemini Pro 1.5、Anthropic 的 Claude3 以及开源产品 LLaVA 和 balklava 能够接受多种输入,包括文本、图像、音频和视频,并通过整合这些输入生成文本响应。
多模态大型语言模型 (LLM) 的特性**使模型能够结合其他模态(如图像、音频或视频)处理和生成文本**。
多模态是指模型同时理解和处理来自各种来源的信息的能力,包括文本、图像、音频和其他数据格式。
Spring AI 消息 API 提供了支持多模态 LLM 的所有必要抽象。
UserMessage 的**content**字段主要用作文本输入,而可选的**media**字段允许添加一个或多个不同模态的附加内容,例如图像、音频和视频。MimeType 指定模态类型。根据使用的 LLM,Media 的 data 字段可以是编码的原始媒体内容或内容的 URI。
注意:media 字段目前仅适用于用户输入消息,例如UserMessage
。
例如,我们将以下图片 (multimodal.test.png) 作为输入,并要求 LLM 解释它在图片中看到了什么。
对于大多数多模态 LLM,Spring AI 代码如下所示
byte[] imageData = new ClassPathResource("/multimodal.test.png").getContentAsByteArray();
var userMessage = new UserMessage(
"Explain what do you see in this picture?", // text content
List.of(new Media(MimeTypeUtils.IMAGE_PNG, imageData))); // image content
ChatResponse response = chatModel.call(new Prompt(List.of(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 的最新 (1.0.0-SANPSHOT 和 1.0.0-M1) 版本为以下 Chat Client 提供了多模态支持
接下来,Spring AI 将重新设计 Document API 以添加类似于 Message API 的多模态支持。
目前,AWS Bedrock 的 Titan EmbeddingClient 支持图像嵌入。需要集成其他多模态嵌入服务,以便在向量存储中允许编码、存储和搜索多模态内容。
传统上,机器学习专注于针对单个模态的专业模型。但是,随着 OpenAI 的 GPT-4 Vision 和 Google 的 Vertex AI Gemini 等创新,一个新时代已经到来。
随着我们拥抱这个多模态 AI 时代,夸美纽斯设想的相互关联的学习愿景成为现实。
Spring AI 的消息 API 促进了多模态 LLM 的集成,使开发人员能够创建创新的解决方案。通过利用这些模型,应用程序可以理解和响应各种形式的数据,为 AI 驱动的体验开辟新的可能性。