ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ChatGPT API] 프로젝트에 GPT API 적용하기(라이브러리 활용하기)
    Spring Boot 2024. 5. 30. 12:50

    신규 프로젝트에 적용해야하는 채팅 API 를 도입을 해야하는데

    전담해서 맡기로 했다

    그래서 chatGPT API 를 공부를 하고 프로젝트에 적용을 시키는 과정을 기록해보겠다.

    (이지 버전 ...)  easy.....

     

     

     

     

    1. 우선 API key를 발급을 해준다.

     

    https://platform.openai.com/api-keys

     

    위 링크로 들어가서 로그인을 하고 키를 발급하고,

    발급된 키는 한번 받으면 나중에 확인이 안되기 때문에 잘 저장해둔다.

    그리고 블로그 상에서 발급된 키는 24시간동안만 유효하다라는 글이 있던데,

    공식문서와 GPT한테 물어봤을때는 24시간동안만 유효하다라는 말은 없다

     

     

    2. 그리고 properties 설정을 해준다

     

    #ChatGPT API
    openai.model=사용하고자 하는 OpenAI 모델 이름
    openai.secret-key=발급받은 키
    openai.url.model=사용가능한 모델 목록을 가져오기 위한 엔드포인트 URL
    openai.url.prompt=새로운 텍스트 생성 요청을 처리하기 위한 엔드포인트 URL
    openai.url.legacy-prompt=구형 프롬프트 요청을 처리하기 위한 엔드포인트 URL -- 선택

     

    example

    #ChatGPT API
    openai.model=gpt-3.5-turbo
    openai.secret-key=secret_key
    openai.url.model=https://api.openai.com/v1/models
    openai.url.prompt=https://api.openai.com/v1/completions

     

    3. Gradle 에 라이브러리를 추가해준다

        /* ChatGPT */
        implementation 'com.theokanning.openai-gpt3-java:service:0.14.0'

     

    4. Controller 작성

    /**
     * ChatGPT API
     *
     * @author : ese
     * @fileName : ChatGPTController
     * @since : 2024.05.27
     */
    @RestController
    //@RequestMapping(value = "/api/v1/chatGpt")
    @Log4j2
    public class ChatGPTController {
    
        @Value("${openai.model}")
        private String model;
    
        @Value("${openai.secret-key}")
        private String apiKey;
    
        @GetMapping("/chat")
        public String chat(@RequestParam String prompt) {
            String modifiedPrompt = prompt + "멍 말투로 말해줘.";
    
            OpenAiService service = new OpenAiService(apiKey);
            List<ChatMessage> messages = new ArrayList<ChatMessage>();
            ChatMessage message = new ChatMessage("user", modifiedPrompt );
            messages.add(message);
            ChatCompletionRequest completionRequest = ChatCompletionRequest
                    .builder()
                    .messages(messages)
                    .model(model)
                    .temperature(0.6)
                    .n(1)
                    .build();
            List<ChatCompletionChoice> choices = service.createChatCompletion(completionRequest).getChoices();
            String returnString = "";
            for (ChatCompletionChoice choice : choices) {
                returnString += "response: " + choice.getMessage().getContent() + System.lineSeparator();
            }
            return returnString;
        }

     

    builder 패턴으로 넣어야하는 파라미터 값을 넘겨주었다.

     

    5. 테스트 해보기

     

    http://localhost:8080/chat?prompt=질문내용

    이렇게 파라미터를 GET방식으로 호출하게 되면,

     

     

    이렇게 response가 잘 받아오는걸 확인할수 있다

     


    추가적으로 해당 라이브러리를 활용해서 구현을 하는 도중 마주쳤던 에러가 

    You exceeded your current quota, please check your plan and billing details.

     

    이런 에러가 있었는데

    단순히 이건 결제 정보를 입력을 하지 않아서 생겼던 오류 였다

    결제 정보를 입력했더니 바로 response를 받아올 수 있었다

    결제 정보 입력하는 방법은 구글링으로 잘 정리되어있는 블로그 보면서 등록했다.

     


     

     

    위 방법은 라이브러리를 사용해서 구현한 방법으로 다소 쉽다고 .. 생각이된다

    response와 parameter를 custom하려면 연구가 더 필요하다.

     

Designed by Tistory.