保姆级Spring AI 注解式开发教程,你肯定想不到还能这么玩!

简介: 这是一份详尽的 Spring AI 注解式开发教程,涵盖从环境配置到高级功能的全流程。Spring AI 是 Spring 框架中的一个模块,支持 NLP、CV 等 AI 任务。通过注解(如自定义 `@AiPrompt`)与 AOP 切面技术,简化了 AI 服务集成,实现业务逻辑与 AI 基础设施解耦。教程包含创建项目、配置文件、流式响应处理、缓存优化及多任务并行执行等内容,助你快速构建高效、可维护的 AI 应用。

保姆级Spring AI 注解式开发教程,你肯定想不到还能这么玩!

一、Spring AI 简介

Spring AI 是 Spring 项目中一个面向 AI 应用的模块,旨在通过集成开源框架、提供标准化的工具和便捷的开发体验,加速 AI 驱动应用程序的构建和部署。它支持多种 AI 任务,包括自然语言处理(NLP)、计算机视觉(CV)和推荐系统等。

二、环境配置

1. 前置条件

  • JDK 版本:11 或更高。
  • Spring Boot:推荐使用 3.x 版本。
  • 依赖工具:Maven 或 Gradle。

2. 添加依赖

pom.xml 中添加以下依赖:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    <version>1.0.0-M5</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

或者在 build.gradle 中:

implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter:1.0.0-M5'
implementation 'org.springframework.boot:spring-boot-starter-web'

三、Spring AI 注解式开发

Spring AI 提供了注解式开发的支持,通过注解简化 AI 服务的集成和调用。以下是一个完整的示例,展示如何使用 Spring AI 的注解式开发。

1. 创建 Spring Boot 项目

使用 Spring Initializr 或手动创建一个 Spring Boot 项目,添加上述依赖。

2. 配置文件

application.yml 中配置 OpenAI 的 API Key 和模型:

spring:
  ai:
    openai:
      api-key: your_openai_api_key
      base-url: https://api.openai.com/v1
      chat:
        options:
          model: gpt-3.5-turbo

3. 创建自定义注解

创建一个自定义注解 @AiPrompt,用于标记需要 AI 处理的方法:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AiPrompt {
   
    String systemMessage() default "";
}

4. 实现 AOP 切面

创建一个 AOP 切面类,拦截带有 @AiPrompt 注解的方法调用:

@Aspect
@Component
@RequiredArgsConstructor
public class AiPromptAspect {
   

    private final ChatClient chatClient;

    @Around("@annotation(aiPrompt)")
    public Object processAiPrompt(ProceedingJoinPoint joinPoint, AiPrompt aiPrompt) throws Throwable {
   
        Object[] args = joinPoint.getArgs();
        if (args.length == 0) {
   
            return joinPoint.proceed();
        }

        String userMessage = args[0].toString();
        ChatClient.ChatClientRequestSpec requestSpec = chatClient.prompt();

        if (!aiPrompt.systemMessage().isEmpty()) {
   
            requestSpec = requestSpec.system(aiPrompt.systemMessage());
        }

        return requestSpec
                .user(userMessage)
                .call()
                .content();
    }
}

5. 使用注解

在服务类中使用 @AiPrompt 注解:

@Service
@RequiredArgsConstructor
public class ChatService {
   

    @AiPrompt(systemMessage = "你是一个专业的Java开发顾问,擅长解答Spring框架相关问题。")
    public String getJavaAdvice(String question) {
   
        return null; // 这个返回值会被AOP切面中的返回值覆盖
    }
}

6. 创建控制器

创建一个控制器类,调用服务类中的方法:

@RestController
@RequestMapping("/api")
@RequiredArgsConstructor
public class ChatController {
   

    private final ChatService chatService;

    @PostMapping("/chat")
    public String getJavaAdvice(@RequestBody String question) {
   
        return chatService.getJavaAdvice(question);
    }
}

四、运行与测试

启动 Spring Boot 应用程序后,可以通过以下方式测试:

curl -X POST http://localhost:8080/api/chat -H "Content-Type: application/json" -d "列出Spring中的重点概念"

如果配置正确,你将收到类似以下的响应:

Spring 是一个开源的 Java 平台,提供了丰富的功能支持,包括依赖注入、AOP、事务管理等。

五、高级功能

1. 流式响应处理

Spring AI 支持流式响应处理,适合处理长文本或分段返回结果的场景。可以通过以下方式实现:

@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ChatResponse> stream(@RequestParam String message) {
   
    return chatClient.prompt()
            .user(message)
            .stream()
            .chatResponse();
}

2. 请求缓存与优化

通过缓存减少重复请求,提高性能。可以使用 Spring Cache 实现:

@Cacheable("chatResponses")
public String getChatResponse(String message) {
   
    return chatClient.prompt()
            .user(message)
            .call()
            .content();
}

3. 多任务并行执行

适用于批量处理场景。可以使用 Spring 的 @Async 注解实现:

@Async
public CompletableFuture<String> getAsyncChatResponse(String message) {
   
    return CompletableFuture.supplyAsync(() -> chatClient.prompt()
            .user(message)
            .call()
            .content());
}

六、总结

Spring AI 提供了强大的注解式开发支持,通过注解简化了 AI 服务的集成和调用。通过 AOP 切面,可以自动处理 AI 接口的调用逻辑,显著提升开发效率。这种模式不仅降低了与 AI 服务交互的代码复杂度,还通过标准化注解配置实现了以下优势:

  • 提示词工程的可维护性提升;
  • 业务代码与 AI 基础设施解耦;
  • 无缝集成 Spring 生态的其他能力,如 Spring Cache 实现 AI 注解式缓存。

通过以上示例和说明,开发者可以快速上手 Spring AI 的注解式开发,构建高效、可维护的 AI 应用程序。

相关文章
|
24天前
|
人工智能 自然语言处理 算法
AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡
AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡
105 0
AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡
|
1月前
|
人工智能 缓存 JavaScript
通义灵码深度体验:AI编程助手如何提升全栈开发效率
通义灵码是一款强大的AI编程助手,支持从代码补全到智能体自主开发的全流程辅助。在React+Node.js项目中,其实现了100%字段匹配的Mongoose Schema生成;通过`@灵码`指令,30秒内完成天气查询CLI工具开发,包含依赖管理与文档编写。其上下文记忆能力可自动关联模块逻辑,如为商品模型扩展库存校验。集成MCP服务时,不仅生成基础代码,还推荐最佳实践并添加缓存优化。测试显示,其响应速度快、复杂任务准确率高,适合中小型项目快速迭代,初期开发效率提升约40%。尽管存在文档同步延迟和TypeScript支持不足的问题,仍是一款优秀的AI编程伙伴。
96 7
|
1月前
|
人工智能 搜索推荐 API
🚀 2小时极速开发!基于DeepSeek+智体OS的AI社交「头榜」震撼上线!
基于DeepSeek大模型与DTNS协议的革命性AI社交平台「头榜」震撼上线!仅需2小时极速开发,即可构建完整社交功能模块。平台具备智能社交网络、AI Agent生态、Prompt市场、AIGC创作等六大核心优势,支持低代码部署与个性化定制。开发者可快速接入DeepSeek API,体验去中心化架构与数据自主权。官网:[dtns.top](https://dtns.top),立即开启你的AI社交帝国!#AI社交 #DeepSeek #DTNS协议
67 4
|
1月前
|
人工智能 自然语言处理 文字识别
阿里云 AI 搜索开放平台新增:服务开发能力
阿里云 AI 搜索开放平台新发布:服务开发能,可通过集成 dsw 能力并新增 notebook 功能,进一步提升用户编排效率。
137 0
|
20天前
|
人工智能 弹性计算 自然语言处理
Bolt.diy:AI全栈开发,一句话生成网站
Bolt.diy是一个AI驱动的Web开发工具,支持通过自然语言Prompt直接生成、编辑和部署全栈应用,无需本地环境配置。本次实验基于DeepSeek于2025年5月28日发布了DeepSeek-R1-0528升级版本,显著提升了编程能力。
Bolt.diy:AI全栈开发,一句话生成网站
|
21天前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
91 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
21天前
|
人工智能 自然语言处理 开发工具
HarmonyOS NEXT~鸿蒙开发能力:HarmonyOS SDK AI 全解析
本文深入解析HarmonyOS SDK中的AI功能集,涵盖分布式AI引擎、核心组件(NLP、计算机视觉等)及智能决策能力。通过代码示例与开发实践指南,帮助开发者掌握环境配置、性能调优及多场景应用(智能家居、移动办公等)。同时探讨性能优化策略与未来演进方向,助力构建高效分布式智能应用。
73 9
|
1月前
|
人工智能 小程序 API
【一步步开发AI运动APP】九、自定义姿态动作识别检测——之关键点追踪
本文介绍了【一步步开发AI运动APP】系列中的关键点追踪技术。此前分享的系列博文助力开发者打造了多种AI健身场景的小程序,而新系列将聚焦性能更优的AI运动APP开发。文章重点讲解了“关键点位变化追踪”能力,适用于动态运动(如跳跃)分析,弥补了静态姿态检测的不足。通过`pose-calc`插件,开发者可设置关键点(如鼻子)、追踪方向(X或Y轴)及变化幅度。示例代码展示了如何在`uni-app`框架中使用`createPointTracker`实现关键点追踪,并结合人体识别结果完成动态分析。具体实现可参考文档与Demo示例。