SpringAI+Ollama本地模型实现快速对话的实战指南

 更新时间:2026年05月12日 09:25:29   作者:霸道流氓气质  
SpringAI是Spring官方推出的AI应用开发框架,旨在统一封装多种大模型,提供一套代码无缝切换不同模型的功能,下面我们就来看看SpringAI如何结合Ollama实现快速对话功能吧

场景

Spring AI 是什么?

Spring AI 是 Spring 官方推出的 AI 应用开发框架,定位:像 SpringBoot 封装 Web、MyBatis 封装数据库一样,统一封装大模型、向量库、RAG、Agent、工具调用、MCP 协议,做到一套代码、无缝切换任意大模型。

支持:

  • 国产模型:通义千问、文心一言、讯飞星火、智谱
  • 海外模型:OpenAI、Anthropic
  • 本地模型:Ollama、LocalAI

协议:OpenAI 兼容接口、MCP 模型控制协议(Streamable HTTP/SSE)

设计思想:抽象统一接口,底层厂商自由替换,业务代码不用改。

Spring AI 顶层核心架构

分层理解:

  • 应用层:Chat 对话、RAG 知识库问答、Agent 智能体、工作流编排
  • 核心抽象层:ChatModel、EmbeddingModel、Prompt、Advisor、Tool、VectorStore
  • 适配层:对接各厂商(OpenAI/Ollama/ 通义千问 / 阿里云百炼)
  • 基础设施层:向量数据库、MCP 服务、内存、日志、可观测性

ChatModel 对话模型

Spring AI 最核心抽象,所有大模型都实现这个接口。

能力:同步对话、流式对话、多轮上下文、函数调用

实现类举例:

  • OpenAiChatModel
  • OllamaChatModel
  • DashScopeChatModel(通义千问)

特点:切换模型只改配置,不改业务代码

ChatClient 聊天客户端(开发首选)

Spring AI 推荐业务层入口,封装 ChatModel,链式调用。

优势:

  • 内置 Prompt 模板、记忆、工具注入
  • 流式返回、拦截器扩展

实现

环境前提

JDK 17

SpringBoot 3.4.5

本地已装 Ollama,并拉取模型:ollama pull qwen2.5:7b-instruct

不用复杂依赖、不搞 MCP,先跑通 Spring AI 核心基础:ChatClient + 普通对话

pom文件

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.3</version> <!-- 降级为稳定版,解决冲突 -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>spring-ai-ollama-demo</artifactId>
    <version>1.0</version>
    <properties>
        <java.version>17</java.version>
        <spring-ai.version>1.0.0-M1</spring-ai.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Spring AI Ollama 核心 -->
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
            <version>${spring-ai.version}</version>
        </dependency>
    </dependencies>
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

application.yml 配置

​server:
  port: 886
spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        model: qwen2.5:7b-instruct
​

配置类:注册 ChatClient(Spring AI 标准入口)

package com.badao.ai.config;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SpringAiConfig {

    /**
     * 注入统一聊天客户端,全局使用
     */
    @Bean
    public ChatClient chatClient(ChatClient.Builder builder) {
        return builder.build();
    }
}

Controller(最简单对话)

package com.badao.ai.controller;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SimpleChatController {

    private final ChatClient chatClient;

    public SimpleChatController(ChatClient chatClient) {
        this.chatClient = chatClient;
    }

    @GetMapping("/chat")
    public String chat(@RequestParam String msg) {
        // 链式调用:发提示词 -> 调用模型 -> 返回内容
        return chatClient.prompt(new Prompt(msg))
                .call()
                .content();
    }
}

测试访问

以上就是SpringAI+Ollama本地模型实现快速对话的实战指南的详细内容,更多关于SpringAI结合Ollama实现快速对话的资料请关注脚本之家其它相关文章!

相关文章

  • springboot的调度服务与异步服务使用详解

    springboot的调度服务与异步服务使用详解

    本文主要介绍了Java的ScheduledExecutorService接口和Spring Boot中如何使用调度线程池,包括核心参数、创建方式、自定义线程池、Cron表达式,以及如何在Spring Boot中配置和使用异步任务,此外,还讨论了如何模拟系统繁忙和调整异步线程池的拒绝策略
    2025-02-02
  • 详谈@Autowired和static的关系

    详谈@Autowired和static的关系

    这篇文章主要介绍了@Autowired和static的关系,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 解决Maven build打包,类找不到,找不到引用的那个项目里面的类问题

    解决Maven build打包,类找不到,找不到引用的那个项目里面的类问题

    文章讨论了在使用Maven构建项目时遇到类找不到的问题,并给出了解决方法,主要原因是公共项目被打成了可执行的jar,导致其他项目无法引用其中的类,解决方法包括在公共项目的pom中将打包类型改为普通jar,以及在主项目中正确引用公共项目
    2026-02-02
  • Java String之contains方法的使用详解

    Java String之contains方法的使用详解

    这篇文章主要介绍了Java String之contains方法的使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java代码优化细节

    Java代码优化细节

    这篇文章主要为大家详细介绍了Java代码优化细节,通过不同细节对java代码进行优化,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Java8语法糖之Lambda表达式的深入讲解

    Java8语法糖之Lambda表达式的深入讲解

    这篇文章主要给大家介绍了关于Java8语法糖之Lambda表达式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Java多线程 中断机制及实例详解

    Java多线程 中断机制及实例详解

    这篇文章主要介绍了Java多线程 中断机制及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • springboot集成mybaits plus实现增删改查功能(示例代码)

    springboot集成mybaits plus实现增删改查功能(示例代码)

    本文介绍了使用SpringBoot集成MyBatisPlus实现增删改查的全过程,包括添加依赖、配置数据库、创建表及实体类、Mapper和Service层的创建及实现等,最后通过knife4j或generated-requests.http进行测试,感兴趣的朋友跟随小编一起看看吧
    2026-04-04
  • java实现发送邮件的示例代码

    java实现发送邮件的示例代码

    这篇文章主要介绍了java如何实现发送邮件,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Java GUI进阶之流式布局管理器FlowLayout专项精讲

    Java GUI进阶之流式布局管理器FlowLayout专项精讲

    FlowLayout-流式布局管理器,按水平方向依次排列放置组件,排满一行,换下一行继续排列。排列方向(左到右 或 右到左)取决于容器的componentOrientation属性
    2022-04-04

最新评论