Spring AI 使用教程
Spring AI 使用教程(2025年5月24日更新)
一、环境搭建与项目初始化
-
创建Spring Boot项目
- 使用IDEA或Spring Initializr创建项目,选择JDK 17或更高版本(推荐21)。
- 勾选依赖项:
Spring Web
、Lombok
,Maven或Gradle作为构建工具。 - 添加Spring AI依赖(以OpenAI为例):
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId><version>1.0.0-M6</version> </dependency>
-
配置API密钥
在application.yml
中配置模型服务(以DeepSeek为例):spring:ai:openai:api-key: sk-your-api-keybase-url: https://api.deepseek.com/v1chat:options:model: deepseek-chat ```<sup>5</sup><sup>8</sup><sup>11</sup>
二、基础功能实现
-
调用大模型生成文本
- 通过
ChatClient
发送请求:@RestController public class ChatController {@Autowiredprivate ChatClient chatClient;@GetMapping("/chat")public String chat(@RequestParam String prompt) {return chatClient.prompt(prompt).call().content();} }
- 启动应用后,访问
http://localhost:8080/chat?prompt=写一首春天的诗
即可获取响应。
- 通过
-
文档处理(ETL)
- 添加文档处理依赖(如PDF解析):
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-tika-document-reader</artifactId> </dependency>
- 读取并转换本地文档:
DocumentReader reader = new TikaDocumentReader(); List<Document> docs = reader.read("file:///data.pdf");
- 添加文档处理依赖(如PDF解析):
三、高级应用场景
-
RAG(检索增强生成)
- 结合本地数据与大模型,实现知识库增强问答:
- 使用
spring-ai-spark
集成讯飞星火:<dependency><groupId>com.iflytek.spark</groupId><artifactId>spring-ai-spark-spring-boot-starter</artifactId><version>1.0.0-M6-SNAPSHOT</version> </dependency>
- 将本地数据向量化存储,通过语义检索生成精准答案。
- 使用
- 结合本地数据与大模型,实现知识库增强问答:
-
MCP服务集成
- 搭建MCP(Model Context Protocol)服务:
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-server-webmvc</artifactId> </dependency>
- 通过JSON-RPC与模型交互,支持多模态输入输出。
- 搭建MCP(Model Context Protocol)服务:
四、实战案例:构建网页聊天应用
-
前端集成
- 使用Thymeleaf或React/Vue搭建前端页面,通过WebSocket或SSE与后端通信。
- 示例代码片段(SSE推送):
@GetMapping("/stream-chat") public SseEmitter streamChat(@RequestParam String prompt) {SseEmitter emitter = new SseEmitter();chatClient.prompt(prompt).stream().subscribe(content -> {emitter.send(content);});return emitter; }
-
记忆存储与会话管理
- 使用
ChatMemory
组件保存上下文:@Bean public ChatMemory chatMemory() {return new InMemoryChatMemory(50); // 保留最近50轮对话 }
- 使用
五、注意事项与调试技巧
-
常见问题
- 模型响应慢:调整超时配置
spring.ai.openai.chat.options.timeout=60s
。 - 中文支持不佳:在
prompt
中明确指定“用中文回答”。
- 模型响应慢:调整超时配置
-
日志调试
- 启用详细日志:
logging:level:org.springframework.ai: DEBUG
- 启用详细日志:
六、总结与扩展
Spring AI通过模块化设计,支持快速接入主流模型(如DeepSeek、讯飞星火)和高级功能(RAG、MCP)。开发者可结合业务需求扩展以下场景:
- 多模型混合调用:通过
@Qualifier
注解切换不同模型。 - 工具调用:集成外部API(如天气查询)增强AI能力。
- 企业级部署:结合Kubernetes实现弹性扩缩容。