Spring AI框架完整指南

Spring AI 框架完整指南(2025 年最新版)

Spring AI 是 Spring 生态中专为 AI 工程设计的应用框架,于 2024 年正式推出,并在 2025 年快速发展,已成为 Java 开发者构建生成式 AI 应用的首选工具。它简化了与大型语言模型(LLM)、嵌入模型和向量数据库的集成,让企业级 Java 应用轻松接入 AI 能力,如聊天机器人、RAG(Retrieval Augmented Generation)和智能代理。根据官方文档和 2025 年最新发布(如 Spring AI 1.1 GA),本指南从基础到高级全面解析,结合代码示例和最佳实践,帮助你快速上手。内容基于 Spring 官方文档、GitHub 仓库和 2025 年社区资源。

一、Spring AI 概述

Spring AI 的核心使命是“连接企业数据和 API 与 AI 模型”,它不是 Python AI 框架(如 LangChain)的直接移植,而是为 Java/Spring 生态量身定制,提供可移植的抽象层。不同于传统 Spring 模块,它聚焦生成式 AI,强调简洁性和生产就绪(如自动配置、观测性)。

为什么选择 Spring AI?(2025 年价值)

  • Java 原生:无需切换到 Python,保持端到端 Java 开发。
  • Spring 集成:无缝嵌入 Spring Boot,支持自动装配和 Starter。
  • 多提供商支持:统一 API 接入 OpenAI、Anthropic、Ollama 等,避免供应商锁定。
  • 企业级特性:工具调用、RAG、评估框架,解决幻觉(hallucination)和安全性问题。
  • 2025 年现状:Spring AI 1.1 GA(2025 年 11 月发布),引入 Agents 框架和 Bench 评估工具;兼容 Spring Framework 7.x 和 Java 21+。

适用场景:聊天助手、文档 Q&A、智能搜索、图像生成、代理式 AI(如代码生成工具)。

二、关键特性

Spring AI 的特性围绕可移植性和易用性设计,以下是核心亮点:

特性描述2025 年亮点
ChatClient API流式/同步聊天接口,类似 WebClient,支持多模型。集成 MCP(Model Context Protocol)协议,提升代理间通信。
嵌入与向量存储嵌入模型生成向量,向量数据库(如 PGVector、Neo4j)支持 RAG。新增 SQL-like 过滤 API,简化元数据查询。
工具/函数调用模型调用客户端工具(如天气 API),实现实时交互。@Tool 注解简化服务器暴露,支持 OAuth 安全。
结构化输出AI 输出映射到 POJO,避免解析 JSON。增强类型安全,支持复杂对象。
观测性追踪 AI 操作,支持 Prometheus/OpenTelemetry。新增聊天完成日志,便于调试。
评估框架Bench 工具评估生成内容,检测幻觉。Spring AI Bench:基准测试和评估套件。
文档 ETL摄取/转换/加载框架,处理企业数据。升级 Tika 3.2.3,支持多模态(文本+图像)。
代理与 Advisors构建代理模式,封装 AI 模式(如重试、缓存)。Agents 框架:5 大模式(简单代理、工具链等)。

这些特性让 Spring AI 适用于从简单聊天到复杂代理的场景。

三、架构解析

Spring AI 的架构基于抽象层 + 实现多态:

  • 抽象层:ChatModel、EmbeddingModel、VectorStore 等接口,提供统一 API。
  • 实现层:每个提供商(如 OpenAIChatModel)实现抽象,支持同步/流式。
  • Spring Boot 层:Starter 自动配置,@EnableSpringAi 启用。
  • 高级层:Advisors(模式封装)、MCP(代理协议)。

流程示例:用户输入 → ChatClient → 模型提供商 → 输出(可流式) → Advisors 处理(日志/缓存)。

2025 更新:兼容 GraalVM Native,提升冷启动性能;MCP 支持 stdio/HTTP SSE 端点。

四、支持的 AI 提供商

Spring AI 支持 20+ 提供商,确保灵活性。

类别提供商示例支持功能
聊天/LLMOpenAI、Anthropic、Microsoft、Amazon Bedrock、Google Vertex、Ollama聊天、流式、工具调用
嵌入OpenAI、Hugging Face、Cohere、Google Vertex向量生成
图像OpenAI DALL-E、Stability AI、Amazon Bedrock文本到图像、多模态
向量数据库PGVector、Neo4j、Milvus、Pinecone、Redis、WeaviateRAG、相似性搜索

配置示例(application.yml):

spring:ai:openai:api-key: ${OPENAI_API_KEY}chat:options:model: gpt-4o embedding:options:model: text-embedding-ada-002

五、快速入门

步骤 1: 添加依赖

使用 Spring Initializr(start.spring.io)添加 spring-ai-openai-spring-boot-starter

Maven 示例:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId></dependency>

步骤 2: 配置 API Key

在 application.yml 中设置密钥(环境变量推荐)。

步骤 3: 构建简单应用

启动类:

@SpringBootApplicationpublicclassSpringAiApp{publicstaticvoidmain(String[] args){SpringApplication.run(SpringAiApp.class, args);}}

六、基本用法代码示例

1. 聊天交互(ChatClient)

@ServicepublicclassChatService{privatefinalChatClient chatClient;publicChatService(ChatClient.Builder chatClientBuilder){this.chatClient = chatClientBuilder.build();}publicStringchat(String message){return chatClient.prompt().user(message).call().content();// 同步响应}}

流式示例:.call().stream() 返回 Flux。

2. 嵌入生成

@ServicepublicclassEmbeddingService{privatefinalEmbeddingModel embeddingModel;publicList<Double>embed(String text){EmbeddingResponse response = embeddingModel.embed(text);return response.getOutput().get(0).getEmbedding();}}

3. 图像生成

@ServicepublicclassImageService{privatefinalImageModel imageModel;publicStringgenerateImage(String prompt){ImageResponse response = imageModel.call(newPrompt(newImagePrompt(prompt)));return response.getResult().getOutput().getUrl();// 返回图像 URL}}

支持多模态:输入图像 + 文本。

4. RAG 示例(向量存储)

使用 PGVector:

@AutowiredprivateVectorStore vectorStore;publicSearchResultragSearch(String query){ vectorStore.add(List.of(Document.builder().content("企业数据...").build()));return vectorStore.similaritySearch(SimilarityRequest.query(query));}

集成 ChatClient:chatClient.prompt().user(query).advisors(ragAdvisor).call()

七、高级主题

1. RAG(Retrieval Augmented Generation)

  • 核心:嵌入查询 → 向量搜索 → 注入上下文 → LLM 生成。
  • 2025 实践:模块化 RAG 架构,支持多向量存储。

2. 代理(Agents)

Spring AI 1.1 引入 Agents 框架,支持 5 大模式:

  • 简单代理:基本工具调用。
  • 工具链:顺序执行工具。
  • 示例:天气代理(调用 MCP 工具)。
@ToolpublicStringgetWeather(String city){/* 调用 API */}

使用 Advisors 封装模式,如重试/缓存。

3. 评估与 Bench

使用 Spring AI Bench 评估生成质量:

// 伪代码:评估幻觉率BenchmarkResult result = bench.evaluate(generatedText, expected);

4. 安全与非功能需求

  • moderation 模型过滤内容。
  • OAuth for MCP。
  • 性能:虚拟线程支持,Native Image 兼容。

八、Spring Boot 集成与最佳实践

  • Starter 机制spring-ai-starter-vector-store-pgvector 等,一键集成。
  • 观测:集成 Micrometer,监控令牌使用。
  • 最佳实践
    • 使用 Advisors 封装模式,避免重复代码。
    • 优先结构化输出,减少解析错误。
    • 测试:Mock AI 提供商,单元测试 ChatClient。
    • 伦理:评估幻觉,遵守数据隐私(GDPR)。

2025 学习路线:从 ChatClient 入门 → RAG 项目 → Agents 高级 → Bench 优化。

Spring AI 让 Java 开发者轻松拥抱 AI 浪潮!需具体示例或 2025 迁移指南?随时问我。

Read more

基于STM32的智能家居安防系统设计与实现(完整项目)

基于STM32的智能家居安防系统设计与实现(完整项目)

基于STM32的智能家居安防系统设计与实现 摘要 随着物联网技术、嵌入式技术和智能控制技术的快速发展,智能家居安防系统逐渐成为现代家庭生活的重要组成部分,其能够实时监测家庭环境安全状态、防范安全隐患,为居民提供安全、便捷、舒适的居住环境。传统家庭安防方式多采用单一设备监测,存在功能分散、监测不全面、无法远程管控、报警响应滞后等问题,难以满足现代家庭对安防的多元化、智能化需求。 本文设计并实现了一套基于STM32F103C8T6单片机的智能家居安防系统,整合密码锁、温湿度采集、煤气烟雾检测、火灾报警、防盗报警、远程照明控制、实时时钟显示、OLED本地显示、WiFi手机APP远程监控、APP远程时间修改、本地蜂鸣器报警与远程报警联动等11项核心功能,构建了完整的智能家居安防系统架构。系统以STM32F103C8T6为核心控制单元,搭载密码锁模块、温湿度传感器、煤气烟雾传感器、火焰传感器、人体红外/门磁传感器、蜂鸣器报警模块、LED照明模块、实时时钟模块、OLED显示模块及WiFi通信模块,通过多模块协同工作,实现家庭安防的全方位监测、本地与远程双重管控,兼顾安全性、便捷性和实用性。

从低代码到Vibe Coding,速度如何变成资产与交付能力

从低代码到 Vibe Coding,开发入口变得更自然。很多研发不再从脚手架与目录结构起步,更常见的起点是先用自然语言说清楚目标,再由 AI编程 生成初版,然后用运行结果做快速校验。 Vibe Coding 把节奏推快了。Trae、Qoder 这类工具把检索、生成、改写、解释、测试串成一条对话链路,原型验证更快,项目推进也更像连续试验。 节奏变快以后,交付压力不会消失,只会更早露面。黑盒、AI幻觉、依赖库漂移、框架用法不一致、审查疲劳,这些都会跟着出现。问题不在 Vibe Coding,本质在结构能不能接住高频变更。 低代码这些年走出了不同路线。有人做的是更快的搭建,有人做的是流程与集成,也有人更接近工程底座,关注标准化研发、个性化定制与项目交付的长期并行。 Oinone 是低代码底座,也是企业级产品化引擎:用低代码驱动标准化研发与敏捷交付的一体化平台。很多讨论会回到几个朴素问题。AI编程 生成得再快,产出如何形成资产沉淀,升级与定制如何并行,

linux中从零开始,将OpenClaw 接入 QQ 机器人

linux中从零开始,将OpenClaw 接入 QQ 机器人

Linux 从零开始:将 OpenClaw 接入 QQ 机器人 本文提供完整的 OpenClaw 安装和 QQ 机器人接入指南,适用于 Debian 12 系统,模型使用华为云提供MAAS 📋 目录 1. 系统准备 2. 安装 OpenClaw 3. 配置 QQ 机器人 4. 测试与验证 5. 常见问题 🚀 系统准备 环境要求 * 操作系统:Debian 12(其他 Linux 发行版类似) * 用户权限:root 用户 * 网络:可正常访问外部网络 1.1 SSH 配置(可选) 如需通过

腾讯云端Openclaw+飞书 多机器人配置全攻略(新手友好版)

前言:随着AI自动化工具的普及,Openclaw凭借强大的自主执行能力,成为很多人提升效率的首选;而飞书作为高效协同工具,其机器人功能可无缝融入日常工作流。当两者结合,配置多机器人实现分工协作(如办公提效、信息管理、场景化响应),能进一步释放AI价值。 本文将从前期准备、分步配置、实战调试到常见问题,手把手教你完成Openclaw+飞书多机器人配置,全程无复杂操作,新手也能快速上手,建议收藏备用! 一、配置前必看:核心说明与前置准备 1.1 核心价值 Openclaw+飞书多机器人配置,核心是让多个飞书机器人分别绑定Openclaw的不同Agent,实现「分工协作、各司其职」——无需切换工具,在飞书内即可完成所有操作,大幅提升工作效率。 ✅ 典型分工场景: * 1个机器人负责日常指令响应 * 1个机器人负责定时推送资讯 * 1个机器人负责办公流程自动化(会议整理、报表生成等) 1.2 前置环境准备(必做) 提前准备好以下环境和工具,避免配置过程中卡顿,所有工具均为免费可用: * 基础环境:云端安装Openclaw;