超级详细Spring AI+ChatGPT(Java接入OpenAI大模型)

随着人工智能的快速发展,愈来愈多的企业和开发者开始探索如何将AI技术集成到他们的应用程序中。OpenAI 的 ChatGPT 作为当前最先进的对话生成模型之一,正成为众多应用的灵魂。本文将详细介绍如何使用 Spring 框架结合 Java 接入 OpenAI 的 ChatGPT 接口,助力企业和个人开发者实现智能对话功能。

一、前期准备

在开始之前,你需要完成以下几个步骤:

  1. 注册 OpenAI 账号:前往 OpenAI官方网站 注册一个开发者账号,并创建一个 API 密钥。

  2. 搭建 Spring Boot 环境:确保你的开发环境中安装了 JDK 和 Maven,使用 Spring Initializr 创建一个新的 Spring Boot 项目。

  3. 引入依赖:在 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>

二、创建配置和请求模型

  1. 配置类:创建一个配置类来储存 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;
    }
}
  1. 请求模型:创建一个模型类来表示请求和响应内容。
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 模型的更新与新功能的发布,我们也需要关注文档,及时调整代码以适应新的接口规范。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部