SpringAI编码实战:使用本地免费部署的大语言模型跑起来
前言
本篇博文将完全抛开网上各种教程对国外服务的依赖,全程使用免费、开源的本地大模型运行平台 Ollama 和国内优秀的 Qwen (通义千问) 模型。你不需要注册付费的API及VPN,就能在你自己的电脑上体验到大模型的神奇之处话不多说,现在咱们就在本地局域网内,用Java编码免费把大模型玩起来。并以ChatClient开始作为入门,给你一个初步的springAI实战大语言模型示例。
你将学到:
- 如何在本地安装和运行 Ollama。
- 如何在 Ollama 中下载并运行 Qwen 模型。
- 如何从零开始搭建一个 Spring Boot 项目,并集成 Spring AI。
- 如何使用
ChatClient
发送你的第一个请求。
本地环境准备
在使用 Spring AI 之前,我们首先需要在本地搭建一个大模型运行环境。这里我们选择 Ollama,它是一个非常方便的本地大模型运行平台。
具体也可参考之前写过的《Ollama 深度使用指南:在本地玩转大型语言模型》
准备Ollama
- 下载 Ollama: 访问 Ollama 的官方网站:https://ollama.com/download。
- 选择你的操作系统: 根据你的电脑系统(Windows、macOS、Linux),下载对应的安装包。
- 安装:
- Windows/macOS: 双击下载的安装包,按照提示一步步完成安装。安装过程非常简单,就像安装普通软件一样。
- Linux: 按照官网的命令行指示进行安装。
安装完成后,Ollama 会在后台默默运行,你通常不会看到一个单独的应用程序窗口,它作为一个服务在你的系统上运行。
准备 Qwen 模型
Ollama 安装好后,我们就可以通过命令行下载 Qwen 模型了。Qwen 是阿里云开源的一系列优秀大模型。
-
打开命令行/终端:
- Windows: 按
Win + R
键,输入cmd
或powershell
,然后回车。 - macOS/Linux: 打开“终端”应用程序。
- Windows: 按
-
下载模型: 在命令行中输入以下命令并回车。这里我们以下载
qwen:7b
模型为例,7b
表示70亿参数,对电脑配置要求不高,适合初学者。ollama pull qwen:7b ollama run qwen:7b
这个过程可能需要一些时间,因为它会从互联网上下载模型文件,文件通常比较大(几个GB)。请耐心等待下载完成。下载完成后,Ollama 服务就已经可以使用
qwen:7b
模型了!注意: Ollama 默认运行在
http://localhost:11434
。如果你的电脑防火墙或网络设置有问题,可能需要检查。但通常情况下,安装后即可直接使用。
项目初始化与配置
现在本地大模型环境已经准备好了,我们来创建 Spring Boot 项目并集成 Spring AI。
创建 Spring Boot 项目
推荐使用 Spring Initializr (https://start.spring.io/) 来快速创建项目,当然如果你是idea的旗舰版用户也可以本地快速创建。
- 访问地址: 打开浏览器,访问 https://start.spring.io/
如上图所示:
- 项目设置:
- Project:
Maven Project
(或Gradle Project
,这里我们用Maven) - Language:
Java
- Spring Boot: 选择最新的
3.5.3
版本,[参考官网描述,最低3.4.x],如下图所示(https://docs.spring.io/spring-ai/reference/getting-started.html) - Group:
com.example
(可以自定义,例如com.yourcompany
) - Artifact:
spring-ai-ollama-demo
(项目名称,可以自定义) - Java: 选择
17
或更高版本 (建议Java 17 LTS)
- Project:
- 添加依赖 (Dependencies):
- 点击 “Add Dependencies…” 按钮
- 搜索并添加:
Spring Web
(可选,但通常用于构建Web应用,方便测试)Lombok
(可选,但非常推荐,可以大大简化Java代码)Spring AI Ollama Starter
(这个是关键!用于集成Ollama)
- 生成项目: 点击 “Generate” 按钮,下载项目的压缩包。
- 解压并导入IDE: 将下载的
spring-ai-ollama-demo.zip
解压到你喜欢的位置,然后使用你的Java集成开发环境 (IDE),例如 IntelliJ IDEA 或 Eclipse,导入这个Maven项目。
配置pom.xml
依赖
导入项目后,检查 pom.xml
文件,确保它包含了所有必要的依赖。
对于spring-ai版本选择,由于进化很快,这里咱用最新的1.0.0-M5来演示,参考如下图
pom.xml
核心配置示例如下:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.5.3</version> <relativePath/> </parent><groupId>com.example</groupId><artifactId>spring-ai-ollama-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>spring-ai-ollama-demo</name><description>Demo project for Spring AI with Ollama</description><properties><java.version>17</java.version><spring-ai.version>1.0.0-M5</spring-ai.version> </properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>${spring-ai.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
配置application.properties
在 src/main/resources/
目录下的 application.properties
文件,并添加以下内容。
# Spring AI Ollama 配置
# Ollama 服务的地址,默认是 http://localhost:11434
spring.ai.ollama.chat.base-url=http://localhost:11434# 指定要使用的模型名称,这里我们使用之前下载的qwen:7b
spring.ai.ollama.chat.options.model=qwen:7b# 如果需要,可以调整温度参数(控制AI回答的创造性)
# spring.ai.ollama.chat.options.temperature=0.7
这些配置告诉 Spring AI 如何连接到 Ollama 服务,以及使用哪个模型。
注意: 如果你的 Ollama 服务没有运行在 http://localhost:11434
(例如,你在WSL中运行或配置了其他端口),你需要修改 spring.ai.ollama.chat.base-url
为正确的端口地址。
代码实战
本篇以ChatClient
为例来进行本地代码开发实战。
Chatclient
是 Spring AI 提供的最核心接口,它充当了你与大模型对话的统一入口。无论你底层用的是 Ollama、OpenAI 还是其他模型,你都通过 ChatClient
来发送提问并接收回答。
核心代码用例
Spring AI 会根据你的配置(这里是 Ollama)自动为你创建一个 ChatClient
的 Bean,你只需要通过 Spring 的 @Autowired
注解就可以把它注入到你的代码中并使用。
现在,我们创建一个主要的 Spring Boot 应用程序类 SpringAiOllamaDemoApplication.java
,并添加第一个使用 ChatClient
的示例。
package com.example.springaiollamademodemo; // 请替换为你的实际项目包名import org.springframework.ai.chat.client.ChatClient;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;@SpringBootApplication // 这是一个Spring Boot应用
public class SpringAiOllamaDemoApplication {public static void main(String[] args) {// Spring Boot 应用的启动入口SpringApplication.run(SpringAiOllamaDemoApplication.class, args);}/*** 示例1: ChatClient 基本使用** @param chatClient Spring 自动注入的 ChatClient 实例* @return CommandLineRunner,在应用启动后执行其run方法*/@Beanpublic CommandLineRunner runChatClientBasic(ChatClient chatClient) {return args -> {System.out.println("--- ChatClient 基本使用:向大模型提问 ---");// 使用chatClient.prompt().user("你的问题").call().content() 发送问题并获取回答内容String responseContent = chatClient.prompt().user("解释下量子纠缠的原理").call().content(); // 获取大模型的回答内容System.out.println("大模型响应: " + responseContent);System.out.println("\n------------------------------------------------\n");};}
}
开始运行
- 确保你的 Ollama 服务和
qwen:7b
模型正在运行。 - 在你的IDE中,找到
SpringAiOllamaDemoApplication
类,右键点击并选择 “Run ‘SpringAiOllamaDemoApplication.main()’” (或类似的选项)。 - 程序启动后,你会在IDE的控制台(Console)中看到大模型对“量子纠缠”的解释。
进阶使用
ChatClient
允许你发送包含多条消息的请求,这对于给AI设置一个特定的“角色”或者提供更丰富的对话背景非常有用。你可以发送 system
(系统) 消息和 user
(用户) 消息。
package com.example.springaiollamademodemo; // 请替换为你的实际项目包名import org.springframework.ai.chat.client.ChatClient;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;@SpringBootApplication
public class SpringAiOllamaDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringAiOllamaDemoApplication.class, args);}/*** 示例2: ChatClient 多轮上下文 (设置角色)* 通过系统消息为大模型设定一个角色,让它的回答更符合预期。** @param chatClient Spring 自动注入的 ChatClient 实例* @return CommandLineRunner*/@Beanpublic CommandLineRunner runChatClientWithContext(ChatClient chatClient) {return args -> {System.out.println("--- ChatClient 多轮上下文 (设置角色): 让大模型成为科普专家 ---");String responseContent = chatClient.prompt().system("你是一个科普专家,擅长用通俗易懂的语言解释科学原理。") // 系统消息:设定AI角色.user("讲讲黑洞是怎么形成的?") // 用户消息:实际问题.call().content();System.out.println("大模型(科普专家)响应: " + responseContent);System.out.println("\n------------------------------------------------\n");};}
}
再次运行 SpringAiOllamaDemoApplication
,你会发现大模型会以“科普专家”的口吻来解释黑洞的形成。
总结
通过本篇教程,你不仅学会了 Spring AI 的核心组件,还成功在本地搭建了 Ollama 和 Qwen 模型,并用它们运行了你的第一个 AI 应用。这为你探索人工智能的世界打下了坚实的基础。
完整项目截图:
资料
- Spring AI 官方参考文档: https://docs.spring.io/spring-ai/reference/getting-started.html
- Spring AI GitHub 仓库: https://github.com/spring-projects/spring-ai
- Ollama 官方网站: https://ollama.com/
- Spring Initializr: https://start.spring.io/
参考
《Ollama 深度使用指南:在本地玩转大型语言模型》
本文代码:https://gitcode.com/superfreeman/spring-ai-demo
系列教程:《Java驱动AI革命:Spring AI八篇进阶指南——从架构基础到企业级智能系统实战》