Spring AI 基础实战指南
环境准备
确保已安装 JDK 8+ 和 Maven/Gradle。推荐使用 Spring Boot 3.x 版本,通过 Spring Initializr 生成项目模板,勾选 Spring Web 和 Spring AI 依赖。
配置 API 密钥
在 application.properties 中添加 OpenAI 或 Azure AI 的 API 配置:
spring.ai.openai.api-key=your-api-key
spring.ai.openai.base-url=https://api.openai.com
基础功能实现
文本生成示例 创建 AiController 类,注入 ChatClient 实现对话:
@RestController
public class AiController {
private final ChatClient chatClient;
public AiController(ChatClient chatClient) {
this.chatClient = chatClient;
}
@GetMapping("/ai/generate")
public String generate(@RequestParam String prompt) {
return chatClient.call(prompt);
}
}
向量数据库集成 配置 PostgreSQL 或 Redis 作为向量存储:
spring.ai.vectorstore.pgvector.driver-class-name=org.postgresql.Driver
spring.ai.vectorstore.pgvector.url=jdbc:postgresql://localhost:5432/vectordb
高级功能
多模态处理 使用 ImageClient 处理图像生成请求:
@GetMapping("/ai/generate-image")
public ResponseEntity<byte[]> generateImage(@RequestParam String prompt) {
ImageResponse response = imageClient.call(
new ImagePrompt(prompt)
);
return ResponseEntity.ok(response.getResult().getOutput().getBytes());
}
流式响应 支持 SSE 流式传输结果:
@GetMapping(value = "/ai/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> streamResponse(@RequestParam String prompt) {
return chatClient.stream(new Prompt(prompt))
.map(ChatResponse::getGenerations)
.flatMapIterable(gens -> gens)
.map(Generation::getText);
}
性能优化
- 启用响应缓存:
@Cacheable注解缓存高频请求结果 - 限制并发请求:
@RateLimiter防止 API 过载 - 超时设置:配置
spring.ai.openai.timeout=30s
测试验证
使用 TestRestTemplate 编写集成测试:
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
class AiApplicationTests {
@Autowired
private TestRestTemplate restTemplate;
@Test
void testTextGeneration() {
String response = restTemplate.getForObject(
"/ai/generate?prompt=Hello", String.class);
assertNotNull(response);
}
}
部署建议
- 容器化:通过 Dockerfile 构建镜像
- 监控:集成 Actuator 暴露
/actuator/health端点 - 安全:配置
spring.security.oauth2保护 API 接口
通过以上步骤可快速构建基于 Spring AI 的智能应用,实际开发中需根据业务需求调整提示工程和模型参数。
3398

被折叠的 条评论
为什么被折叠?



