java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring Boot使用 OpenAI ChatGPT API

如何在 Spring Boot 中使用 OpenAI ChatGPT API

作者:江帅帅

这篇文章主要介绍了如何在Spring Boot中使用OpenAI ChatGPT API,我们探索了 OpenAI ChatGPT API 以生成对提示的响应,我们创建了一个 Spring Boot 应用程序,它调用 API 来生成对提示的响应,需要的朋友可以参考下

1、开始咯

我们来看看如何在 Spring Boot 中调用 OpenAI ChatGPT API。

我们将创建一个 Spring Boot 应用程序,该应用程序将通过调用 OpenAI ChatGPT API 生成对提示的响应。

2、OpenAI ChatGPT API

在开始具体讲解之前,让我们先探讨一下我们将在本教程中使用的 OpenAI ChatGPT API。我们将调用创建聊天完成 API 来生成对提示的响应。

2.1 API 参数与认证

我们看一下API的强制请求参数:

为了使用 API 进行身份验证,我们将生成一个 OpenAI API 密钥。我们将在调用 API 时在 Authorization 标头中设置此密钥。

cURL 格式的示例请求如下所示:

$ curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

此外,该 API 还接受许多可选参数来修改响应。

接着,我们将重点关注一个简单的请求,但让我们看一下一些有助于调整响应的可选参数:

2.2 API Response

API 响应将是一个带有一些元数据和选择字段的 JSON 对象。选择字段将是一个对象数组。每个对象都有一个文本字段,其中包含对提示的响应。

选择数组中的对象数量将等于请求中的可选 n 参数。如果未指定 n 参数,则选项数组将包含单个对象。

具体代码:

{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "\n\n 来啦,老弟……"
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}

响应中的使用字段将包含提示和响应中使用的令牌数量。这用于计算 API 调用的成本。

3、具体案例

我们将创建一个使用 OpenAI ChatGPT API 的 Spring Boot 应用程序。

为此,我们将创建一个 Spring Boot Rest API,该 API 接受提示作为请求参数,将其传递给 OpenAI ChatGPT API,并将响应作为响应正文返回。

3.1 添加依赖

首先,我们创建一个 Spring Boot 项目。我们需要该项目的 Spring Boot Starter Web 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

3.2 DTO

接下来,我们创建一个与 OpenAI ChatGPT API 的请求参数对应的 DTO:

public class ChatRequest {
    private String model;
    private List<Message> messages;
    private int n;
    private double temperature;
    public ChatRequest(String model, String prompt) {
        this.model = model;
        this.messages = new ArrayList<>();
        this.messages.add(new Message("user", prompt));
    }
    // getters and setters
}

继续定义 Message 类:

public class Message {
    private String role;
    private String content;
    // constructor, getters and setters
}

然后,我们为响应创建一个 DTO:

public class ChatResponse {
    private List<Choice> choices;
    // constructors, getters and setters
    public static class Choice {
        private int index;
        private Message message;
        // constructors, getters and setters
    }
}

3.3 控制器

我们创建一个控制器,它将接受提示作为请求参数并返回响应作为响应正文:

@RestController
public class ChatController {
    @Qualifier("openaiRestTemplate")
    @Autowired
    private RestTemplate restTemplate;
    @Value("${openai.model}")
    private String model;
    @Value("${openai.api.url}")
    private String apiUrl;
    @GetMapping("/chat")
    public String chat(@RequestParam String prompt) {
        // create a request
        ChatRequest request = new ChatRequest(model, prompt);
        // call the API
        ChatResponse response = restTemplate.postForObject(apiUrl, request, ChatResponse.class);
        if (response == null || response.getChoices() == null || response.getChoices().isEmpty()) {
            return "No response";
        }
        // return the first response
        return response.getChoices().get(0).getMessage().getContent();
    }
}

分析一下代码中一些重要部分:

3.4 RestTemplate

我们定义一个自定义 RestTemplate bean,它将使用 OpenAI API 密钥进行身份验证:

@Configuration
public class OpenAIRestTemplateConfig {
    @Value("${openai.api.key}")
    private String openaiApiKey;
    @Bean
    @Qualifier("openaiRestTemplate")
    public RestTemplate openaiRestTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.getInterceptors().add((request, body, execution) -> {
            request.getHeaders().add("Authorization", "Bearer " + openaiApiKey);
            return execution.execute(request, body);
        });
        return restTemplate;
    }
}

3.5 Properties

在 application.properties 文件中提供 API 的属性:

openai.model=gpt-3.5-turbo
openai.api.url=https://api.openai.com/v1/chat/completions
openai.api.key=your-api-key

然后,就可以运行程序了。

4、总结

我们探索了 OpenAI ChatGPT API 以生成对提示的响应。我们创建了一个 Spring Boot 应用程序,它调用 API 来生成对提示的响应。

到此这篇关于如何在 Spring Boot 中使用 OpenAI ChatGPT API的文章就介绍到这了,更多相关Spring Boot使用 OpenAI ChatGPT API内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文