侧边栏壁纸
博主头像
AI中文站

开拓MCP洪荒时代

  • 累计撰写 28 篇文章
  • 累计创建 3 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

SpringAI-多模态API

"所有自然关联的事物都应当被结合起来教授" - 约翰·阿摩司·夸美纽斯,《世界图解》,1658

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

与这些原则相反,机器学习传统上通常专注于处理单一模态的专用模型。例如:

  • 开发音频模型用于文本转语音或语音转文本

  • 开发计算机视觉模型用于目标检测和分类

然而,新一代多模态大语言模型正在兴起。代表性模型包括:

  • OpenAI 的 GPT-4o

  • 谷歌的 Vertex AI Gemini 1.5

  • Anthropic 的 Claude3

  • 开源模型 Llama3.2、LLaVA 和 BakLLaVA

这些模型能够接受多种输入(包括文本、图像、音频和视频),并通过整合这些输入生成文本响应。

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

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

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

  • UserMessagecontent 字段主要用于文本输入

  • 可选的 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(
    "解释你在这张图片中看到了什么?", // 文本内容
    new Media(MimeTypeUtils.IMAGE_PNG, imageResource) // 媒体内容
);

// 调用模型获取响应
ChatResponse response = chatModel.call(new Prompt(userMessage));

或使用流式 ChatClient API:

String response = ChatClient.create(chatModel).prompt()
    .user(u -> u
        .text("解释你在这张图片中看到了什么?") // 文本
        .media(MimeTypeUtils.IMAGE_PNG, new ClassPathResource("/multimodal.test.png")) // 图片
    )
    .call()
    .content(); // 获取响应文本

模型可能返回如下响应:

这是一个水果碗的图片,设计简洁。碗由金属制成,带有弯曲的金属丝边缘,形成开放式结构,可以从各个角度看到水果。碗内有两根黄色香蕉覆盖在一个红苹果上。香蕉皮上的棕色斑点表明它们略微过熟。碗顶部有一个金属环,可能用作提手。碗放置在一个平面上,中性色背景清晰地展现了碗内的水果。

Spring AI 支持的多模态模型

  • Anthropic Claude 3

  • AWS Bedrock Converse

  • Azure OpenAI (如 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 模型)

0

评论区