ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • NestJS로 CLOVA Studio API 연동하기: 완벽 가이드
    Project/OpenList 2024. 9. 25. 19:37
    반응형

    안녕하세요, 여러분!

    오늘은 NestJS 서비스에서 CLOVA Studio API를 연동하는 방법에 대해 알아보려고 합니다.

     

    먼저, CLOVA Studio에 서비스 앱을 등록하는 것부터 시작해 볼까요?

     


     

    1. CLOVA Studio에 서비스 등록하기

    https://clovastudio.ncloud.com/

    CLOVA Studio에 접속한 뒤, 플레이 그라운드를 클릭해 주세요.

     

     

    플레이 그라운드에서는 여러가지 테스트를 해볼 수 있는 환경이 제공됩니다. 여기서 우리는 오른쪽 위 프로필 이름 아래에 있는 <> 테스트 앱 버튼을 눌러줄 거예요.

     

     

    작업을 먼저 만든 다음 테스트 앱 버튼을 누르면 모달이 뜰 텐데요. 여기서 우리는 "여기" 버튼을 눌러서 서비스 앱 신청 폼을 작성하도록 하겠습니다.

     

     

    2. 서버에서 CLOVA Studio API에 요청보내기

    서비스 앱을 생성하면, curl과 python 코드 예시가 나오는데요. 필자는 NestJS 프레임워크를 사용해 개발 중이라 TypeScript로 변경해 주었습니다.

     

    이제 제가 작성한 코드를 보면서 흐름을 설명드리겠습니다.

    전체 흐름

    먼저, generateChecklistItemWithAi는 컨트롤러에 연결된 서비스 함수입니다. 즉, 사용자에게 필요한 데이터를 입력받아 CLOVA Studio에게 데이터를 받아오는 전체 로직인 셈이죠.

    Request Header 정의

     

    URL에 요청을 보낼 때는 header가 필요한데요. 이 헤더는 CLOVA Studio에서 지정한 형태 그대로 보내주어야 합니다.

     

    코드에서 볼 수 있듯이, CLOVA Studio에 서비스 앱 신청하면서 발급받은 개인 정보를 이용해 헤더를 구성했어요. 헤더 형태는 리턴 형태와 같고, 각 key는 민감한 정보라 GitHub에 올라가면 안 되기 때문에 환경변수로 따로 관리해 주었습니다.

     

    🐥 만약 이 키가 노출된다면, 누구나 나의 계정으로 CLOVA Studio API를 사용해 통장이 텅텅 비어버릴 수 있으니 꼭 안전하게 관리하세요!

    Request Data 정의

    이제 헤더를 정의했으니, data 부분을 정의해 볼까요? 여기도 정해진 형태대로 보내야 합니다.

    generateRequestData 메서드에서 볼 수 있듯이, messages에 배열 형태로 system roleuser role을 정의해 주었어요.

    그리고,

    CLOVA_API_URL은 테스트 앱을 만들면 나오는 API URL 값을 입력해 주면 됩니다.

    AI_OPTIONS 값에는 아래와 같은 옵션들을 넣을 수 있습니다.

    • topP
    • topK
    • maxTokens
    • temperature
    • repeatPenalty
    • stopBefore
    • includeAiFilters

    자세한 내용은 공식 문서에 정리되어 있으니 양질의 데이터를 얻기 위해서는 꼭 공부해 보시길 바랍니다!

     

    https://guide.ncloud-docs.com/docs/clovastudio-info

     

    CLOVA Studio로 POST 요청

    이제 구성한 header와 data를 가지고 API URL로 POST 요청을 보낼 차례입니다. 저는 NestJS의 HttpServicepost 함수를 이용했어요.

     

    3. CLOVA Studio로부터 받은 응답 파싱하기

    위의 코드를 통해 깊은 depth에 있는 응답 데이터만 파싱할 수 있었습니다. 이제 프론트에서 원하는 대로 응답을 파싱하는 로직을 추가해 응답을 쏴주면 모든 로직이 끝나게 되는 거죠.

    🐥 비교적 간단하죠?

     

    4. 테스트

    Postman으로 API 테스트를 해 보았는데 시간이 좀 걸리긴 하지만 아주 잘 동작합니다!

     

    평균 소요 시간이 얼마나 되는지 테스트하고 싶어서 Postman의 Run Collection 기능을 사용해 100번의 요청을 연속으로 보내보았는데요. 평균 소요 시간이 6313ms인 걸 알 수 있었습니다.

    좀 오래 걸리는 걸 보니, 이대로 놔두면 안 되겠다는 생각이 마구마구 드는군요 ㅎㅎ 

     

    이상으로 NestJS에서 CLOVA Studio API를 연동하는 방법에 대해 알아보았습니다. 이 글이 여러분께 도움이 되었길 바라며, 궁금한 점이나 추가로 알고 싶은 내용이 있다면 편하게 댓글 남겨주세요!

     

    저는 이만 응답시간을 줄이는 방법을 고민하러~~ 총총

     

    비가 오는 날엔~
    RainyCode를 찾아와
    밤을 새워 기다릴게...
    반응형
Designed by Tistory.