使用SpringAI快速搭建本地大模型聊天机器人
·
在人工智能快速发展的今天,大语言模型已经成为技术热点。SpringAI作为Spring生态中的AI集成框架,让开发者能够轻松对接各种大模型。本文将详细介绍如何使用SpringAI与本地部署的Ollama大模型搭建一个聊天机器人。
环境准备
1. 安装Ollama
首先需要在本地安装Ollama(傻瓜式安装),这是一个支持在本地运行大模型的工具。
Windows安装:
# 访问Ollama官网下载Windows版本
# 或使用winget安装
winget install Ollama.Ollama
2. 下载并运行大模型
安装完成后,启动Ollama服务并下载模型:
# 启动Ollama服务
ollama serve
# 下载DeepSeek模型(新开终端)
ollama pull deepseek-r1:7b
验证模型是否正常运行:
ollama run deepseek-r1:7b "你好"
项目搭建
1. 创建SpringBoot工程
使用Spring Initializr创建新项目,选择以下依赖:
-
Spring Web
-
MySQL Driver(可选)

2. 添加SpringAI依赖
在pom.xml中添加SpringAI配置:
<properties>
<java.version>17</java.version>
<spring-ai.version>1.0.3</spring-ai.version>
</properties>
<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>
<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>
<version>1.18.22</version>
</dependency>
</dependencies>
3. 配置模型参数
创建application.yaml配置文件:
spring:
application:
name: ai-chatbot
ai:
ollama:
base-url: http://localhost:11434
chat:
model: deepseek-r1:7b
options:
temperature: 0.8
logging:
level:
org.springframework.ai: debug
核心代码实现
1. 配置ChatClient
创建配置config文件,并且新建CommonConfiguration类,初始化ChatClient并设置系统角色:
package com.example.aichat.config;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AiConfig {
@Bean
public ChatClient chatClient(OllamaChatModel model) {
return ChatClient.builder(model)
.defaultSystem("""
你是一个智能聊天助手,名字叫小智。
请以友好、专业的方式回答用户问题。
如果遇到不确定的问题,请诚实地告知用户。
""")
.defaultAdvisors(new SimpleLoggerAdvisor())
.build();
}
}
2. 实现聊天控制器
创建REST控制器处理聊天请求:
package com.example.aichat.controller;
import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Flux;
@RestController
@RequestMapping("/api/chat")
@RequiredArgsConstructor
public class ChatController {
@Autowired
private ChatClient chatClient;
@RequestMapping(value = "/chat",produces = "text/html;charset=utf-8")
public Flux<String> chat(String prompt, String chatId) {
//保存会话ID
chatHistoryRepository.save("chat",chatId); //最好使用枚举
//请求模型
return chatClient.prompt()
.user( prompt)
.advisors(new Consumer<ChatClient.AdvisorSpec>() {
@Override
public void accept(ChatClient.AdvisorSpec advisorSpec) {
advisorSpec.param(ChatMemory.CONVERSATION_ID,chatId);
}
})
.stream()
.content();
}
}
测试与运行
1. 测试聊天功能

系统架构流程图
关键技术点说明
1. SpringAI的优势
- 统一API:不同大模型使用相同的接口
- 自动配置:基于SpringBoot的自动装配机制
- 灵活扩展:支持自定义Advisor进行功能增强
2. Ollama本地部署优势
- 数据隐私:所有数据处理在本地完成
- 成本控制:无需支付API调用费用
- 网络要求:不依赖外网连接
3. 流式响应的价值
- 用户体验:实时显示生成内容,减少等待时间
- 性能优化:边生成边返回,提高响应速度
总结
通过本文的步骤,我们成功搭建了一个基于SpringAI和本地Ollama大模型的聊天机器人应用。这个方案具有以下特点:
- 部署简单:只需几个步骤即可完成环境搭建
- 成本低廉:利用本地资源,无需支付云服务费用
- 数据安全:所有对话数据保存在本地
- 扩展性强:基于Spring生态,易于功能扩展
这种架构特别适合需要数据隐私保护的企业内部应用、教育演示环境以及对成本敏感的场景。随着本地大模型技术的不断发展,这种方案的性能和能力还将进一步提升。本文为个人学习所用,想深入了解Spring AI建议观看黑马程序员系列课程!
更多推荐


所有评论(0)