쉽게 Spring에서 ChatGPT를 연동해보기

Jang990·2023년 11월 27일
0

시작하기

baeldung - Using OpenAI ChatGPT APIs in Spring Boot
이 글을 기반으로 안되는 부분을 고쳐가며 진행합니다.
일단 해당글을 쭉 읽으면서 설정, 컨트롤러 DTO 등을 준비해주세요.

일단 모든 DTO에는 롬복의 @Data 어노테이션을 붙혔습니다.

429 Too Many Request 문제

링크 글의 내용대로 설정을 완료한 후 진행하면 429 문제가 발생할 수 있습니다.
저는 가입한지 3개월이 지나서 무료 토큰이 만료되어서 발생한 문제 같습니다.
이 문제는 계정에 결제할 카드를 등록해주면 해결됩니다.

관련글 - https://stackoverflow.com/questions/75898276/openai-chatgpt-gpt-3-5-api-error-429-you-exceeded-your-current-quota-please

https://platform.openai.com/account/billing/overview
해당 페이지로 들어가서 카드를 등록해주면 해결됩니다.
카드 등록시에 최소 5달러 정도의 요금이 듭니다.

DTO 수정하기

400 Bad Request: 
"message": "0 is less than the minimum of 1 - 'n'"
"type": "invalid_request_error"

이제 요청을 보내면 이런 응답을 받을 수 있습니다.
n은 생성할 응답을 의미하는데, 만약 2로 설정하면 2개의 응답을 GPT로부터 받을 수 있습니다.
하지만 링크 글에서는 nint형으로 설정하고 초기값을 주지 않았습니다.
그래서 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의 로그를 찍어봐도 응답을 잘 받은것을 확인할 수 있습니다.

profile
공부한 내용을 적지 말고 이해한 내용을 설명하자

0개의 댓글