Spring AI多模态
- 多模态是指模型同时理解和处理来自各种来源的信息的能力,包括文本、图像、音频和其他数据格式;
- 多模式大语言模型(LLM)特征使模型能够结合其他模态(如图像、音频或视频)来处理和生成文本;
- Spring Al 多模态API提供了所有必要的统一抽象和代码封装来支持多模式LLM;
@Resource 1usage
private Chatclient chatclient;
@RequestMapping(value = "/ai/multi")
public Object multi(string msg,string imageUrl){
UserMessage userMessage = new userMessage(msg, List.of(new Media(MimeTypeUtils.IMAGE_PNG, imageUrl)));
ChatResponse response = chatclient,call(new Prompt(userMessage, OpenAichatOptions.builder()
.withModel(openAiApi.chatModel.GPT_4_VISION_PREVIEW.getValue())
.build()));
return response.getResult().get0utput().getcontent();
}
大模型工具Ollama
官网:https://ollama.com/
Ollama是一个用于部署和运行各种开源大模型的工具;它能够帮助用户快速在本地运行各种大模型,极大地简化了大模型在本地运行的过程。用户通过执行几条命令就能在本地运行开源大模型,如Llama 2等;综上,Ollama是一个大模型部署运行工具,在该工具里面可以部署运行各种大模型,方便开发者在本地搭建一套大模型运行环境
一、首先从官网找大模型
二、执行相关大模型命令
三、成功之后,就可以问问题
Spring Al代码测试
- 默认Ollama api会监听11434端口,
- 可以使用命令进行查看netstat -ano | findstr 11434
Spring AI使用Ollama
项目配置
spring:
application:
name: spring-ai-05-ollama
ai:
ollama:
base-url: http://localhost:11434
chat:
option:
model:qwen:0.5b-chat
项目代码
@Resource
private OllamaChatClient ollamaChatClient;
@RequestMapping(value = "/ai/ollama")
public Object ollama(@RequestParam(value = "msg") string msg){
String called =ollamaChatilient.call(msg);
System.out.println(called);
return called;
}
@RequestMapping(value = "/ai/ollama")
public string ollama(@RequestParam(value = "msg") string msg){
ChatResponse chatResponse = ollamachatclient.call(new Prompt(msg) OllamaOptions.create()
.withModel("qwen:0.5b-chat")//使用哪个大模型
.withTemperature(0.4F))); //温度越高,回答得比较有创新性,但是准确率会下降、温度越低,回答的准确率会更好);
System.out.println(chatResponse.getResult().get0utput());
return chatResponse.getResult().getOutput();
}
Ollama的Web&Desktop
- Ollama的Web & Desktop非常多,比较流行的是 Open WebUl;
- Open WebUl Github: https://github.com/open-webui/open-webui
- Open WebUl 官网:https://www.openwebui.com/>
- Open WebUl是一个可扩展、功能丰富、用户友好的自托管WebUl,它支持完全离线操作,支持各种LLM(Large Language Model)运行程序,包括Ollama和OpenAl兼容的API;
搭建部署Open WebUI
搭建部署Open WebUl有两种方式:
1、Docker方式;(官方推荐的方式)
2、源码部署安装方式;(文档:https://docs.openwebui.com/getting-started/)
Window下使用Docker推荐使用Docker Desktop;
Docker Desktop是一款适用于Windows操作系统的桌面应用,它为开发人员提供了一个界面化操作Docker的环境,以便在本地环境中轻松创建、构建和运行Docker容器
Windows系统下Docker Desktop的安装
官网下载安装包:https://www.docker.com/products/docker-desktop
下载、安装比较简单,这里不再赘述
需要重启电脑
选择继续不登录,需要等待一段时间,出现docker界面
在Docker中运行Open WebUI
win+R输入cmd,黑窗口执行下边命令
docker run -d -p 3000:8080 --add-host=host.dockerinternal:host-gateway -v D:\devopen-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
这是一个 docker run 命令,用于启动一个新的 Docker 容器,下面是这个命令各个部分的解释:docker run:这是 Docker 的命令,用于从指定的镜像启动一个新的容器;
-d:表示在“分离”模式下运行容器,即后台运行;
-p3000:8080:端口映射,表示将宿主机的3000端口映射到容器的8080端口,当你访问宿主机的3000端口时,实际上会访问容器内的8080端口;
--add-host=host.dockerinternal:host-gateway:这个选项向容器的/etc/hosts 文件中添加一条记录,这通常用于让容器能够解析到宿主机的名称,并且将其IP地址设置为宿主机的网关地址,这在某些网络配置中很有用,尤其是当容器需要知道宿主机的地址时;
-v D:devopen-webui;/app/backend/data:卷挂载,这表示将宿主机的 D:devopen-webui 目录挂载到容器内的 /app/backend/data 目录这样,容器和宿主机之间可以共享这个目录中的数据;
--name open-webui:为容器指定一个名称,这里是 open-webui;
--restart always:这个选项告诉 Docker 在容器退出时总是自动重启它,无论容器是因为何种原因退出,它都会自动重启;
ghcr.io/open-webui/open-webui:main:这是你要运行的 Docker镜像的完整名称,ghcrio是 GitHub Container Registry 的地址,openwebui/open-webui 是镜像的仓库和名称,main是标签,通常表示该镜像的最新或主分支版本
Docker中运行Open WebUI拉取镜像
下载过程中如果出现进度条不动的情况,按一下回车
下载完成之后,在docker界面images中会出现Open WebUI的镜像
黑窗口doker ps查看容器,也可以在Docker界面Containers里查看正在Running
访问Open WebUI页面http://localhost:3000,但是容器运行的时候有点慢,需要等一会,发现访问成功
注册账号,完成登录,会出现下边的界面,选择模型之后,就可以进行交流
Open WebUI测试图像大模型
注意:有的大模型无法访问外部链接或图片,需要切换参数比较大的大模型
从Ollama官网找下载,在docker环境下执行就可以了,还是上边的流程
Ollama的Lobe Chat
官网:https://lobehub.com
Github: https://github.com/obehub/lobe-chat
- Built for you the Super Individual (专为你打造的超级个人)
- 现代化设计的开源 ChatGPT/LLMs 聊天应用与开发的UI框架;
- 支持语音合成、多模态、可扩展的(function call)插件系统;
- 一键免费拥有你自己的 ChatGPT/Gemini/Claude/Ollama 应用
Lobe Chat部署
win+R输入cmd,黑窗口执行下边命令
docker run -d -p 3210:3210 -e OPENAI API KEY=sk-xxxx -e ACCESS CODE=lobe66 --name lobe-chat lobehub/lobe-chat
访问Lobe Chat页面http://localhost:3210,就会出现聊天界面,但是聊天的时候需要API KEY与代理地址,所以还是需要付费的
Lobe Chat集成Ollama
大模型选择
参考国内大模型排行榜地址:https://www.superclueai.com/