文章目录
- 读前必看
- 什么是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/
感谢大家看到这里,文章如有不足,欢迎大家指出;彦祖点个赞吧彦祖点个赞吧彦祖点个赞吧,欢迎关注程序员五条!