SpringAI+Ollama本地模型实现快速对话入门实例

场景

SpringBoot+LangChain4j+Ollama实现本地大模型语言LLM的搭建、集成和示例流程:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/160340066

在上面使用LangChain4j集成Ollama的基础上,如何使用SpringAI快速实现效果。

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 模板、记忆、工具注入

流式返回、拦截器扩展

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

Spring AI 零基础最小入门 Demo

环境前提

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();
    }
}

测试访问

相关推荐
用户3169353811832 小时前
如何从零编写一个 Spring Boot Starter
spring boot
小七-七牛开发者4 小时前
周一上线 | SpaceX 收购 Cursor、支付宝进入 AI 时代、DeepSeek 完成 500 亿元融资
ai·agent·token·glm·智谱·claudecode·ai coding·周一上线
程序员晓琪19 小时前
约定大于配置:基于 Java 包名自动生成 API 版本路由的最佳实践
java·spring boot·后端
Flittly19 小时前
【AgentScope Java新手村系列】(11)中断与恢复
java·spring boot·spring
doiito1 天前
【Agent Harness】为什么我把 JSON‑LD “编译成 DAG” 后,整个 Agent 平台立刻聪明了
ai·rust·架构设计·系统设计·ai agent
xiezhr1 天前
折腾半小时,终于让AI 能直接帮我写飞书文档了
ai·飞书·ai agent·飞书cli·飞书文档
岳小哥AI1 天前
Claude Fable和Claude Mythos 5同时发布:注意力机制下愈加强大的AI大模型
ai·ai基础
Artech1 天前
[MAF预定义的AIContextProvider-04]Mem0Provider——长期记忆基于的云端解决方案
ai·agent·maf·aicontextprovider·chathistorymemoryprovider·mem0provider
哥不是小萝莉2 天前
一文读懂 OpenAI Codex 源码的原理、架构与未来
ai
用户3521802454752 天前
🎆从 Prompt 到 Skill:让 Spring AI Agent 学会"装新技能"
人工智能·spring boot·ai编程