Spring AI集成Ollama+llava:7b:实战探索大模型的多模态应用

news2024/11/28 20:42:35

前面的文章介绍的基本上都是单一数据格式的输入处理,比如输入文本输出文本的Chat模型、输入文本输出图片的图片模型、输入文本输出音频的模型等。本篇文章将介绍如何实现同时处理多种类型的数据格式?

什么是多模态

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

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

现代教育之父约翰·阿莫斯·夸美纽斯在其著作中提到;

“All things that are naturally connected ought to be taught in combination”
“所有自然联系的事物都应该结合起来教授”

但是机器学习方法通常集中在为处理单一模式而量身定制的专用模型上。与人类的学习行为是相反的,然而新一波的多模态大型语言模型开始出现。多模态大型语言模型 (LLM) 功能使模型能够与其他模态(如图像、音频或视频)一起处理和生成文本。

Spring AI 集成哪些多模态大模型

  • OpenAI
    • gpt-4-visual-preview
    • gpt-4o
  • Google Vertex AI Gemini Pro Vision
  • Anthropic Claude3
  • Ollama LLaVA
  • Ollama balklava

Spring AI 多模态抽象框架

Spring AI Message API 提供了支持多模态的所有必要抽象,抽象架构如下;

image.png

消息 Messagecontent 字段主要用作文本输入,而可选 media 字段允许添加一个或多个不同模式的附加内容,例如图像、音频和视频。指定 MimeType 模态类型。根据使用LLMs的内容,媒体的数据字段可以是编码的原始媒体内容,也可以是内容的 URI。

但是需要注意:media 字段目前仅适用于用户输入消息(例如, UserMessage

Spring AI 接入Ollama 实现多模态示例

目前OpenAI 大模型仅 gpt-4-visual-previewgpt-4o 两个模型支持多模态,本人目前没有办法获取到两个模型可使用的OpenAI Key,所有使用替代的方案,使用Ollama跑一个本地 LLaVA 大模型进行代码演示。 请参考[# 10. Ollama:本地部署大模型 + LobeChat:聊天界面 = 自己的ChatGPT] 第一部分即可。

引入ollama依赖包

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>

配置

spring:
  ai:
    ollama:
      base-url: http://localhost:11434 # ollama地址
      chat:
        model: llava:7b #指定模型名称

代码实战

实现功能:让大模型描述一下图片的内容是什么?

package org.ivy.controller;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.messages.Media;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.MimeTypeUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class MultiModalityController {

    @Value("classpath:img.png")
    private org.springframework.core.io.Resource imageResource;

    private final OllamaChatModel ollamaChatModel;

    public MultiModalityController(OllamaChatModel ollamaChatModel) {
        this.ollamaChatModel = ollamaChatModel;
    }

    @GetMapping("multi")
    public String multiModality(@RequestParam(defaultValue = "Explain what do you see on this picture?") String text) {
        ChatClient chatClient = ChatClient.builder(ollamaChatModel).build();
        var userMessage = new UserMessage(text, List.of(new Media(MimeTypeUtils.IMAGE_PNG, imageResource)));
        return chatClient.prompt(new Prompt(List.of(userMessage)))
                .call()
                .content();
    }

}

验证效果

image.png

由于使用本地机器运行的大模型,电脑配置原因返回结果比较慢。

示例代码

[github.com/fangjieDevp…]

总结

本文简单的对大模型的多模态进行认识,并使用Spring AI 接入 Ollama 调用 llava:7b 模型,对多模态进行实现并演示。下一篇文章将讲解如何在本地部署一个属于自己的大模型。

在这里插入图片描述
如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2060165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初识指针の学习笔记

目录 1>>前言 2>>内存和地址 3>>指针变量和地址 3.1取地址和解引用 3.2>>指针类型是什么&#xff1f; 3.3>>指针变量占用空间 4>>指针变量类型的意义 4.1>>指针的解引用 4.2>>指针-整数 5>>关于指针的运算 5…

「OC」暑假第三周——天气预报的仿写

「OC」暑假第三周——天气预报的仿写 文章目录 「OC」暑假第三周——天气预报的仿写写在前面预览UItableView嵌套UICollectionView毛玻璃效果SVGKit库的使用简单的动画实现主页之中详情页的编写总结 写在前面 天气预报作为暑假最后的一个项目&#xff0c;算得上我觉得有点用的…

西门子PLC跟汇川H5U系列PLC标签方式以太网通讯的快速实现方案

PLC通讯智能网关IGT-DSER模块支持汇川、西门子、三菱、欧姆龙、罗克韦尔AB、GE等各种品牌的PLC之间通讯&#xff0c;同时也支持PLC与Modbus协议的变频器、智能仪表等设备通讯。网关有多个网口、串口&#xff0c;也可选择WIFI无线通讯。PLC内无需编程开发&#xff0c;在智能网关…

金九银十秋招大模型岗位攻略来了,已收offer,非常详细收藏我这一篇就够了

秋季招聘季节是求职者寻找新机会的重要时期&#xff0c;特别是对于想要进入大模型领域的专业人士来说。以下是一份大模型学习攻略和应聘攻略&#xff0c;帮助你为秋季招聘做好准备&#xff1a; 大模型学习攻略 理解大模型基础 学习AI基础&#xff1a;了解机器学习、深度学习的…

[数据集][目标检测]扳手检测数据集VOC+YOLO格式1042张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1042 标注数量(xml文件个数)&#xff1a;1042 标注数量(txt文件个数)&#xff1a;1042 标注…

论文阅读1 Scaling Synthetic Data Creation with 1,000,000,000 Personas

Scaling Synthetic Data Creation with 1,000,000,000 Personas 链接&#xff1a;https://github.com/tencent-ailab/persona-hub/ 文章目录 Scaling Synthetic Data Creation with 1,000,000,000 Personas1. 摘要2. 背景2.1 什么是数据合成2.2 为什么需要数据合成2.3 10亿种人…

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署 什么是RAG&#xff1a; 我能把这个过程理解为Kimi.ai每次都能列出的一大堆网页参考资料吗&#xff1f;Kimi学了这些资料以后&#xff0c;根据这里面的信息综…

支持2.4G频秒变符合GB42590的标准的飞行器【无人机GB42590发射端】

使用方法: 放在飞机 上&#xff0c;按键那一面需要朝上对着天空(因为GPS陶瓷天线在按键面)&#xff0c;支持基本ID&#xff0c;向量和系统包&#xff0c;电池容量240mAH充电1小时&#xff0c;使用时间大概2小时。 1.长按3秒开关机 2.开机红灯慢闪&#xff0c;只发射基本ID数据…

Spring核心思想讲解之控制反转(IOC)

控制反转概述 控制反转实现方式 XML方式 方式一 方式二 方式三 注解方式 第一步 第二步 第三步 依赖注入&#xff08;DI&#xff09;实现方式 XML方式 手动注入 set注入 构造器注入 自动注入 set注入 构造方法注入 注解方式 方式一&#xff1a; 方式二&…

IO流【详解】

一、IO流 1.1 IO说明 Input 输入 Output 输出 流: 例如水流,流量,即流是指数据流动传输 IO流就是指数据的输入输出 例如: 将磁盘中的小说.txt,读取到java代码中 ---> 输入 例如: 从java代码中,写到磁盘中创建出文件,并向文件中写入内容 --> 输出 1.2 IO体系 IO 字节…

新手也能快速上手!免费的四款视频剪辑神器大揭秘

现在好用的剪辑工具好的的呀&#xff0c;只要有玩抖音、快手和一些视频为主的社交平台&#xff0c;大家都会尝试用一些剪辑工具自己动手剪辑&#xff0c;在近几年视频的热度之下这类工具做得也越来越专业了&#xff0c;当然其中也还是会有既专业又免费实用的产品&#xff0c;今…

教程:一步步教你构建基于Python Flask和Vue的智慧书析K-means分析系统

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

20240821给飞凌OK3588-C的核心板刷Rockchip原厂的Buildroot并挂载1TB的exFAT格式的TF卡

fdisk -l df -h df -t df -T mount 20240821给飞凌OK3588-C的核心板刷Rockchip原厂的Buildroot并挂载1TB的exFAT格式的TF卡 2024/8/21 18:06 【切记&#xff0c;对于Rockchip原厂的Buildroot&#xff0c;如果你没有针对性的适配DTS&#xff1a;修改其中的GPIO口供电&#xff0c…

分析AAC raw data

分析AAC raw data 本文的主要目标是分析说明AAC解码器如何处理RAW AAC数据。通过拆解理解AAC解码器处理raw aac的关键点&#xff0c;通过数据分析和代码阅读&#xff0c;来说明这个细节&#xff0c;某些细微之处尚需深入探索&#xff0c;留待后续更为详尽的阐述。 几种格式介…

C语言 ——— 常见的动态内存错误(上篇)

对NULL指针的解引用操作 代码演示&#xff1a; int* ptr (int*)malloc(sizeof(int) * INT_MAX); *ptr 10; free(ptr); 代码解析&#xff1a; 使用 malloc 函数动态开辟 sizeof(int)*INT_MAX 这么多个字节的空间&#xff0c;而 INT_MAX 是整型类型的最大值&#xff0c;那么…

优化WAN流量:如何通过调整系统设置降低企业网络成本

一、症状与问题背景 当电脑显示空闲状态时&#xff0c;如果满足以下条件&#xff0c;第二拨号链接可能会意外激活&#xff1a; 您正在使用基于 Microsoft Windows 的计算机&#xff0c;该计算机连接到远程网络并且是 Active Directory 域服务 (AD DS) 域的成员。 您通过二级…

jpg怎么转换成pdf?6个简单方法,实现jpg转换成pdf

你是否也曾想将jpg图片转换为pdf格式文档呢&#xff1f;亦或者在处理文档或制作报告时&#xff0c;不知道怎么才能更快地将多张图片整合成一个pdf文件呢&#xff1f;如果你正在寻找简单快速的方法&#xff0c;又有哪些工具可以帮助您完成图片转pdf呢&#xff1f;别着急&#xf…

Windows服务器部署基于【若依管理系统】开发的项目

&#x1f3af;导读&#xff1a;本文档详述了基于前后端分离的若依系统&#xff08;版本3.8.8&#xff09;在Windows环境下从零开始的部署流程&#xff0c;包括JDK、Redis、MySQL等环境的搭建与配置。前端部署涉及Vue项目构建、图片优化及利用Nginx托管&#xff1b;而后端则涵盖…

猫咪掉毛严重如何清理?希喂,霍尼韦尔宠物空气净化器实测分享

随着养宠人群的增多&#xff0c;市场关注到铲屎官们的需要&#xff0c;带来了新的科技产品——宠物空气净化器。宠物空气净化器是在普通空气净化器基础上&#xff0c;调整服务对象&#xff0c;为吸附宠物毛发而设计的。不少消费者被它的功能所吸引&#xff0c;打算购入使用。然…

带你速通C语言——函数(11)

在 C 语言中&#xff0c;函数是组织代码的重要方式&#xff0c;它们允许我们将代码划分为可重用的模块&#xff0c;每个模块执行特定的任务。函数的使用有助于代码的清晰性和维护性&#xff0c;也是编写结构化程序的基本构建块之一。 1.函数的基本组成 在 C 中定义函数时&…