admin 管理员组

文章数量: 887021

前言

最近随着ChatGPT的爆火,很多人都坐不住了,OpenAI API 允许开发人员访问该模型并在其自己的应用程序中使用。那么它能给我们我们Java开发带来那些好处呢?又该怎么接入Open AI呢?

在开始之前,我们需要在 OpenAI 网站 https://beta.openai/account/api-keys 上注册 API 密钥。只有拥有了 API 密钥,我们才可以开始向 API 发送请求。

注意:这里的API KEYS创建好以后一定要妥善保存,创建以后,第二次就无法再查看了,想要再看,只能删除了API KEYS然后重新创建。

Java中如何调用ChatGPT

既然ChatGPT这么智能,那么我们可以问它自己,Java该如何调用ChatGPT?如图所示:


从图中可以看出,OpenAI回答的很笼统,并不是程序员们所想要的,那么换一种方式问可以看到:


可以看出,是因为我们第一次问的过于笼统了,针对具体的需求,还是回答的很棒的。

那么我们根据它的答案来进行实操,看看是否有问题。

代码如下:

添加依赖和调用OpenAI API

<dependency>
    <groupId>com.openai</groupId>
    <artifactId>openai</artifactId>
    <version>0.4.5</version>
</dependency>
import com.openai.api.*;

public class OpenAIClient {
    private static final String API_KEY = "<your_api_key_here>";

    public static void main(String[] args) {
        OpenAI api = new OpenAI(API_KEY);
        CompletionRequest req = CompletionRequest.builder()
                .model("text-davinci-002")
                .prompt("Hello, world!")
                .maxTokens(5)
                .build();
        CompletionResponse resp = api.complete(req);
        System.out.println(resp.getChoices().get(0).getText());
    }
}

修改配置文件

application.yml文件中配置chatgpt相关参数:

chatgpt:
  model: text-davinci-003
  token: sk-xxxxxxxxxxxxxxxxxxx
  retries: 10

这里的model是选择chatgpt哪个模型,默认填好的是最优的模型了。
token就是上面申请的API KEYS。
retries指的是当chatgpt第一次请求回答失败时,重新请求的次数(增加该参数的原因是因为大量访问的原因,在某一个时刻,chatgpt服务将处于无法访问的情况)

将ChatGPT服务注入到Spring中

启动类上加入 @EnableChatGPT 注解则将ChatGPT服务注入到Spring中。

@SpringBootApplication
@EnableChatGPT 
public class YunduanApplication {

    public static void main(String[] args) {
        SpringApplication.run(YunduanApplication.class, args);
    }

}

ChatGPT测试

关于测试代码,我们就来问问chatGPT如何回答:

import org.junit.Test;
import static org.junit.Assert.assertEquals;
import com.openai.api.*;

public class ChatGptTest {
    private static final String API_KEY = "<your_api_key_here>";

    @Test
    public void testChatGpt() {
        OpenAI api = new OpenAI(API_KEY);
        CompletionRequest req = CompletionRequest.builder()
                .model("text-davinci-002")
                .prompt("Hello, world!")
                .maxTokens(5)
                .build();
        CompletionResponse resp = api.complete(req);
assertEquals("Hi there!", resp.getChoices().get(0).getText());
    }
}

在运行该测试之前,请将 API_KEY 替换为您的 OpenAI API 密钥。

如有需要体验ChatGPT链接的,点赞收藏+关注,即可私信博主哦~免费体验ChatGPT 🤗

本文标签: 项目 Spring AI Open