超级详细Spring AI+ChatGPT(Java接入OpenAI大模型)
随着人工智能的快速发展,愈来愈多的企业和开发者开始探索如何将AI技术集成到他们的应用程序中。OpenAI 的 ChatGPT 作为当前最先进的对话生成模型之一,正成为众多应用的灵魂。本文将详细介绍如何使用 Spring 框架结合 Java 接入 OpenAI 的 ChatGPT 接口,助力企业和个人开发者实现智能对话功能。
一、前期准备
在开始之前,你需要完成以下几个步骤:
-
注册 OpenAI 账号:前往 OpenAI官方网站 注册一个开发者账号,并创建一个 API 密钥。
-
搭建 Spring Boot 环境:确保你的开发环境中安装了 JDK 和 Maven,使用 Spring Initializr 创建一个新的 Spring Boot 项目。
-
引入依赖:在
pom.xml
中引入必要的依赖,包括 Spring Web 和用于发送 HTTP 请求的依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
二、创建配置和请求模型
- 配置类:创建一个配置类来储存 OpenAI 的 API 密钥。
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Configuration
public class OpenAIConfig {
@Value("${openai.api.key}")
private String apiKey;
public String getApiKey() {
return apiKey;
}
}
- 请求模型:创建一个模型类来表示请求和响应内容。
import com.fasterxml.jackson.annotation.JsonProperty;
public class ChatRequest {
@JsonProperty("model")
private String model;
@JsonProperty("messages")
private Message[] messages;
public ChatRequest(String model, Message[] messages) {
this.model = model;
this.messages = messages;
}
// Getters and Setters
}
class Message {
@JsonProperty("role")
private String role;
@JsonProperty("content")
private String content;
public Message(String role, String content) {
this.role = role;
this.content = content;
}
// Getters and Setters
}
三、实现服务层
创建一个服务类,用于构建与 OpenAI 接口的交互。
import okhttp3.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
@Service
public class ChatService {
private final OpenAIConfig openAIConfig;
private final OkHttpClient httpClient;
private final ObjectMapper objectMapper;
@Autowired
public ChatService(OpenAIConfig openAIConfig) {
this.openAIConfig = openAIConfig;
this.httpClient = new OkHttpClient();
this.objectMapper = new ObjectMapper();
}
public String chat(String userMessage) throws IOException {
Message[] messages = {new Message("user", userMessage)};
ChatRequest chatRequest = new ChatRequest("gpt-3.5-turbo", messages);
String json = objectMapper.writeValueAsString(chatRequest);
RequestBody body = RequestBody.create(json, MediaType.parse("application/json"));
Request request = new Request.Builder()
.url("https://api.openai.com/v1/chat/completions")
.post(body)
.addHeader("Authorization", "Bearer " + openAIConfig.getApiKey())
.addHeader("Content-Type", "application/json")
.build();
try (Response response = httpClient.newCall(request).execute()) {
if (response.isSuccessful()) {
String responseBody = response.body().string();
return responseBody; // 处理返回的结果
} else {
throw new IOException("Request to OpenAI failed: " + response.message());
}
}
}
}
四、创建控制器
创建一个控制器类,定义 HTTP 接口供外部调用。
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/chat")
public class ChatController {
private final ChatService chatService;
public ChatController(ChatService chatService) {
this.chatService = chatService;
}
@PostMapping
public String chat(@RequestBody String userMessage) {
try {
return chatService.chat(userMessage);
} catch (IOException e) {
return "Error: " + e.getMessage();
}
}
}
五、总结
通过以上的步骤,我们成功搭建了一个使用 Spring Boot 的 Java 应用,能够与 OpenAI 的 ChatGPT 模型进行交互。用户只需通过调用 REST API 发送消息,即可获取AI的回复。
你可以根据项目需求对其进行扩展,例如增加异常处理、请求日志、缓存机制等,以提升系统的稳定性和性能。同时,随着 OpenAI 模型的更新与新功能的发布,我们也需要关注文档,及时调整代码以适应新的接口规范。