首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Spring AI 搭建本地 AI

Spring AI 搭建本地 AI

作者头像
程序员NEO
发布2026-04-29 19:00:21
发布2026-04-29 19:00:21
1130
举报

Spring AI 是 Spring 团队开发的开源框架,旨在简化 Java 开发者在应用中集成人工智能 (AI) 功能的过程。它本身不是 AI 模型,而是通过提供统一的工具和抽象接口,帮助开发者便捷地接入并使用 OpenAI、Google Gemini、Mistral AI 等多种 AI 服务,其定位类似于 Spring Boot 在 Web 开发中的作用。

简而言之,Spring AI 如同 Java 世界的一座“桥梁”,它将复杂的 AI 技术变得易用,使开发者能运用熟悉的 Spring 生态系统来构建智能应用。

AI 热潮下 Java 的机会

随着 ChatGPT 等大模型的兴起,AI 已成为众多应用的核心需求。传统 AI 开发多依赖 Python(如 LangChain、LlamaIndex),Java 开发者在接入 AI 时可能面临不便。Spring AI 的出现,为 Java 开发者拥抱 AI 提供了新的可能。作为 Spring 生态系统的新成员,Spring AI (官方文档) 通过提供统一接口、支持集成多种 AI 服务商和模型、以及 RAG 知识库、工具调用等常用 AI 开发特性,简化了 AI 应用的开发,使开发者能更专注于业务逻辑,从而提高效率。

Spring AI 的官方文档也较为清晰易懂。

Spring AI 的核心特性如下(参考官方文档):

  • • 提供跨 AI 服务商的可移植 API:支持聊天、文生图和嵌入模型,兼容同步与流式 API,并允许访问模型特定功能。
  • • 支持主流 AI 模型服务商:如 Anthropic、OpenAI、微软、亚马逊、谷歌和 Ollama,覆盖聊天补全、嵌入、文生图、语音转文本、文本转语音等模型类型。
  • • 结构化输出:可将 AI 模型输出直接映射到 POJO(普通 Java 对象)。
  • • 支持主流向量数据库:如 Apache Cassandra、Azure Cosmos DB、Azure Vector Search、Chroma、Elasticsearch、GemFire、MariaDB、Milvus、MongoDB Atlas、Neo4j、OpenSearch、Oracle、PostgreSQL/PGVector、PineCone、Qdrant、Redis、SAP Hana、Typesense 和 Weaviate。
  • • 提供跨向量数据库的可移植 API:包含创新的类 SQL 元数据过滤 API。
  • • 工具/函数调用:允许 AI 模型请求执行客户端工具和函数,以便按需访问实时信息并执行操作。
  • • 可观测性:提供 AI 相关操作的监控数据。
  • • 文档 ETL 框架:专为数据工程场景设计。
  • • AI 模型评估工具:用于评估生成内容的质量,并帮助减少“幻觉”响应。
  • • Spring Boot 自动配置和启动器:适用于 AI 模型和向量数据库。
  • • ChatClient API:提供与 AI 聊天模型交互的流式 API,用法类似 WebClient 和 RestClient。
  • • Advisors API:封装常见生成式 AI 模式,处理与大语言模型 (LLM) 交互的数据,并确保在不同模型和用例间的可移植性。
  • • 支持聊天对话记忆和检索增强生成(RAG)。

什么是 Ollama?

Ollama 是一个开源平台,能帮助用户轻松地在本地运行和管理大语言模型 (LLM)。

Ollama 的主要特点包括:

  • 本地运行:模型直接在用户本地设备上运行,数据无需上传云端,有效保护数据隐私。
  • 简单易用:提供简洁的命令行界面 (CLI) 或 API,方便快速启动和使用模型。
  • 广泛的模型支持:兼容多种主流开源语言模型,用户可根据需求灵活选择。
  • 轻量化:与需要复杂基础设施的方案相比,Ollama 更适合在个人设备上部署。

安装 Ollama

访问官网 https://ollama.com 下载 Windows 版本安装程序。

验证安装

打开 PowerShell 或 CMD,执行以下命令:

代码语言:javascript
复制
ollama --version

若返回版本号,则表示安装成功。

运行测试

运行一个基础模型,例如:

代码语言:javascript
复制
ollama run deepseek-r1:671b

如果您的设备资源不足以运行 671b 参数的模型,可以根据实际算力选择参数量更小的版本,命令如下:

代码语言:javascript
复制
ollama run deepseek-r1:1.5b
ollama run deepseek-r1:7b
ollama run deepseek-r1:8b
ollama run deepseek-r1:14b
ollama run deepseek-r1:32b
ollama run deepseek-r1:70b

更多相关信息请查阅:https://ollama.com/library/deepseek-r1

下面以一个较小参数的模型为例进行简单演示:

基础环境

  • • Java 17或更高版本
  • • Maven 3.6+
  • • 已安装并运行的Ollama服务
  • • Spring Boot 3.4.x
  • • Spring AI 1.0.0-M6

首先,在项目中引入 Maven 依赖:

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>

配置Ollama

接下来,创建一个配置类来设置 Ollama API 和指定要使用的模型:

代码语言:javascript
复制
@Configuration
public class OllamaConfig {

    @Bean
    public OllamaApi ollamaApi() {
        return new OllamaApi();
    }

    @Bean
    public OllamaChatModel deepseekChatModel(OllamaApi ollamaApi) {
        OllamaOptions options = OllamaOptions.builder()
                .model("deepseek-r1:1.5b") // 指定使用的模型名称
                .build();

        return OllamaChatModel.builder()
                .ollamaApi(ollamaApi)
                .defaultOptions(options)
                .observationRegistry(ObservationRegistry.NOOP) // 可根据需要配置监控
                .modelManagementOptions(ModelManagementOptions.defaults())
                .build();
    }

    @Bean
    public OllamaEmbeddingModel deepseekEmbeddingModel(OllamaApi ollamaApi) {
        OllamaOptions options = OllamaOptions.builder()
                .model("deepseek-r1:1.5b") // 指定用于嵌入的模型名称
                .build();

        return OllamaEmbeddingModel.builder()
                .ollamaApi(ollamaApi)
                .defaultOptions(options)
                .observationRegistry(ObservationRegistry.NOOP)
                .modelManagementOptions(ModelManagementOptions.defaults())
                .build();
    }
}

创建REST API控制器

然后,创建一个 REST API 控制器来处理聊天请求:

代码语言:javascript
复制
@RestController
@RequestMapping("/api/chat")
public class ChatController {

    @Resource
    private OllamaChatModel chatModel; // 注入配置好的 OllamaChatModel

    @PostMapping
    public ChatResponseDto chat(@RequestBody ChatRequest request) {
        // 使用 UserMessage 封装用户输入
        String result = chatModel.call(new UserMessage(request.getPrompt()));
        return new ChatResponseDto(result);
    }
}

创建DTO类

定义数据传输对象 (DTO) 用于 API 请求和响应:

代码语言:javascript
复制
public class ChatRequest {
    private String prompt;
    
    // 省略getter/setter
    public String getPrompt() {
        return prompt;
    }

    public void setPrompt(String prompt) {
        this.prompt = prompt;
    }
}
代码语言:javascript
复制
public class ChatResponseDto {
    private String response;
    
    public ChatResponseDto(String response) {
        this.response = response;
    }
    
    // 省略getter/setter
    public String getResponse() {
        return response;
    }

    public void setResponse(String response) {
        this.response = response;
    }
}

测试集成

最后,编写一个测试类来验证 Spring AI 与 Ollama 的集成效果:

代码语言:javascript
复制
@SpringBootTest(classes = AiNexusApplication.class) // 替换为您的Spring Boot主类
public class OllamaTest {

    @Autowired
    private OllamaChatModel deepseekChatModel;

    @Test
    public void testChatModel() {
        String systemPrompt = "你是一个精通中文和英文的翻译大师。如果我给你英文就翻译成中文,给你中文就翻译成英文。";
        String message = "Ollama now supports tool calling with popular models such as Llama 3.1.";

        // 将系统提示和用户消息结合后发送给模型
        String result = deepseekChatModel.call(new UserMessage(systemPrompt + ":" + message));

        System.out.println(result);
    }
}

单元测试

单元测试的响应结果通常包含两部分:首先是 <think> 标签内的内容,这里展示了模型根据输入提示进行的思考过程;其次是模型最终给出的翻译结果。

API 访问

代码地址

Gitee 地址:https://gitee.com/FutureFusion-BNTang/ai-nexus


下表总结了 Spring AI 和 Ollama 的关键特性,帮助开发者更好地理解它们各自的定位和适用场景:

特性

Spring AI

Ollama

主要功能

AI 应用开发框架,集成多种 AI 服务

在本地运行和管理大语言模型 (LLM)

支持的模型

支持 OpenAI、Google、Ollama 等多种模型 (详见官方文档)

支持 Llama 3、DeepSeek-R1、Phi-4 等多种模型 (详见官方文档)

部署方式

通过 Spring Boot 集成到应用中

通过本地命令行或 Docker 独立部署

数据隐私

数据隐私取决于所选服务商,部分模型支持本地部署

模型完全在本地运行,数据隐私性高

适合场景

构建企业级 AI 应用

个人研究、开发及对数据隐私有高要求的项目

适用场景

  • • 尤其适合需要私有化部署 AI 能力的场景。

推荐资源

  • • https://livebench.ai/#/
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员NEO 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • AI 热潮下 Java 的机会
  • 什么是 Ollama?
  • 安装 Ollama
  • 验证安装
  • 运行测试
  • 基础环境
  • 配置Ollama
  • 创建REST API控制器
  • 创建DTO类
  • 测试集成
  • 单元测试
  • API 访问
  • 代码地址
  • 适用场景
  • 推荐资源
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档