Spring AI多模态开发


人类同时跨多种数据输入模式处理知识。我们学习的方式、我们的经历都是多模式的。我们不仅有视觉,还有音频和文本。

现代教育之父约翰·阿莫斯·夸美纽斯 (John Amos Comenius) 在其 1658 年的著作《Orbis Sensualium Pictus》中阐明了这些学习的基本原则。

  • “所有自然相关的事物都应该组合起来教授”

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

然而,新一波的多模态大语言模型开始出现。示例包括 OpenAI 的 GPT-4 Vision、Google 的 Vertex AI Gemini Pro Vision、Anthropic 的 Claude3 以及开源产品 LLaVA 和 balklava 能够接受多种输入,包括文本图像、音频和视频,并通过集成这些输入来生成文本响应。

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

Spring AI - 多模态
多模态是指模型同时理解和处理来自各种来源(包括文本、图像、音频和其他数据格式)的信息的能力。
Spring AI Message API 提供了支持多模式 LLM 所需的所有抽象。


例子
例如,我们将下面的图片 ( multimodal.test.png ) 作为输入,并要求 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 = chatClient.call(new Prompt(List.of(userMessage)));

并产生如下响应:

这是一个设计简单的水果盘的图像。碗由金属制成,带有弯曲的金属丝边缘,形成开放式结构,使水果从各个角度都可见。碗里有两个黄色香蕉,上面放着一个看起来像红苹果的东西。香蕉稍微熟过头了,从香蕉皮上的棕色斑点可以看出。碗的顶部有一个金属环,可能用作携带的把手。碗放置在具有中性色背景的平坦表面上,可以清晰地看到里面的水果。

Spring AI 的最新 (1.0.0-SANPSHOT) 版本为以下聊天客户端提供多模式支持:

结论
传统上,机器学习专注于单一模式的专门模型。然而,随着 OpenAI 的 GPT-4 Vision 和 Google 的 Vertex AI Gemini 等创新,一个新时代已经到来。

随着我们拥抱这个多模式人工智能时代,夸美纽斯设想的互联学习的愿景成为现实。

Spring AI 的消息 API 促进了多模式 LLM 的集成,使开发人员能够创建创新的解决方案。通过利用这些模型,应用程序可以理解并响应各种形式的数据,从而为人工智能驱动的体验释放新的可能性。