baeldung - Using OpenAI ChatGPT APIs in Spring Boot
이 글을 기반으로 안되는 부분을 고쳐가며 진행합니다.
일단 해당글을 쭉 읽으면서 설정, 컨트롤러 DTO 등을 준비해주세요.
일단 모든 DTO에는 롬복의 @Data 어노테이션을 붙혔습니다.
링크 글의 내용대로 설정을 완료한 후 진행하면 429 문제가 발생할 수 있습니다.
저는 가입한지 3개월이 지나서 무료 토큰이 만료되어서 발생한 문제 같습니다.
이 문제는 계정에 결제할 카드를 등록해주면 해결됩니다.
https://platform.openai.com/account/billing/overview
해당 페이지로 들어가서 카드를 등록해주면 해결됩니다.
카드 등록시에 최소 5달러 정도의 요금이 듭니다.
400 Bad Request:
"message": "0 is less than the minimum of 1 - 'n'"
"type": "invalid_request_error"
이제 요청을 보내면 이런 응답을 받을 수 있습니다.
n은 생성할 응답을 의미하는데, 만약 2로 설정하면 2개의 응답을 GPT로부터 받을 수 있습니다.
하지만 링크 글에서는 n을 int형으로 설정하고 초기값을 주지 않았습니다.
그래서 n을 0으로 요청을 보내게 돼서 오류가 발생합니다.
여러 응답을 받을 일이 없기 때문에 1로 설정해주겠습니다.
또한 역직렬화를 생각해서 기본생성자를 추가해주겠습니다.
@Data
public class ChatRequest {
private String model;
private List<Message> messages;
private final int n = 1; // 수정하기
private double temperature;
public ChatRequest(String model, String prompt) {
this.model = model;
this.messages = new ArrayList<>();
this.messages.add(new Message("user", prompt));
}
}
@Data
@NoArgsConstructor // 추가하기
public class Message {
...
}
@Data
@NoArgsConstructor // 추가하기
public class ChatResponse {
...
@Data
@NoArgsConstructor // 추가하기
public static class Choice {
...
}
}
http://localhost:8080/chat?prompt=HelloWorld! 로 요청하면 응답을 받을 수 있습니다.
서버에 로그를 ChatRequest와 ChatResponse의 로그를 찍어봐도 응답을 잘 받은것을 확인할 수 있습니다.

