保姆级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 应用程序。

相关文章
|
19天前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
957 47
|
19天前
|
人工智能 安全 API
20 万奖金池就位!Higress AI 网关开发挑战赛参赛指南
本次赛事共设三大赛题方向,参赛者可以任选一个方向参赛。本文是对每个赛题方向的参赛指南。
140 12
|
18天前
|
人工智能 运维 安全
加速智能体开发:从 Serverless 运行时到 Serverless AI 运行时
在云计算与人工智能深度融合的背景下,Serverless 技术作为云原生架构的集大成者,正加速向 AI 原生架构演进。阿里云函数计算(FC)率先提出并实践“Serverless AI 运行时”概念,通过技术创新与生态联动,为智能体(Agent)开发提供高效、安全、低成本的基础设施支持。本文从技术演进路径、核心能力及未来展望三方面解析 Serverless AI 的突破性价值。
|
20天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
1721 43
|
22天前
|
人工智能 自然语言处理 JavaScript
VTJ.PRO如何利用AI实现低代码开发
VTJ.PRO深度集成AI,实现设计稿转代码、自然语言生成组件等功能,显著提升低代码开发效率。支持双向代码穿梭、企业级工程化与多模型协同决策,兼顾开发速度与代码自由度,助力项目周期大幅压缩。
147 43
VTJ.PRO如何利用AI实现低代码开发
|
人工智能 自然语言处理 前端开发
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
淘宝推荐信息流业务,常年被“需求多、技术栈杂、协作慢”困扰,需求上线周期动辄一周。WaterFlow——一套 AI 驱动的端到端开发新实践,让部分需求两天内上线,甚至产品经理也能“自产自销”需求。短短数月,已落地 30+ 需求、自动生成 5.4 万行代码,大幅提升研发效率。接下来,我们将揭秘它是如何落地并改变协作模式的。
290 37
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
|
23天前
|
人工智能 IDE 开发工具
从6人日到1人日:一次AI驱动的客户端需求开发实战
从6人日到1人日:一次AI驱动的客户端需求开发实战
从6人日到1人日:一次AI驱动的客户端需求开发实战
|
30天前
|
人工智能 监控 Java
零代码改造 + 全链路追踪!Spring AI 最新可观测性详细解读
Spring AI Alibaba 通过集成 OpenTelemetry 实现可观测性,支持框架原生和无侵入探针两种方式。原生方案依赖 Micrometer 自动埋点,适用于快速接入;无侵入探针基于 LoongSuite 商业版,无需修改代码即可采集标准 OTLP 数据,解决了原生方案扩展性差、调用链易断链等问题。未来将开源无侵入探针方案,整合至 AgentScope Studio,并进一步增强多 Agent 场景下的观测能力。
1152 29
|
23天前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
23天前
|
人工智能 监控 Java
Spring AI Alibaba实践|后台定时Agent
基于Spring AI Alibaba框架,可构建自主运行的AI Agent,突破传统Chat模式限制,支持定时任务、事件响应与人工协同,实现数据采集、分析到决策的自动化闭环,提升企业智能化效率。
Spring AI Alibaba实践|后台定时Agent

热门文章

最新文章