【轻松掌握】使用Spring-AI轻松访问大模型本地化部署并搭建UI界面访问指南

news2025/1/11 0:43:33

文章目录

  • 读前必看
  • 什么是Spring-AI
  • 目前已支持的对接模型
  • 本文使用Spring-AI版本
  • 构建项目
    • 选择必要的依赖
    • 配置系统变量
  • 聊天模型API
    • 配置文件
    • 方式1-使用默认配置
    • 方式2-自定义配置
    • 配置其他参数
    • 使用示例
  • 图像模型API
    • 配置文件
    • 方式1-使用默认配置
    • 方式2-自定义配置
    • 配置其他参数
    • 使用示例
  • 音频翻译文本模型API
    • 配置文件
    • 使用默认配置
    • 配置其他参数
    • 使用示例
  • 文本转语音模型API
    • 使用默认配置
    • 配置其他参数
    • 使用示例
  • SpringAI多模态API
    • 方式1-读取本地图片,附带文本需求
    • 方式2-传入图片URL地址
    • 使用示例
  • 大模型工具Ollama
    • 官方网站
    • 配置要求
    • 下载安装
    • 可用的大模型
    • 搜索模型
    • 选择版本
    • 自定义模型安装位置
    • 安装阿里千问
      • 安装qwen:0.5b模型
      • 测试
  • 使用Spring-AI访问Ollama模型
    • 访问模型端口获取
    • 构建项目-选择必要的依赖
    • 配置文件
    • 使用默认配置访问
    • 出现报错
      • 解决方案
        • 修改配置文件
    • 使用示例
  • Ollama的Web&Desktop
    • Open WebUI
    • 部署Open WebUI的两种方式
    • 安装Docker
    • Docker部署Open WebUI
      • 执行命令
      • 下载完成
    • 启动
    • 访问Open WebUI
      • 进入到主页面
      • 设置模型
      • 演示
  • Lobe Chat界面框架
    • 部署方式
      • 使用Docker部署
        • 命令
        • 拉取镜像
    • 访问LobeHub
    • 设置API-KEY
    • 再次访问
    • Lobe Chat助手
      • 添加一个助手
      • 使用助手
    • Lobe Chat使用Ollama
      • 使用本地安装的大模型qwen:0.5b
      • 下载gemma:2b使用
  • 大模型的选择
  • 示例代码仓库
  • 使用大模型给本文起个标题
  • 常见问题
    • Spring-AI访问响应对象转换报错
      • 解决方案
      • 参考原文
    • 镜像拉取问题
      • 退出登录
      • 重新登录
      • 问题解决
  • 最后

读前必看

通过本文你将学会

  • 快速上手Spring-AI:聊天、图像、音频翻译、文本转语音、多模态应用

  • Ollama本地部署:高效安装与使用大模型

  • Lobe Chat与WebUI:直观界面,轻松访问本地大模型

  • 本文示例代码仓库地址:https://gitee.com/chenjiahao0205/spring-ai-learning

  • 快速使用

    • 快速搭建本地大模型并使用的方案:Ollama + Docker + Lobe Chat(安装加使用最多花费一个小时,跳到对应章节即可)

什么是Spring-AI

Spring Al是一个AI工程领域的应用程序框架
它的目标是将Spring生态系统的设计原则应用于于人工智能领域,比如Spring生态系统的可移植性和模块化设计,并推广使用POJO来构建人工智能领域应用程序;
Spring AI并不是要构建一个自己的AI大模型,而是让你对接各种AI大模型

官方文档:https://spring.io/projects/spring-ai#learn

Spring-AI文档:https://docs.spring.io/spring-ai/reference/1.0/getting-started.html

目前已支持的对接模型

在这里插入图片描述

https://spring.io/projects/spring-ai#overview

主要分类有聊天、文本到图像、嵌入式等

本文使用Spring-AI版本

本文使用的spring-ai版本为1.0.0-SNAPSHOT

构建项目

选择必要的依赖

在这里插入图片描述

配置系统变量

这里为了隐藏api-key和base-url细节,将他们配置到环境变量中了

在这里插入图片描述

聊天模型API

配置文件

在这里插入图片描述

方式1-使用默认配置

在这里插入图片描述

可以在配置文件指定模型(其他参数也可以在这里配置,例如温度等,参考官方文档https://docs.spring.io/spring-ai/reference/api/chat/openai-chat.html)

在这里插入图片描述

方式2-自定义配置

在这里插入图片描述

配置其他参数

在这里插入图片描述

使用示例

在这里插入图片描述

图像模型API

配置文件

在这里插入图片描述

方式1-使用默认配置

在这里插入图片描述

方式2-自定义配置

在这里插入图片描述

配置其他参数

在这里插入图片描述

使用示例

在这里插入图片描述

在这里插入图片描述

音频翻译文本模型API

https://www.bilibili.com/video/BV1d1421d7Fy?p=32

配置文件

在这里插入图片描述

使用默认配置

在这里插入图片描述

配置其他参数

在这里插入图片描述

使用示例

在这里插入图片描述

文本转语音模型API

使用默认配置

在这里插入图片描述

配置其他参数

在这里插入图片描述

使用示例

在这里插入图片描述

SpringAI多模态API

例如:提问的时候附带以上图片,参考图片回答问题

方式1-读取本地图片,附带文本需求

在这里插入图片描述

方式2-传入图片URL地址

在这里插入图片描述

使用示例

在这里插入图片描述

在这里插入图片描述

大模型工具Ollama

官方网站

https://ollama.com/

配置要求

  • 运行一个7B(70亿参数)模型,至少需要8G内存
  • 13B(130亿参数)的模型至少需要16B的内存
  • 33B(330亿参数)的模型至少需要32G的内存

在磁盘至少要预留50G

下载安装

在这里插入图片描述

可用的大模型

https://ollama.com/library

在这里插入图片描述

搜索模型

在这里插入图片描述

选择版本

在这里插入图片描述

复制右边代码到控制台执行即可

自定义模型安装位置

在这里插入图片描述

安装阿里千问

安装qwen:0.5b模型

在这里插入图片描述

测试

在这里插入图片描述

使用Spring-AI访问Ollama模型

访问模型端口获取

Ollama api会监听11434端口

windows查看端口:netstat -ano | findstr 11434

在这里插入图片描述

在这里插入图片描述

代码中访问11434端口即可

构建项目-选择必要的依赖

这里不选择OpenAI了,选择Ollama

在这里插入图片描述

在这里插入图片描述

配置文件

在这里插入图片描述

使用默认配置访问

在这里插入图片描述

出现报错

在这里插入图片描述

默认使用的mistral模型,我们下载的qwen:0.5b模型,所以报错了

解决方案

  • 方案1:下载mistral模型(太大了,这里先不下载了)
  • 方案2:指定模型

这里采用方案2解决

修改配置文件

在这里插入图片描述

使用示例

在这里插入图片描述

Ollama的Web&Desktop

Open WebUI

Open WebUI 官网:https://www.openwebui.com/

部署Open WebUI的两种方式

  • 方式1:Docker(官方推荐)
  • 方式2 :源码安装
    • https://docs.openwebui.com/getting-started/#install-from-open-webui-github-repo

安装Docker

Windows下使用Docker的工具Docker Desktop

下载地址:https://www.docker.com/products/docker-desktop/

在这里插入图片描述

Docker部署Open WebUI

https://docs.openwebui.com/getting-started/#installation-with-default-configuration

在这里插入图片描述

安装Open WebUI命令

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v D:\Docker\open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

在这里插入图片描述

docker数据会同步保存在本地磁盘的该位置

执行命令

在这里插入图片描述

下载完成

在这里插入图片描述

启动

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v D:\Docker\open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

在这里插入图片描述

访问Open WebUI

我们通过3000端口映射的8080

http://localhost:3000/

在这里插入图片描述

进入到主页面

在这里插入图片描述

设置模型

在这里插入图片描述

演示

在这里插入图片描述

Lobe Chat界面框架

官网:https://lobehub.com

一件免费拥有自己的ChatGPT/Gemini/claude/ollama应用

部署方式

https://github.com/lobehub/lobe-chat/blob/main/README.zh-CN.md#-%E5%BC%80%E7%AE%B1%E5%8D%B3%E7%94%A8

完整部署教程:https://lobehub.com/zh/docs/self-hosting/start

使用Docker部署

命令
docker run -d -p 3210:3210 -e OPENAI_API_KEY=sk-xxxx -e ACCESS_CODE=lobe66 --name lobe-chat lobehub/lobe-chat


$ docker run -d -p 3210:3210 
  -e OPENAI_API_KEY=sk-xxxx 
  -e OPENAI_PROXY_URL=https://api-proxy.com/v1 
  -e ACCESS_CODE=lobe66 
  --name lobe-chat 
  lobehub/lobe-chat

OPENAI_API_KEY=目前可以先随便填充一个,后面再UI界面设置

在这里插入图片描述

拉取镜像

在这里插入图片描述

访问LobeHub

http://localhost:3210

在这里插入图片描述

设置API-KEY

在这里插入图片描述

再次访问

在这里插入图片描述

Lobe Chat助手

添加一个助手

在这里插入图片描述

使用助手

在这里插入图片描述

Lobe Chat使用Ollama

在这里插入图片描述

使用本地安装的大模型qwen:0.5b

在这里插入图片描述

下载gemma:2b使用

在这里插入图片描述

在这里插入图片描述

大模型的选择

大模型排行榜:https://www.superclueai.com/

示例代码仓库

https://gitee.com/chenjiahao0205/spring-ai-learning

在这里插入图片描述

使用大模型给本文起个标题

在这里插入图片描述

常见问题

Spring-AI访问响应对象转换报错

org.springframework.web.client.RestClientException: Error while extracting response for type [org.springframework.ai.openai.api.OpenAiApi$EmbeddingList<org.springframework.ai.openai.api.OpenAiApi$Embedding>] and content type [application/json;charset=utf-8]

在这里插入图片描述

解决方案

项目中添加该依赖

<dependency>
    <groupId>org.apache.httpcomponents.client5</groupId>
    <artifactId>httpclient5</artifactId>
    <version>5.2.1</version>
</dependency>

参考原文

https://stackoverflow.com/questions/78121525/spring-ai-openai-error-extracting-response-of-type-openaiapiembeddinglist

镜像拉取问题

在这里插入图片描述

退出登录

在这里插入图片描述

重新登录

在这里插入图片描述

问题解决

在这里插入图片描述

最后

本文结合B站视频学习总结得到,参考视频:https://www.bilibili.com/video/BV1d1421d7Fy/

感谢大家看到这里,文章如有不足,欢迎大家指出;彦祖点个赞吧彦祖点个赞吧彦祖点个赞吧,欢迎关注程序员五条!

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

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

相关文章

N5 - 使用Gensim库训练word2vec模型

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 环境步骤分词训练word2vec模型模型应用计算词汇间的相似度找出不匹配的词汇计算词汇的词频 总结与心得体会 环境 安装gensim和jieba库 pip install gen…

mysql实现MHA

一、什么是MHA 高可用模式下的故障切换&#xff0c;基于主从复制&#xff0c;单点故障和主从复制不能切换的问题&#xff0c;架构需要奇数台&#xff0c;至少需要3台&#xff0c;故障切换过程0-30秒&#xff0c;vip地址&#xff0c;根据vip地址所在的主机&#xff0c;确定主备…

全网最最实用--边缘智能的常见微调方式以及适用场景

文章目录 1. BitFit2. Adapter3. Prompt-Tuning4. Prefix-Tuning5. LoRA (Low-Rank Adaptation)6. QLoRA (Quantized Low-Rank Adaptation)7. LongLoRA总结 1. BitFit https://arxiv.org/abs/2106.10199 主要做法&#xff1a; BitFit&#xff08;Bias Term Fine-Tuning&#…

日撸Java三百行(day15:栈的应用之括号匹配)

目录 一、栈的括号匹配 二、代码实现 1.方法创建 2.数据测试 3.完整的程序代码 总结 一、栈的括号匹配 要完成今天的任务&#xff0c;需要先来了解一下什么是栈的括号匹配。首先&#xff0c;顾名思义&#xff0c;括号匹配就是指将一对括号匹配起来&#xff0c;我们给定一…

HashTable源码

引子 看到一个关于HashMap和HashTable对比的面试题&#xff0c;于是简单看了下HashTable的源码&#xff0c;简单记录下。 概述 与HashMap相似的哈希表结构&#xff0c;有很多不同点&#xff1a; 节点数组的初始化是在构造函数中完成的&#xff0c;初始容量11&#xff0c;负载因…

基于JSP、java、Tomcat三者的项目实战--校园交易网(3)主页--历史清单

技术支持&#xff1a;JAVA、JSP 服务器&#xff1a;TOMCAT 7.0.86 编程软件&#xff1a;IntelliJ IDEA 2021.1.3 x64 前文几个功能的实现的博客 基于JSP、java、Tomcat、mysql三层交互的项目实战--校园交易网&#xff08;1&#xff09;-项目搭建&#xff08;前期准备工作&a…

工具学习_CVE Binary Tool

1. 工具概述 CVE Binary Tool 是一个免费的开源工具&#xff0c;可帮助您使用国家漏洞数据库&#xff08;NVD&#xff09;常见漏洞和暴露&#xff08;CVE&#xff09;列表中的数据以及Redhat、开源漏洞数据库&#xff08;OSV&#xff09;、Gitlab咨询数据库&#xff08;GAD&am…

鸿蒙AI功能开发【人脸活体验证控件】 机器学习-场景化视觉服务

人脸活体验证控件 介绍 本示例展示了使用视觉类AI能力中的人脸活体验证能力。 本示例模拟了在应用里&#xff0c;跳转人脸活体验证控件&#xff0c;获取到验证结果并展示出来。 需要使用hiai引擎框架人脸活体验证接口kit.VisionKit.d.ts。 效果预览 使用说明&#xff1a; …

RK3568平台开发系列讲解(文件系统篇)文件描述符 fd(File Descriptor)是什么?

📢USB控制传输是USB通信中的一种基本传输类型,用于控制USB设备的配置和操作。它由 Setup 阶段和 Data 阶段组成,可用于发送命令、读取状态、配置设备等操作。 一、文件描述符 fd(File Descriptor)是什么? 文件描述符 fd 是一个非负整数,用来标识一个打开的文件,由内核…

用户态tcp协议栈四次挥手-服务端发送fin时,客户端不返回ac

问题&#xff1a; 四次挥手时&#xff0c;服务端发送fin后&#xff0c;客户端不发送ack&#xff0c;反而过了2min后发了个rst报文 62505是客户端&#xff0c;8889是服务端 解决&#xff1a; 服务端返回fin报文时带上ack标记

微波武器反无人机技术详解

微波武器反无人机技术中展现出了独特的优势和广阔的应用前景。以下是对微波武器在反无人机技术方面的详细解析&#xff1a; 一、微波武器概述 微波武器是指配备高功率微波&#xff08;High-Power Microwave, HPM&#xff09;载荷的作战武器&#xff0c;能够发射高能量的电磁脉…

在AI浪潮中保持核心竞争力:XIAOJUSURVEY的智能化探索

讲点实在的 在AI技术快速发展的今天&#xff0c;各行各业的工作方式正经历深刻变革。尤其是身处浪潮中甚至最有机会推动发展的我们&#xff0c;更需要置身事内。 ChatGPT、Copilot等的普及&#xff0c;使得编程效率显著提升&#xff0c;但也带来了新的挑战。为了在这种变革中…

C++输出为非科学计数法不同数据类型表示范围

目录 一、C数据类型 1、基本的内置类型 2、修饰符 &#xff08;1&#xff09;signed 和 unsigned &#xff08;2&#xff09;short 和 long &#xff08;3&#xff09;区别总结 默认情况 二、类型转换 1、静态转换&#xff08;Static Cast&#xff09; 2、动态转换&a…

C语言——函数(1)

函数 定义&#xff1a; 函数就是用来完成一定功能的一段代码&#xff08;程序&#xff09;模块。 在设计较大的程序时&#xff0c;一般将其分为若干个程序模块&#xff0c;每个模块用来实现一定的功能。 函数优势&#xff1a; 我们可以通过函数提供功能给别人使用&#xff0c…

美国商超入驻Homedepot,传统家织厂家跨境赛道新选择?——WAYLI威利跨境助力商家

美国商超入驻Homedepot为传统家织厂家提供了新跨境选择。据《Interactive Home Shopping》一文&#xff0c;电子购物让消费者更易定位和比较产品。传统家织厂家可通过Homedepot等大型零售商&#xff0c;利用其平台优势&#xff0c;接触更广泛消费者。 根据《Homedepot之争——家…

【八股文】Redis

1.Redis有哪些数据类型 常用的数据类型&#xff0c;String&#xff0c;List&#xff0c;Set&#xff0c;Hash和ZSet&#xff08;有序&#xff09; String&#xff1a;Session&#xff0c;Token&#xff0c;序列化后的对象存储&#xff0c;BitMap也是用的String类型&#xff0c;…

案例:LVS+Keepalived集群

目录 Keepalived 原理 Keepalived案例 双机高可用热备案例 配置 修改配置文件 测试 严格模式测试 修改配置文件 测试 模拟故障测试 LVSKeepalived高可用 案例拓扑图 初步配置 关闭服务 主调度器配置 健康状态检查的方式 调整内核参数 从调度器配置 服务器池…

失业后才会明白,职场上有4个扎心的现象

最近一段时间&#xff0c;因为疫情的原因&#xff0c;很多企业都在经历着前所未有的困难&#xff0c;其中就包括华为这样的大型企业。 任正非在接受媒体采访的时候表示&#xff1a;“全球经济持续衰退&#xff0c;未来3到5年内都不可能转好……把寒气传递给每个人。 这句话一…

python中的魔术方法(特殊方法)

文章目录 1. 前言2. __init__方法3. __new__方法4. __call__方法5. __str__方法6. __repr__方法7. __getitem__方法8. __setitem__方法9. __delitem__方法10. __len__方法11. 富比较特殊方法12. __iter__方法和__next__方法13. __getattr__方法、__setattr__方法、__delattr__方…

深度学习DeepLearning Inference 学习笔记

神经网络预测 术语 隐藏层神经元多层感知器 神经网络概述 应当选择正确的隐藏层数和每层隐藏神经元的数量&#xff0c;以达到这一层的输出是下一层的输入&#xff0c;逐层变得清晰&#xff0c;最终输出数据的目的。 在人脸识别的应用中&#xff0c;我们将图片视作连续的像…