在这里插入图片描述

Pre

大模型开发 - 01 Spring AI 核心特性一览

大模型开发 - 02 Spring AI Concepts

大模型开发 - 03 QuickStart_借助DeepSeekChatModel实现Spring AI 集成 DeepSeek

大模型开发 - 04 QuickStart_DeepSeek 模型调用流程源码解析:从 Prompt 到远程请求

大模型开发 - 05 QuickStart_接入阿里百炼平台:Spring AI Alibaba 与 DashScope SDK


概述

在企业级 AI 应用日益普及的今天,如何在保障数据安全的前提下高效利用大语言模型(LLM),成为许多技术团队的核心诉求。Ollama 作为一款轻量级、开源的大模型本地运行环境,支持将主流开源大模型(如 Qwen、Llama、Gemma 等)一键部署到本地设备,实现完全离线、私有化的推理服务。配合 Spring AI 框架,开发者可以快速构建企业级 AI 应用,兼顾安全性、成本与开发效率。

本文将手把手带你完成从 Ollama 安装 → 模型部署 → Spring AI 集成 → 高级功能(关闭思考、流式输出、多模态) 的全流程实践。


一、为什么选择 Ollama?

  • 完全本地运行:无需联网,数据不出内网,满足企业数据合规要求
  • 开箱即用:命令行一键拉取、运行主流开源模型(Qwen、Llama、Mistral 等)
  • 资源友好:支持 4B、7B、8B 等中小参数模型,普通消费级 GPU(如 4–8GB 显存)即可运行
  • API 标准化:提供 RESTful API(默认 http://localhost:11434),便于集成到任意系统
  • 持续演进:官方积极支持 流式输出(streaming)工具调用(tool calling)思考模式(thinking)多模态(vision) 等前沿能力

二、本地安装 Ollama

1. 下载安装

访问 https://ollama.com/download,根据操作系统下载安装包(Windows / macOS / Linux 均支持)。
Windows 用户需 Windows 10 或更高版本,安装过程只需“下一步”即可。

2. 验证安装

打开终端(CMD / PowerShell / Terminal),执行:

ollama list

初始状态下无模型,输出为空。

3. 拉取并运行模型

Qwen3-4B 为例(40亿参数,适合 4GB+ 显存设备):

ollama run qwen3:4b

首次运行会自动下载模型,完成后即可在终端与模型对话。

💡 提示:若设备性能较强,可尝试 qwen3:8b,但响应速度可能变慢。

在这里插入图片描述


三、Spring AI 集成 Ollama

Spring AI 是 Spring 官方推出的 AI 应用开发框架,抽象了大模型调用细节,支持多种后端(OpenAI、Ollama、Azure 等)。

1. 添加依赖(Maven)

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>

推荐使用 Spring Boot 3.x + Spring AI 1.0.1+(修复了多项 Ollama 兼容性问题)

2. 配置 application.yml

spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        model: qwen3:4b

3. 基础对话测试

    /**
     * 测试Ollama聊天模型功能
     *
     * @param ollamaChatModel Ollama聊天模型实例,通过Spring自动注入
     */
    @Test
    public void testOllama(@Autowired OllamaChatModel ollamaChatModel) {

        // 调用Ollama聊天模型并输出响应结果
        System.out.println(ollamaChatModel.call("你好你是谁?/no_think"));
    }

运行后将输出模型对“你是谁?”的回答。


四、高级功能实战

1. 关闭“思考模式”(Thinking)

Ollama 自 v0.9.0 起支持 Thinking 模式(如 Qwen3、DeepSeek-R1),模型会先输出推理过程(<think>...</think>),再给出答案。
但在某些场景(如客服机器人、API 服务)中,我们希望直接获取答案,避免冗余内容。

方法一:通过提示词指令(临时方案)

String text = ollamaChatModel.call("你是谁?/no_think");

⚠️ 注意:截至 Spring AI 1.0.0,此方式仍可能返回 <think> 标签,需前端或后端过滤处理。

方法二:使用 API 参数(推荐,需 Spring AI 1.0.1+)

Ollama 的 /api/chat 支持 think: false 参数,但 Spring AI 尚未直接暴露该选项。
可考虑通过自定义 OllamaOptions 或升级至支持版本(关注 Spring AI 官方更新)。


2. 流式输出(Streaming)

流式响应适用于聊天界面、实时打字效果等场景。

在这里插入图片描述

      /**
     * 测试Ollama聊天模型的流式响应功能
     *
     * @param ollamaChatModel 自动注入的Ollama聊天模型实例,用于发起流式聊天请求
     */
    @Test
    public void testDeepseekStream(@Autowired OllamaChatModel ollamaChatModel) {
        // 发起流式聊天请求,向模型发送"你好你是谁"消息
        Flux<String> stream = ollamaChatModel.stream("你好你是谁");
        // 遍历流式响应结果并打印到控制台
        stream.toIterable().forEach(System.out::println);
    }	

注意:Ollama v0.8.0+ 才支持 stream + tools 联合使用。
Spring AI 1.0.0 存在兼容性问题(Issue #3369),1.0.1 已修复


3. 多模态(图像识别)

在这里插入图片描述

Ollama 支持多模态模型,如:

  • Qwen 2.5 VL
  • Gemma 3
  • Llama 4(Vision)
  • Mistral Small 3.1

示例:使用 Gemma 3 识别图片

在这里插入图片描述

选择 Input支持 Image类型的模型

 
        /**
     * 多模态图像识别测试方法,使用gemma3模型进行图片识别
     * @param ollamaChatModel Ollama聊天模型实例,用于调用多模态识别功能
     */
    @Test
    public void testMultimodality(@Autowired OllamaChatModel ollamaChatModel) {
        // 加载classpath下的图片资源
        var imageResource = new ClassPathResource("files/artisan-code.png");

        // 配置Ollama选项,指定使用gemma3模型
        OllamaOptions ollamaOptions = OllamaOptions.builder()
                .model("gemma3")
                .build();

        // 创建媒体对象,封装图片资源和MIME类型
        Media media = new Media(MimeTypeUtils.IMAGE_PNG, imageResource);

        // 调用模型进行图片识别,发送包含图片和文本提示的请求
        ChatResponse response = ollamaChatModel.call(
                new Prompt(
                        UserMessage.builder().media(media)
                                .text("识别图片").build(),
                        ollamaOptions
                )
        );

        // 输出识别结果
        System.out.println(response.getResult().getOutput().getText());
    }

提示:确保已通过 ollama run gemma3 拉取多模态版本模型。


五、企业级建议

场景 建议
数据安全要求高 全流程离线部署,禁用外网访问
低延迟响应 使用 4B–8B 模型 + 关闭 thinking
复杂任务(如工具调用) 升级 Ollama ≥ v0.8.0 + Spring AI ≥ 1.0.1
长上下文需求 在请求中设置 num_ctx: 32000(注意内存占用)
生产环境监控 结合 Prometheus + Grafana 监控 Ollama 推理延迟与资源使用

六、总结

通过 Ollama + Spring AI 的组合,企业可以:

  • 快速构建私有化 AI 能力
  • 避免云服务 API 调用成本与数据泄露风险
  • 灵活支持文本、流式、工具调用、多模态等场景

随着 Ollama 不断增强对 Model Context Protocol (MCP)增量工具解析思考控制 的支持,本地大模型的实用性与稳定性将持续提升。未来,我们甚至可以在笔记本上运行具备“思考-行动-反思”能力的智能体(Agent)!

资源链接

  • Ollama 官网:https://ollama.com
  • Thinking 模式说明:https://ollama.com/blog/thinking
  • Streaming + Tools 支持:https://ollama.com/blog/streaming-tool
  • Spring AI GitHub:https://github.com/spring-projects/spring-ai

在这里插入图片描述

Logo

更多推荐