使用Spring Boot接入ChatGPT

934 阅读3分钟

使用Spring Boot接入ChatGPT

原创2023-05-12 17:17·Java编程世界

创建 Spring Boot 项目

首先,我们需要创建一个 Spring Boot 项目。在 IntelliJ IDEA 中,可以通过选择 "File" -> "New" -> "Project" -> "Spring Initializr" 创建一个新的 Spring Boot 项目。然后,选择项目的名称和位置,以及需要添加的依赖项。在本例中,我们将添加以下依赖项:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>ai.openai</groupId>
        <artifactId>openai-api</artifactId>
        <version>1.0.0</version>
    </dependency>
</dependencies>

其中,spring-boot-starter-web 用于创建 Web 应用程序,而 openai-api 则是 ChatGPT 的 Java 客户端库,用于与 ChatGPT 服务进行通信。

配置 ChatGPT

接下来,我们需要配置 ChatGPT。首先,在 OpenAI 的官方网站上注册并创建一个 API 密钥。然后,在项目的配置文件 application.properties 中添加以下内容:

openai.apikey=YOUR_API_KEY

这里的 YOUR_API_KEY 是你在 OpenAI 上创建的 API 密钥。通过添加这个配置,我们可以在项目中使用 ChatGPT 的 Java 客户端库,并且能够访问 OpenAI 的 API 服务。

创建 ChatGPT 客户端

为了在 Spring Boot 中使用 ChatGPT,我们需要创建一个客户端来连接到 ChatGPT 服务。在项目中创建一个名为 ChatGPTClient 的类,并添加以下代码:

@Component
public class ChatGPTClient {

    private final OpenAI api;

    public ChatGPTClient(@Value("${openai.apikey}") String apiKey) {
        this.api = new OpenAI(apiKey);
    }

    public CompletionResponse generateText(String prompt, String model, int maxTokens) throws IOException {
        CompletionRequest request = new CompletionRequest.Builder()
                .prompt(prompt)
                .model(model)
                .maxTokens(maxTokens)
                .build();
        return api.complete(request).execute();
    }

}

这个类使用 @Component 注解来告诉 Spring Boot 这是一个组件,并且需要被自动装配到其他的组件中。它的构造函数接受一个 API 密钥,然后创建一个 OpenAI 对象。generateText 方法接受一个 prompt(即输入文本)、一个 model(即 ChatGPT 的模型名称)和一个 maxTokens(即生成文本的最大长度),并返回一个 CompletionResponse 对象,其中包含了 ChatGPT生成的文本。

创建 REST 接口

现在,我们可以使用 ChatGPTClient 类来创建一个 REST 接口,通过这个接口可以接收输入文本,并返回 ChatGPT 生成的文本。在项目中创建一个名为 ChatGPTController 的类,并添加以下代码:

@RestController
@RequestMapping("/chatgpt")
public class ChatGPTController {

    private final ChatGPTClient client;

    public ChatGPTController(ChatGPTClient client) {
        this.client = client;
    }

    @PostMapping
    public String generateText(@RequestBody Map<String, String> request) throws IOException {
        String prompt = request.get("prompt");
        String model = request.get("model");
        int maxTokens = Integer.parseInt(request.getOrDefault("maxTokens", "100"));
        CompletionResponse response = client.generateText(prompt, model, maxTokens);
        return response.getChoices().get(0).getText();
    }

}

这个类使用 @RestController 和 @RequestMapping 注解来创建一个 REST 接口,它接受一个 POST 请求,并从请求体中获取 prompt、model 和 maxTokens 参数。然后,它使用 ChatGPTClient 类来生成文本,并将生成的文本作为响应返回。

测试接口

现在,我们可以使用任何 HTTP 客户端来测试我们创建的 REST 接口。例如,在 Postman 中,我们可以发送一个 POST 请求到
http://localhost:8080/chatgpt,并在请求体中添加以下 JSON 数据:

{
    "prompt": "Hello, ChatGPT!",
    "model": "text-davinci-002"
}

这个请求将发送一个 prompt 到 ChatGPT 服务,使用 text-davinci-002 模型生成文本,并将生成的文本作为响应返回。我们可以在 Postman 中查看响应并验证是否正常工作。

到此为止,我们已经完成了 Spring Boot 接入 ChatGPT 的实现。我们创建了一个名为 ChatGPTClient 的客户端来连接到 ChatGPT 服务,然后创建了一个 REST 接口,通过这个接口可以接收输入文本,并返回 ChatGPT 生成的文本。这个实现可以让我们在 Spring Boot 项目中轻松使用 ChatGPT 的自然语言处理功能,为用户提供更好的交互体验。