在人工智能快速发展的今天,大语言模型已经成为技术热点。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. 测试聊天功能

在这里插入图片描述

系统架构流程图

用户请求
前端界面
Spring Boot控制器
ChatClient
OllamaChatModel
本地Ollama服务
DeepSeek大模型
AI响应生成
响应展示给用户

关键技术点说明

1. SpringAI的优势

  • 统一API:不同大模型使用相同的接口
  • 自动配置:基于SpringBoot的自动装配机制
  • 灵活扩展:支持自定义Advisor进行功能增强

2. Ollama本地部署优势

  • 数据隐私:所有数据处理在本地完成
  • 成本控制:无需支付API调用费用
  • 网络要求:不依赖外网连接

3. 流式响应的价值

  • 用户体验:实时显示生成内容,减少等待时间
  • 性能优化:边生成边返回,提高响应速度

总结

通过本文的步骤,我们成功搭建了一个基于SpringAI和本地Ollama大模型的聊天机器人应用。这个方案具有以下特点:

  1. 部署简单:只需几个步骤即可完成环境搭建
  2. 成本低廉:利用本地资源,无需支付云服务费用
  3. 数据安全:所有对话数据保存在本地
  4. 扩展性强:基于Spring生态,易于功能扩展

​ 这种架构特别适合需要数据隐私保护的企业内部应用、教育演示环境以及对成本敏感的场景。随着本地大模型技术的不断发展,这种方案的性能和能力还将进一步提升。本文为个人学习所用,想深入了解Spring AI建议观看黑马程序员系列课程!

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐