一.干货干货!!!SpringAI入门到实战-小试牛刀
前言
SpringAI1.0.0正式版在前些时间正式出炉,这意味着它的版本开始稳定可以用于商用了,前面我们学习了LangChain4j开发AI应用,相对而言SpringAI也是非常重要的AI落地框架很多企业也在使用,本篇文章我们来介绍如何在SpringBoot项目中入门SpringAI.
认识SpringAI
SpringAI 是 Spring 官方推出的 AI 集成框架,旨在简化 Java 开发者对接各类 AI 模型和服务的过程,提供高效、灵活的企业级 AI 应用开发支持。其主要功能包括:
- 多模型支持 :SpringAI 支持多种主流 AI 模型,包括 OpenAI(GPT-4、GPT-3.5)、Azure OpenAI、Hugging Face、Anthropic(Claude)、Google Vertex AI 等,开发者可通过标准化 API 快速切换模型,无需重复适配不同厂商的 SDK。支持:聊天模型,嵌入模型,图像模型,矢量数据库等
- 智能 Prompt 工程 : 支持参数化提示词(Prompt),结合 Thymeleaf 或 FreeMarker 等模板引擎动态生成内容。自动维护多轮对话的上下文,优化大模型的连续交互能力
- 数据预处理与增强 : 内置文本分块(Chunking)工具,适用于 RAG(检索增强生成)场景,支持 OpenAI Embeddings 或本地向量库(如 Sentence-Transformers),便于语义搜索和相似度匹配。
- 函数调用 :支持 OpenAI 的函数调用(Function Calling),将自然语言指令映射到业务逻辑
相比Langchain4j而言功能上都差不多,前者是 LangChain 的 Java 移植版,更注重链式调用和灵活编排,适合复杂 AI 工作流开发。SpringAI深度集成 Spring 生态,提供开箱即用的自动化配置,适合 Spring Boot 项目快速接入 AI 功能。
整合SpringAI
1. 引入依赖
首先我们需要搭建一套SpringBoot基础环境,那么我们需要集成哪些东西呢 ,具体pom.xml如下
- SpringBoot : 版本采用 3.3.8
- JDK版本:21
- SpringAI : 1.0.0 正式版本
参考文档:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.8</version>
</parent><properties><java.version>21</java.version><spring-ai.version>1.0.0</spring-ai.version>
</properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>${spring-ai.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository><repository><name>Central Portal Snapshots</name><id>central-portal-snapshots</id><url>https://central.sonatype.com/repository/maven-snapshots/</url><releases><enabled>false</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories>
- spring-ai-bom : 引入SpringAI的依赖声明
- https://repo.spring.io/snapshot :指定Spring的Maven仓库地址,否则依赖可能无法下载
- spring-ai-starter-model-openai : SpringAI 整合Openai的基础依赖,因为OpenAI的ChatGPT出来的比较早,其他AI厂商大多遵循OpenAI的标准,所以我们通过OpenAI的集成方式也可以集成其他厂商的AI模型
2.项目配置
大模型我们采用阿里百炼平台的,官网地址:https://bailian.console.aliyun.com/?tab=model#/model-market
- 首先需要登录百炼大模型注册账号
- 在百炼大模型控制台找到API-KEY菜单,创建apikey
拿到百炼平台的APIkey之后,我们来配置yml文件,配置如下:
spring:ai:openai:api-key: ${API_KEY} #百炼的api_keybase-url: https://dashscope.aliyuncs.com/compatible-mode #阿里百炼平台模型地址chat:options:model: qwen-max-latest #模型名字temperature: 1 #温度,0-1,越大回答问题越人性化
server:port: 8888
- 这里的 ${API_KEY} 是百炼平台创建的APIkey,你可以通过环境变量配置,或者在IDEA中指定环境变量从而避免明文展示
上面的配置我们采用了spring.ai.openai的协议标准来配置百炼平台的千问大模型,它是可以支持的。
3.配置ChatClient
接下来我们来创建SpringAI的ChatClient 对话客户端,创建一个配置类,然后通过@Bean来创建,代码如下
@Configuration
public class AgentConfig {@Beanpublic ChatClient chatClient(OpenAiChatModel model){return ChatClient.builder(model).build();}
}
- 这里是通过注入:OpenAiChatModel 对话模型指定给ChatClient。因为我们在yml中配置了OpenAi的对话模型,所以系统会自动装配 OpenAiChatModel 对象。
然后需要创建一个启动类,启动类采用最简单的即可
@SpringBootApplication
public class SpringAiAgentApplication {public static void main(String[] args) {SpringApplication.run(SpringAiAgentApplication.class, args);}}
4.编写Controller
编写Controller注入ChatClient 客户端实现和大模型对话
@RestController
@RequiredArgsConstructor
public class AgentController {private final ChatClient chatClient;@RequestMapping(value = "/ai/chat")public String chat(@RequestParam String prompt){return chatClient.prompt("模拟女朋友的身份回答问题,不能暴露你AI的身份").user(prompt).call().content();}}
- chatClient.prompt().user(prompt) : 指定提示词,prompt(“系统提示词”)方法可以指定系统提示词让AI按照我们的要求来回答问题。 user(“用户提示词”)可以指定用户提示词,也就是用户的提问内容
上面的对话方式采用的是非流式的,也就是说客户端需要等待大模型把所有的结果处理完之后一起返回,那么这可能需要等待的时间比较长,如果想要采用流式输出可以修改如下
@RequestMapping(value = "/ai/chat")public Flux<String> chat(@RequestParam String prompt){return chatClient.prompt("模拟女朋友的身份回答问题,不能暴露你AI的身份").user(prompt).stream().content();}
5.测试对话
启动项目,调用 chat接口,测试效果如下
整合本地模型Ollama
1.Ollama安装大模型
进入Ollama官网 : https://www.ollama.com/ 找到 download ,根据自己的系统环境下载对应的Ollama安装包,我这里下载的是windows版本
下载好之后双击安装,安装好之后进入到ollama安装目录,使用命令提示符窗口运行命令下载deepseek模型,模型下载且运行好之后就可以直接对话,如下:
模型的版本可以在ollama官网下载:https://www.ollama.com/library/deepseek-r1, 根据自己机器配置情况下载合适的版本
2.项目整合ollama
SpringAI1.0.0版本中的依赖和之前的版本有些不一样,如下:
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>
接着我们在yaml中配置ollama相关属性
spring:ai:ollama:base-url: http://localhost:11434 #ollama的接口地址chat:model: deepseek-r1:7b #模型名字
接着我们为Ollama配置新的ChatClient,在 AgentConfig 中增加Bean的配置
@Beanpublic ChatClient ollamaClient(OllamaChatModel model){return ChatClient.builder(model).build();}
3.编写测试
在controller中注入ChatClient ollamaClient 进行测试,效果如下
@RequestMapping(value = "/ai/chat/ollama")public Flux<String> ollamaChat(@RequestParam String prompt){return chatClient.prompt("模拟女朋友的身份回答问题,不能暴露你AI的身份").user(prompt).stream().content();}
测试效果和使用百炼平台的模型是一样的,只是可能本地的模型会稍微慢一点,因为本地机器配置问题。
总结
本篇文章我们介绍了如何在SpringBoot整合SpringAI1.0.0版本,其中包括百炼大模型的接入,以及本地大模型DeepSeek模型的接入,以及如何指定系统提示,流式输出等。如果文章对你有帮助请三连,你的鼓励是我最大的动力,点赞破千就是头发掉光也出下章。