当前位置: 首页 > news >正文

Spring AI:多模态 AI 大模型 - 教程

历史文章

Spring AI:对接DeepSeek实战
Spring AI:对接官方 DeepSeek-R1 模型 —— 实现推理效果
Spring AI:ChatClient实现对话效果
Spring AI:使用 Advisor 组件 - 打印请求大模型出入参日志
Spring AI:ChatMemory 实现聊天记忆功能
Spring AI:本地安装 Ollama 并运行 Qwen3 模型
Spring AI:提示词工程
Spring AI:提示词工程 - Prompt 角色分类(系统角色与用户角色)
Spring AI:基于 “助手角色” 消息实现聊天记忆功能
Spring AI:结构化输出 - 大模型响应内容
Spring AI:Docker 安装 Cassandra 5.x(限制内存占用)&& CQL
Spring AI:整合 Cassandra - 实现聊天消息持久化
在这里插入图片描述

什么是多模态?

多模态(Multimodal) AI 大模型的是指能够处理和理解多种不同类型(模态)数据的人工智能模型。 这些模型能够从不同来源的输入中获取信息,并通过综合这些信息来做出更全面、更准确的判断和预测。常见的模态包括:

  • 文本: 书面或口头语言。

  • 图像: 照片、图画、图标等。

  • 音频: 声音、音乐、语音。

  • 视频: 动态图像序列,通常包含音频。

多模态的 AI 大模型能够将这些不同模态的数据进行融合处理。例如,能够理解图像中的内容并结合文本信息生成描述,或者结合语音和图像来识别视频中的对象或场景。

核心能力与特点

多模态 AI 大模型的核心能力与特点如下:

1、跨模态理解与关联: 这是最核心的能力。模型不仅能理解每种模态内部的信息,更能理解不同模态信息之间的关联。例如:

2、跨模态生成: 模型可以基于一种模态的信息,生成另一种模态的内容。例如:

3、信息互补与增强: 不同模态的信息可以相互补充,提供更全面、更准确的理解。例如,一段视频配上文字解说,理解起来比单独看视频或单独看文字更清晰。多模态模型能自动利用这种互补性。

4、更接近人类感知世界的方式: 人类天生就是多模态的。我们通过眼睛看(图像/视频)、耳朵听(音频)、嘴巴说和阅读(文本)等多种方式来感知和理解世界。多模态大模型的目标就是模拟这种更自然、更全面的感知和理解方式。

挑选多模态 AI 大模型

为了能够上手感受一下,我们登录到阿里百炼 的 “模型广场” 中,找一款多模态 AI 大模型,我这里挑选的是 “全模态 | 通义千问-Omni-Turbo” 模型,如下图所示,Qwen-Omni 系列模型支持输入多种模态的数据,包括视频、音频、图片、文本,并输出音频与文本,而且它兼容 OpenAI 接口调用方式。

在这里插入图片描述
点击 “API参考”,查看模型文档,复制其模型名称 qwen-omni-turbo :

在这里插入图片描述

配置模型

此配置对接的是阿里的百练大模型 (支持openai )

增加依赖

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId></dependency>

编辑 application.yml 文件,编辑 openai 节点下的模块名称,将其修改为 qwen-omni-turbo :

spring:
ai:
openai:
base-url: https://dashscope.aliyuncs.com/compatible-mode # OpenAI 服务的访问地址,这里使用的是阿里云百炼
api-key: sk-=xxxxxxxxxxxxxx  #API Key, 该成你自己的
chat:
options:
model: qwen-omni-turbo # 模型名称
temperature: 0.7 # 温度值

在这里插入图片描述

添加一张测试图片

为了等会能够测试多模态大模型,在 /resources 资源目录下,新建一个 /images 文件夹,并添加一张图片
在这里插入图片描述

在这里插入图片描述

新增 Controller 控制器

@RestController
@RequestMapping("/v9/ai")
public class MultimodalityController {
@Resource
private OpenAiChatModel chatModel;
/**
* 流式对话
* @param message
* @return
*/
@GetMapping(value = "/generateStream", produces = "text/html;charset=utf-8")
public Flux<String> generateStream(@RequestParam(value = "message") String message) {// 1. 创建媒体资源Media image = new Media(MimeTypeUtils.IMAGE_PNG,new ClassPathResource("/images/img.png"));// 2. 附加选项(可选),如温度值等等Map<String, Object> metadata = new HashMap<>();metadata.put("temperature", 0.7);// 3. 构建多模态消息UserMessage userMessage = UserMessage.builder().text(message).media(image).metadata(metadata).build();// 4. 构建提示词Prompt prompt = new Prompt(List.of(userMessage));// 5. 流式调用return chatModel.stream(prompt).mapNotNull(chatResponse -> {Generation generation = chatResponse.getResult();return generation.getOutput().getText();});}}

解释一下上述代码的处理流程:

  • 创建一个 Media 媒体资源,声明其类型为 png 图片,并指定资源所在路径;
  • 创建一个附加选项 Map 字典,比如指定 temperature 温度值,这是可选的,可以不添加任何参数;
  • 构建 UserMessage 多模态消息,包括提示词、输入的图片等等;
  • 构建 Prompt 构建提示词;
  • 流式调用 qwen-omni-turbo 模型,注意,此模型只支持流式调用,不支持同步调用;

测试一下
完成上述工作后,重启后端项目,浏览器请求如下地址,询问 AI 大模型 “图片里面的是什么东西”:

http://localhost:8080/v9/ai/generateStream?message=图片里面是什么东西

如下图所示, qwen-omni-turbo 多模态模型成功识别出了图片
在这里插入图片描述

http://www.rkmt.cn/news/188997.html

相关文章:

  • Java 线程生命周期详解
  • 12.31每日总结
  • 设备指令下发设计模式
  • Android 命令行打包 APK 完全指南|极速构建不求人
  • Keil单片机编程软件常见文件介绍
  • 安卓 手机直接去手机wifi设置页面的方法
  • 本地项目上传 GitHub 私有库:GitHub CLI 与 Git 原生双方案详解
  • Markdown 编辑器技术调研
  • [STM32C0] 【STM32C092RC 测评】ADC
  • 掌控模型生态:ZGI 多模型网关,拒绝被单一供应商锁定
  • Linux库的原理与ELF文件
  • Java毕设选题推荐:基于SpringBoot社区医疗预约挂号平台的设计与实现基于SpringBoot + Vue的医院预约挂号系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • C语言随堂笔记-10
  • [STM32C0] 【STM32C092RC 测评】+ 03 板载串口2输出测试
  • 2026最新品牌环保板材厂商top10推荐!山东等地优质公司及生产厂家选择指南,ENF级环保与创新服务双优品牌推荐 - 全局中转站
  • 2000-2024年各省、地级市银行竞争度HHI数据
  • Dify MCP 接入踩坑实录:notifications/initialized 的终极解法
  • 还搞不懂http请求方法?一篇讲清所有用法和坑点!
  • 深入解析:机器学习在验证码识别中的应用实践
  • AdStyle:LLM自我进化,生成攻击 Prompt
  • 中美AI较量
  • 海曦技术加持!AI梦想家一键生成职业梦想,点亮班会高光时刻
  • 【C语言】struct结构体内存对齐和位段(超详解) - 教程
  • 火狐浏览器报错:无法加载您的 Firefox 配置文件?一行命令 + 删除,立刻修好
  • 题解:P14920 [GESP202512 六级] 道具商店
  • 2025.12.31日21:10-fastidious难取悦的, 挑剔的, 苛求的, (微生物等)需要复杂营养地
  • 《程序员修炼之道 - 从小工到专家》阅读笔记8
  • 【预测转矩控制三相感应电动机】实现三相感应电动机(MIT)预测转矩控制(PTC),描述了用于为变频器提供转矩参考值的控制器计算方法研究附Matlab代码、Simulink仿真
  • 《程序员修炼之道 - 从小工到专家》阅读笔记9
  • 雷达液位计工作原理是什么?(脉冲雷达 vs FMCW 雷达)