Bootstrap

Spring AI 大模型 Ollama

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/

;