在本地环境中高效运行大语言模型(LLM)正成为开发者探索的热门方向。本文将手把手教你如何通过Spring AI框架,无缝集成本地部署的Ollama服务,调用强大的DeepSeek模型来解决实际问题。无论你是想快速搭建智能问答系统、自动化文本分析,还是探索私有化AI部署,本文将从环境配置、代码实战到优化技巧,带你完整走通技术闭环,实现低延迟、高可控的AI应用开发。

springAI调用deepseek API接口实现部署集成会在下一篇博客中介绍

一、为什么选择Spring AI + Ollama + DeepSeek

1. 技术栈优势

  • Spring AI:简化AI集成的Java生态工具
  • Ollama:本地化部署LLM的轻量级方案
  • DeepSeek:高性能开源模型的适用场景

2. 本地化部署的价值

  • 数据隐私保障
  • 低延迟响应
  • 模型定制化潜力

二、本地部署DeepSeek模型

这里的具体实现流程可以参考我写的这一片博客

零门槛本地部署AI模型:基于Ollama实现DeepSeek全攻略

三、Spring AI集成Ollama API

1. 创建一个Spring AI项目

这里我们可以直接勾选AI中的ollama,除此之外,需要一个web服务器和数据库
在这里插入图片描述
或者添加这个依赖

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

2.修改配置文件 application.yml

spring:
  ai:
    ollama:
      base-url: http://localhost:11434 # 模型地址
      chat: # 模型类型
        model: deepseek-r1:1.5b  # 模型名称

在这里插入图片描述

3.配置客户端

创建配置包,创建配置客户端类

在这里插入图片描述

package com.wjd.config;

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

@Configuration
public class CommonConfiguration {
    @Bean
    public ChatClient chatClient(OllamaChatModel model) {
        return ChatClient
                .builder(model)
                .build();
    }
}

四、测试集成是否成功

创建controller层代码,创建ChatController进行测试

1. 阻塞式生成

在这里插入图片描述
这里调用/ai/call
在这里插入图片描述
在这里插入图片描述

2. 流式生成

在这里插入图片描述
在这里插入图片描述

3. controller层代码

package com.wjd.controller;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

@RestController
@RequestMapping("/ai")
public class ChatController {

    private final ChatClient chatClient;

    @Autowired
    public ChatController(ChatClient chatClient) {
        this.chatClient = chatClient;
    }

    @RequestMapping("/call")
    public String chat(String prompt) {
        /**
         * 阻塞式调用
         */
        return chatClient.prompt()
                .user(prompt)
                .call()
                .content();

    }

    @RequestMapping(value = "/stream", produces = "text/html;charset=utf-8")
    public Flux<String> stream(String prompt) {
        /**
         * 流式调用
         */
        return chatClient.prompt()
                .user(prompt)
                .stream()
                .content();
    }
}

五、补充

1. 设置deepseek提示词

在这里插入图片描述
可以通过defaultSystem来获取提示词

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐