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

文章目录

  • 读前必看
  • 什么是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://github.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.rhkb.cn/news/397736.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开发效率翻倍攻略!大学生电脑小白管理秘籍,资料秒搜技巧大公开!C盘满了怎么办?如何快速安全的清理C盘?烦人的电脑问题?一键解决!

如何正确管理自己的第一台电脑&#xff1f;大一新生如何管理自己的电脑&#xff1f;老鸟如何追求快捷操作电脑&#xff1f; 文章目录 如何正确管理自己的第一台电脑&#xff1f;大一新生如何管理自己的电脑&#xff1f;老鸟如何追求快捷操作电脑&#xff1f;前言初级基础分区操…

2024年第八届计算生物学与生物信息学国际会议 (ICCBB 2024)即将召开!

2024 年第八届计算生物学和生物信息学国际会议&#xff08;ICCBB 2024&#xff09;将于2024年11月28 -30在日本京都召开&#xff0c;ICCBB 2024是展示理论、实验和应用计算生物学和生物信息学领域新进展和研究成果的主要论坛之一。我们相信&#xff0c;通过大家的共同努力&…

oled使用 f4软件iic 数字 汉字 小图片 HAL库

基于江科大的oled标准库进行移植 到Hal库上 本人参考了许多大佬的源码 进行更改 由于F4和F1主频不一样 由于F4主频太高 在进行软件iic时需要延时一下 才可驱动oled 本人在网上找了一个开源的us延时函数 已经添加进入 文件分享 通过百度网盘分享的文件&#xff1a;delay&#…

记一次 .NET某智慧出行系统 CPU爆高分析

一&#xff1a;背景 1. 讲故事 前些天有位朋友找到我&#xff0c;说他们的系统出现了CPU 100%的情况&#xff0c;让你帮忙看一下怎么回事&#xff1f;dump也拿到了&#xff0c;本想着这种情况让他多抓几个&#xff0c;既然有了就拿现有的分析吧。 二&#xff1a;WinDbg 分析…

socket回显服务器练习

前言 什么是回显服务器(echo server)呢&#xff1f; 回显服务器接收客户端发送的任何数据&#xff0c;并将这些数据原封不动地发送回客户端。回显服务器在连接成功的基础上只需要知道如何在客户端将收到的信息打印输出到控制台即可。我接下来会使用两种方法来输出&#xff0c;…

精通C++ STL(六):list的模拟实现

目录 类及其成员函数接口总览 结点类的模拟实现 构造函数 迭代器类的模拟实现 迭代器类存在的意义 迭代器类的模板参数说明 构造函数 运算符的重载 --运算符的重载 运算符的重载 !运算符的重载 *运算符的重载 ->运算符的重载 list的模拟实现 默认成员函数 构造函数 拷贝…

力扣 | 递增子序列 | 动态规划 | 最长递增子序列、最长递增子序列的个数、及其变式

文章目录 一、300. 最长递增子序列二、673. 最长递增子序列的个数三、变式1、646. 最长数对链2、1218. 最长定差子序列3、1027. 最长等差数列4、354. 俄罗斯套娃信封问题5、1964. 找出到每个位置为止最长的有效障碍赛跑路线 最长递增子序列&#xff1a;原序-递增数值问题 最长定…

无人机之陀螺仪篇

陀螺仪器最早是用于航海导航&#xff0c;但随着科学技术的发展&#xff0c;它在航空和航天事业中也得到广泛的应用。陀螺仪不仅可以作为指示仪表&#xff0c;而更重要的是它可以作为自动控制系统中的一个敏感元件&#xff0c;即可作为信号传感器。 根据需要&#xff0c;陀螺仪器…

使用字典优化命令行参数处理

在 Python 中&#xff0c;可以使用字典优化命令行参数的处理。特别是在处理多个选项或参数时&#xff0c;使用字典可以使代码更加简洁和易于维护。以下是一个使用 argparse 模块和字典来管理命令行参数的示例。 问题背景 在一个项目中&#xff0c;您需要根据用户通过命令行参数…

yolov5更换MobileNetV3的主干网络

目录 1.定义网络 2.将test_MobileNetV3.py上面的代码复制粘贴到如下文件里面 2.1复制需要更改的原来的网络如何改结构 3.更改yolo.py注册网络 1.定义网络 1. 宽度为0.5的YOLOV5网络的结构图 在主干网络上面可以重新定义成三层&#xff0c;编号从0开始 如图是MobileNetV3 的…

掌握7步网站设计流程,提升你的网站用户体验

在当代社会&#xff0c;网站制作已经成为不可或缺的一部分。随着互联网的发展&#xff0c;越来越多的人开始使用网站浏览器来获取信息、交流和消费。一个好的网站设计可以吸引用户的注意力&#xff0c;提高用户体验&#xff0c;从而提高用户的满意度和忠诚度。那么&#xff0c;…

网络剪枝——network-slimming 项目复现

目录 文章目录 目录网络剪枝——network-slimming 项目复现clone 存储库Baselinevgg训练结果 resnet训练结果 densenet训练结果 Sparsityvgg训练结果 resnet训练结果 densenet训练结果 Prunevgg命令结果 resnet命令结果 densenet命令结果 Fine-tunevgg训练结果 resnet训练结果 …

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——5.string

1.字符串相乘 . - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 1.如果两个串有一个首元素为‘0’&#xff0c;则直接返回‘0’ 2.设置两层循环&#xff0c;内层第一次循环 用于str插入初始数据 &#xff08;num2 的各个元素和num1 的最后一个元素相乘的结果&#…

C代码做底层及Matlab_SimuLink做应用层设计单片机程序

前言:SimuLink工具极其强大,但是能直接支持单片机自主开发的很少,造成这个问题的原因主要是我们使用的芯片底层多是C代码工程,芯片厂家也只提供C代码库,很少能提供SimuLink的支持库,即使提供也不是很不完善,如NXP的一些芯片提供的SimuLink库不含盖高级应用,再比如意法半…

哈希表 - 快乐数

202. 快乐数 方法一&#xff1a;用哈希集合检测循环 /*** param {number} n* return {boolean}*/let getNext function(n) {return n.toString().split().map(i > i ** 2).reduce((a, b) > a b); }let isHappy function(n) {let seen new Set();while (n ! 1 &&…

什么是跨境电商独立站?为什么选择做独立站?

独立站在近两年被推上风口&#xff0c;很多人跟风涌入赛道&#xff0c;但并不知道做独立站的根本原因是什么&#xff1f;为什么跨境电商要做独立站&#xff1f; 今天分享这篇文章&#xff0c;希望能帮助正在建站或想要建站的朋友们建立起对独立站的基本认知&#xff0c;做到不踩…

【学习笔记】Matlab和python双语言的学习(图论最短路径)

文章目录 前言一、图论基本概念示例 二、代码实现----Matlab三、代码实现----python总结 前言 通过模型算法&#xff0c;熟练对Matlab和python的应用。 学习视频链接&#xff1a; https://www.bilibili.com/video/BV1EK41187QF?p36&vd_source67471d3a1b4f517b7a7964093e6…

Java线程模型

一、相关知识 用户级线程&#xff08;ULT&#xff09;&#xff1a;实现在用户空间的线程称为用户级线程。用户线程是完全建立在用户空间的线程库&#xff0c;用户线程的创建、调度、同步和销毁全由用户空间的库函数完成&#xff0c;不需要内核的参与&#xff0c;也不需要进行用…

FPGA之间数据传输的讨论:解析数据传输与同步技术

在现代电子工程领域&#xff0c;数据传输和同步技术是确保信息准确、高效传递的关键。FPGA间的高速数据传输是实现复杂系统功能的关键技术之一。本文将基于移知公开课《FPGA之间数据传输的讨论》的内容&#xff0c;探讨FPGA间数据传输的技术细节和面临的挑战&#xff0c;帮助读…

使用VS2022生成安装包

首先需要本地已经能够正常运行的软件包&#xff0c;包含可执行文件及必要的运行库等&#xff0c;如下所示RemoteCli.exe为最终的可执行文件 打开VS2022 &#xff0c;选择 扩展–>管理扩展–>联机&#xff0c;搜索Microsoft Visual Studio Installer Projects&#xff0c;…