Spring Boot 3 + Spring AI 实战:十分钟集成 OpenAI API 构建智能应用

集成 OpenAI API 的准备工作

确保开发环境已安装 JDK 17+ 和 Maven/Gradle,并创建一个新的 Spring Boot 3 项目。在 pom.xml 中添加 Spring AI 和 OpenAI 的依赖:

XML 复制代码
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    <version>0.8.1</version>
</dependency>

配置 OpenAI API 密钥

application.propertiesapplication.yml 中配置 OpenAI 的 API 密钥和模型参数:

properties 复制代码
spring.ai.openai.api-key=your-api-key
spring.ai.openai.model=gpt-3.5-turbo

创建 AI 服务接口

定义一个服务类封装 AI 交互逻辑。例如,创建一个 AIService 类,注入 OpenAiChatClient 并实现对话功能:

java 复制代码
import org.springframework.ai.chat.ChatClient;
import org.springframework.stereotype.Service;

@Service
public class AIService {
    private final ChatClient chatClient;

    public AIService(ChatClient chatClient) {
        this.chatClient = chatClient;
    }

    public String generateResponse(String prompt) {
        return chatClient.call(prompt);
    }
}

实现控制器暴露 API

创建 REST 控制器提供外部访问接口,接收用户输入并返回 AI 生成的响应:

java 复制代码
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/ai")
public class AIController {
    private final AIService aiService;

    public AIController(AIService aiService) {
        this.aiService = aiService;
    }

    @PostMapping("/chat")
    public String chat(@RequestBody String prompt) {
        return aiService.generateResponse(prompt);
    }
}

测试与验证

启动应用后,通过 curl 或 Postman 测试接口:

bash 复制代码
curl -X POST http://localhost:8080/api/ai/chat -H "Content-Type: text/plain" -d "Spring Boot 3有哪些新特性?"

预期返回 OpenAI 生成的文本响应,例如对 Spring Boot 3 新特性的总结。

高级配置选项

支持自定义模型参数,如温度(控制随机性)和最大 token 数:

properties 复制代码
spring.ai.openai.options.temperature=0.7
spring.ai.openai.options.max-tokens=500

可通过 OpenAiChatOptions 在运行时动态调整参数:

java 复制代码
OpenAiChatOptions options = OpenAiChatOptions.builder()
    .withTemperature(0.5f)
    .withMaxTokens(200)
    .build();

chatClient.call(new Prompt("你的提示", options));
相关推荐
学长毕业设计2 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
东小西3 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西3 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
许彰午3 小时前
22-DataCenter报文序列化
java·低代码·架构·状态模式
2601_962065253 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql
小范同学_3 小时前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
傲笑风4 小时前
【openvino】tinybert基于openvino服务化部署(四)
人工智能·python·自然语言处理·nlp·bert·openvino
予昊4 小时前
从零实现“在线五子棋对战“:WebSocket 实时通信 + 段位匹配
java·开发语言·网络·websocket
2601_962203514 小时前
【SpringAI入门】初识SpringAI
java
weixin_461408585 小时前
Mybatis-flex小记
java·开发语言·mybatis