2025
【实战干货】Spring AI这样玩才高级!注解式AI服务开发,这些技巧 GitHub 都找不到
AI Services
LangChain4j是Java生态系统中的一个流行框架,它提供了两种抽象级别:低级API和高级API。其中,AI Services是一种专为Java量身定制的高级API解决方案。
AI Services的核心理念
AI Services的设计灵感来源于Spring Data JPA和Retrofit等框架,采用声明式接口定义所需的API,然后由框架自动生成实现该接口的代理对象。这种方法隐藏了与LLM交互的复杂性,提供了简单直观的API。
AI Services主要处理以下常见操作:
- 格式化输入以发送给LLM
- 解析LLM的输出
同时还支持更高级的功能:
- 聊天记忆管理
- 工具调用(Function Calling)
- 检索增强生成(RAG)
基本使用示例
以下是LangChain4j AI Services的最简单示例:
使用系统消息和用户消息
LangChain4j提供了@SystemMessage
和@UserMessage
注解来自定义提示:
基于Spring AI的自定义注解实现
虽然LangChain4j提供了全面的解决方案,但对于已经使用Spring AI的项目,我们可以创建一个轻量级的自定义注解来简化集成过程。
所需依赖
首先,我们需要添加以下依赖到项目中:
配置ChatClient
接下来,我们需要使用OllamaChatModel配置ChatClient。在Spring配置类中添加以下Bean定义:
创建自定义注解
现在,让我们创建@AiPrompt
注解,它将用于标记需要AI处理的方法:
实现AOP切面
接下来,我们需要实现一个AOP切面来拦截带有@AiPrompt
注解的方法调用:
使用示例
现在,我们可以在服务类中使用@AiPrompt
注解:
控制器示例
最后,我们可以在控制器中使用这个服务:
总结
参考 LangChain4j 的高级 API 设计形式,基于 Spring AI 自定义注解实现的 AI services 可以有效地实现提示词模板的集中管理和复用,通过 AOP 机制自动处理 AI 接口的调用逻辑,显著提升开发效率。 这种模式不仅降低了与 AI 服务交互的代码复杂度,还通过标准化注解配置实现了以下优势:
-
- 提示词工程的可维护性提升;
-
- 业务代码与 AI 基础设施解耦;
-
- 可以无缝集成 Spring 生态的其他能力,比如 Spring Cache 实现 AI注解式缓存