ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HyperCLOVA X를 활용한 공부앱 만들기
    AI/HyperCLOVAX 2024. 3. 3. 20:48

     

    많은 기업들이 작년 재작년까지 계속해서 생성형 AI를 도입해 보고 적용해 보면서 새로운 먹거리 찾기에 나섰는데요. 올해 2024년은 실제로 생성형 AI가 비즈니스에 적합한지 확인하고 검증해 나가는 시기라고 합니다. 하지만 아직까지 많은 기업들에서 생성형 AI를 어떻게 적용하고 있는지, 또 어떤 서비스를 하고 있는지 구체적으로 밝혀진 바가 거의 없는데요. 그래서 저도 여태 생성형 AI를 요약과 문장 생성, 질문에 대한 답변 등으로만 활용하다가 이번에 네이버클라우드 퇴근길 테크밋업에 다녀오고 나서 한 가지 좋은 인사이트를 얻게 되었습니다.

     

    바로 생성형 AI를 답변 생성이 아닌 질문 생성에 활용하는 것인데요. 지난번 네이버클라우드 퇴근길 테크밋업에서 발표를 진행해 주신 스톤즈랩, 클라비 연사자 분들도 이 방법을 활용했다고 합니다. 저는 이 아이디어가 생성형 AI의 SaaS 비즈니스로써의 타개점이라고 느껴질 만큼 큰 감명을 받았습니다.

     

    그래서 저도 하이퍼클로바 X를 활용해서 제가 공부한 내용들을 바탕으로 질문들을 생성해보고 해당 결과들을 바탕으로 효율적으로 복습이 가능한 플래시카드 앱을 한번 만들어 보았는데요. 이번 포스팅에서는 제가 직접 AI 공부앱을 만들어보는 과정에서 겪었던 경험과 후기에 대해 공유드리도록 하겠습니다.

     


     

    🤖 CLOVA X 사용해보기

    먼저 아래 사이트로 이동해서 CLOVA X를 사용해 보도록 하겠습니다. CLOVA X는 ChatGPT와 마찬가지로 LLM(Large Language Model)을 바탕으로 만들어진 대화형 에이전트인데요.

     

    네이버의 초대규모(Hyperscale) 언어모델인 HyperCLOVA X 기술을 바탕으로 만들어진 한국형 ChatGPT라고 볼 수 있습니다. 따라서 네이버 계정만 있으면 누구나 손쉽게 로그인해서 원하는 질문을 하고 답변을 얻어갈 수 있습니다.

     

     

    CLOVA X

    무한한 가능성을 여는 새로운 대화의 시작

    clova-x.naver.com

     

    저는 이 서비스를 활용해서 제가 공부한 내용들을 바탕으로 질문을 어떻게 생성해 내는지 확인해 보도록 하겠습니다. 마침 제가 요즘 한창 공부 중인 클로바 스튜디오의 내용을 프롬프트로 전달해 보도록 하겠습니다. 아래는 제가 공부한 내용을 마크다운 언어로 정리한 예시파일 내용입니다.

     

    # 클로바 스튜디오
    HyperCLOVA 언어 모델을 활용하여 사용자가 입력한 내용에 따라 AI 기술을 통해 생성된 문구를 출력하는 네이버 클라우드 플랫폼의 서비스
    
    # 제공되는 기능
    - 문장 생성
    - 요약
    - 분류
    - 대화
    - 문장 변환(입력한 예제와 유사한 스타일의 문장으로 문장 형태 변환 가능)
    - AI Filter(민감, 안전하지 않은 결과물 생성 알림)
    
    # 용어 정리
    - 프롬프트 : 작업을 수행하기 위해 입력해야할 내용
    - 결괏값 : 프롬프트를 기반으로 생성되는 결괏값 (HyperCLOVA 언어 모델은 확률 기반으로 작동하기 때문에 같은 프롬프트을 입력하더라도 다른 결괏값이 생성될 수 있음)
    - 토큰 : 자연어 처리를 위해 하나의 단어를 세분화한 단어 조각(맛있어 => 맛, 있어)
    - 파라미터 : 플레이그라운드의 설정 값
    - Engine : CLOVA Studio에서 사용하는 언어 모델(LK, HCX..)
    - Top K : 확률 값이 가장 높은 K개 중 랜덤으로 하나(왠만하면 0으로 설정 권장)
    - Top P : 토큰 제거시 사용하는 기준 값. 0.8 인 경우, 상위 80%에 포함된 토큰만 후보로 선택
    - Maximum tokens : 결괏값을 생성할 때 사용할 최대 토큰 수 (토큰 수를 높게 설정할 수록 긴 결괏값을 출력. 일반 모드 : 최대 2048토큰 / HyperCLOVA X : 최대 4096 토큰 )
    - Temperature : 문장의 다양성을 조절하는 값(낮게 설정하면 정형적인 결괏값, 높게 설정하면 다양해짐)
    - Repetition penalty : 반복적인 결괏값을 생성하지 않도록 반복되는 토큰에는 감점 요소를 부여하는 값
    
    # 튜닝
    
    ### 튜닝 순서
    1. 아이디어에 맞는 작업 고르기
    2. 작업생성
    3. 데이터셋 준비
    
    ### 튜닝 작업 생성하기
    1. 작업 선택
    2. 모델 엔진 선택
    3. 작업 이름 입력
    4. 데이터셋 업로드
    5. 토큰 산정 팝업 창이 나타나면 예상 사용 토큰을 확인한 후 **[학습]** 버튼을 클릭해 주십시오.
    6. 학습 대기 중 팝업 창의 내용을 확인한 후 **[확인]** 버튼을 클릭해 주십시오.
        - **사용자명 > 내 작업 > [튜닝]** 탭에서 학습 현황을 확인할 수 있습니다.
    
    **주의**
    
    - 데이터셋 내 토큰 수가 많을수록 튜닝에 시간이 더 오래 걸리고 더 많은 비용이 발생할 수 있습니다.
    - 학습 진행에 앞서, 학습을 위한 GPU 확보 및 데이터 전처리를 위해 학습 대기 시간이 최대 6시간 소요될 수 있습니다.

     

    이 파일내용을 CLOVA X 대화내용에 그대로 복사 붙여 넣고 하단에 위 마크다운 파일을 읽고 질문을 만들어주세요.라는 추가 프롬프트를 입력해서 전달하도록 하겠습니다. 과연 결과가 어떻게 나왔을까요?

     

    마크다운 내용을 넣고 CLOVA X에게 질문을 생성해달라고 요청

     

    어떠신가요? 생각보다 질문들을 정말 잘 만들지 않나요? 실제로 이 질문들을 활용한다면 앞으로 효율적으로 공부가 가능할 것 같다는 생각이 듭니다.

     


     

    🪄 CLOVA Studio로 프롬프트 튜닝하기

    CLOVA X를 통해 간단하게 테스트를 진행해 보고 괜찮다는 생각이 들면 이제는 조금 더 정교하게 답변을 생성하기 위해 네이버클라우드의 CLOVA Studio로 이동해서 프롬프트를 튜닝해 보도록 하겠습니다. (단, CLOVA Studio는 아쉽게도 현재로서는 기업들에게만 제공하고 있어서 개인 계정으로는 사용이 불가능합니다.🥲)

     

    클로바 스튜디오란?

     

    네이버클라우드 CLOVA Studio에서 HyperCLOVA X 사용해보기

    2023년 8월 24일 DAN 23 컨퍼런스를 통해 HyperCLOVA X가 드디어 세상에 모습을 공개하였습니다.🎉🎉 HyperCLOVA X는 한국을 대표하는 초거대 AI 모델 중 하나이기 때문에 저도 떨리는 마음으로 온라인 시

    chucoding.tistory.com

     

    앞서, CLOVA X를 통해 테스트를 먼저 진행했던 이유는 CLOVA Studio를 통해 질문할 때는 과금이 발생하기 때문입니다. 따라서 CLOVA X와 CLOVA Studio를 둘 다 켜놓고 일반적인 질문 및 테스트를 진행할 때는 CLOVA X를 사용해 주시는 것이 작업할 때 하나의 꿀팁입니다.

     

    CLOVA Studio에서 플레이그라운드에 접속하신 뒤에 다음과 같이 시스템 지시어에 마크다운 파일을 읽고 질문을 만들어줘.라는 프롬프트를 입력해 보도록 하겠습니다. 앞서 CLOVA X에서는 대화할 때 공부내용 뒤에다가 질문을 삽입했었는데 CLOVA Studio에서는 시스템 지시어에다 삽입하시면 됩니다.

     

    CLOVA Studio에서는 시스템 지시어를 통해 지시할 수 있다.

     

    앞서 CLOVA X에서는 매 질문마다 마크다운 파일을 읽고 질문을 만들어줘.라는 내용을 추가해서 사용했지만 CLOVA Studio에서는 시스템 지시어에 넣어서 사용하시면 됩니다. 이 때는 사용자가 별도의 추가 질문 없이 마크다운 형식의 파일내용만 입력한다고 했을 때도 원하는 답변으로 대답할 수 있게 됩니다.

     

    CLOVA Studio를 활용한 질문 생성 결과

     

    앞서 사용자 편의성을 위한 프롬프트 튜닝을 진행했다면 이번에는 개발자 편의성을 위한 프롬프트 튜닝을 진행해 보도록 하겠습니다. 질문들이 특정 포맷으로 일관성 있게 출력될 수 있도록 시스템 지시어를 다음과 같이 변경하였습니다.

     

    HyperCLOVA X가 알고있는 배열 형식으로 답변한 결과

     

    시스템 지시어에 배열 형식으로 출력해 달라는 말을 하니 일반적으로 개발자들이 생각하는 배열 포맷과는 조금 다른 형식으로 출력되는 것을 확인할 수 있었습니다. 이럴 때는 다음과 같이 수정할 수 있습니다.

     

    HyperCLOVA X에게 배열이 뭔지 알려준 후 답변 생성 결과

     

     

    이렇게 프롬프트를 튜닝하면 답변으로 원하는 배열 형태로 나오는 것을 확인할 수 있습니다. 하지만 이 프롬프트도 100% 안전하다고 말할 수는 없습니다. 실험을 진행해 본 결과 답변이 다음과 같이 나타날 때가 있었습니다.

     

    ['클로바 스튜디오는 어떤 서비스인가요?']\n['클로바 스튜디오에서 제공되는 기능에는 무엇이 있나요?']...

     

    이런 식으로 답변이 생성된 이유에 대해 유추해 보자면 시스템 지시어에서 실제 지시와 형식 사이에 개행(줄 바꿈)이 있었습니다. 실제 테스트앱을 생성해서 API를 확인해 보면 하이퍼클로바X에게 전달될 때는 이 개행문자(\n:사용하고 있는 OS별로 다를 수 있다.)가 같이 포함돼서 전달되는 것을 확인할 수 있었습니다.

     

    그래서 이 문자를 포함한 프롬프트 전체를 그대로 AI가 추론해서 결과를 만들어냈다고 볼 수 있을 것 같습니다. 만약 위와 같은 형식으로 답변이 호출된다면 개발하는 입장에서 정말 껄끄러워질 수 있습니다. 그래서 저는 프롬프트를 다음과 같이 추가적으로 변경하였습니다.

     

    시스템 지시어에서 개행문자 제거 및 배열 형식 상세 설명

     

    이제는 불필요한 개행을 줄이고 두 번째 질문까지 넣어서 조금 더 명확하게 지시를 하였더니 안정적으로 답변하는 효과를 얻을 수 있었습니다. 하지만 여기서도 문제점이 하나 더 있습니다.

     

    작은따옴표 사용시 배열 포맷이 이상해진다.

     

    테스트 앱에서 확인해 보면 큰 따옴표나 작은따옴표가 있는 경우 이스케이프 처리가 되는 것을 확인하실 수 있는데 이 패턴 역시도 생성형 AI가 그대로 추론하기 때문에 답변 역시 저런 형태로 만들어지는 것을 확인할 수 있었습니다. 그래서 작은따옴표를 사용하는 경우에는 개발할 때 오류가 발생할 수 있습니다. 따라서 CLOVA Studio로 배열 형식을 출력하고자 할 때는 큰 따옴표를 사용하셔야 합니다.

     

    이러한 시행착오들을 겪은 결과 최종적으로는 질문 생성에 사용할 수 있는 프롬프트(시스템 지시어)는 다음과 같이 완성이 되었습니다.

     

    마크다운 파일을 읽고 질문을 만들어주세요. 질문은 다음과 같은 형식으로 출력해주세요. [\"첫 번째 질문\", \"두 번째 질문\", ...]

     

    여기서 더 나아가 대화 턴을 추가하여 예제들을 생성하면 조금 더 답변의 품질을 높일 수 있지만 그만큼 서버로 요청하는 리소스가 많이 사용될 수 있으므로 성능을 온전히 배제하지 않고 프롬프트 메시지는 최대한 줄이면서 답변 품질을 높이는 것이 중요합니다.

     

    하지만 이번에 새로 업데이트된 HCX003 엔진을 테스트해 본 결과 추가적인 대화 턴 없이 시스템 지시어 하나만으로도 충분히 일관성 있고 좋은 답변을 생성해 내는 것 같아서 저는 여기서 프롬프트 엔지니어링을 마치도록 하겠습니다. 역시 한국을 대표하는 LLM 답게 한글을 잘 이해하고 답변하는 하이퍼클로바 X의 우수성을 다시 한번 확인해 볼 수 있었던 것 같습니다.

     

    조금 더 다양한 프롬프트 튜닝을 하고 싶다면 네이버클라우드의 하이퍼클로바 프롬프트 얼티밋 가이드를 참고하시면 좋습니다.

     

     

    하이퍼클로바 프롬프트 얼티밋 가이드! (The ultimate guide to HyperCLOVA prompt)

    ※ 본 포스팅은 하이퍼클로바 언어모델에 대한 내용입니다. 하이퍼클로바 언어 모델을 공개한 이후 터득해 온 저희의 여러 가지 프롬프트 노하우를 알려드리겠습니다. 1. 프롬프트의 예제를 다

    www.ncloud-forums.com

     


     

    🧑🏻‍💻 HyperCLOVA X를 활용한 공부 앱 만들기

    이제 프롬프트까지 완성했다면 실제로 CLOVA Studio API를 활용해서 개발 중인 공부 앱에 적용시켜 보도록 하겠습니다. 저는 공부 앱을 만들어볼 건데요. 제가 이전에 만들어놓았던 공부앱 v1을 불러와서 HyperCLOVA X 질문들과 합친 FlashCard 형태로 만들어보도록 하겠습니다.

     

    예전에 만들어놓았던 공부 알람앱

     

    네이버클라우드 서비스를 활용한 알림(PUSH) 앱 배포하기

    프론트엔드 개발자라면 필수로 알아야 하는 지식 중 하나가 웹 서버를 통해 구현한 서비스를 직접 배포하는 방법인데요. AWS를 이용하면 CloudFront, S3 또는 EC2를 통해 배포를 진행하는데 과연 네이

    chucoding.tistory.com

     

    기존 v1 공부 앱을 간단히 설명드리자면 하루 전 일주일 전 30일 전에 공부한 마크다운 파일들을 불러와서 문서 형식으로 합친 다음 화면에 뿌려주는 앱이었습니다. 여기서 저는 더 하이퍼클로바X를 통한 질문 생성을 위해 다음과 같은 흐름을 추가하였습니다.

     

    기존 공부 앱 로직에 CLOVA Studio API 호출 로직을 추가

     

    이런 구조로 만들면 이중 반복문을 돌면서 CLOVA Studio API를 여러 번 호출하게 된다는 단점이 있지만 장점으로는 질문에 대한 답변을 정확하게 매핑할 수 있다는 점입니다. 반대로 CLOVA Studio API 호출 비용을 아끼고 레이턴시를 줄여서 성능을 최적화할 수도 있지만 그렇게 구현한다면 CLOVA Studio API를 한 번만 호출하도록 하기 위해서 모든 프롬프트를 합쳐야 합니다.

     

    이 경우에는 답변으로 사용할 마크다운 파일과 질문을 매치시키기 위한 별도의 작업이 필요할뿐더러 정확하게 매치되지 못할 가능성이 큽니다. 또한, 프롬프트로 합칠 마크다운 파일 내용들이 너무 상이한 내용이라면 질문으로 생성될 품질 또한 떨어지게 될 우려가 있습니다.

     

    하지만 질문을 생성하기 위해 HyperCLOVA X를 매번 호출한다면 어떤 결과가 일어날까요? 여러분들의 통장을 지키기 위해서는 당연히 캐시플로우도 엔지니어링 해야 합니다.

     

    제가 만든 공부앱은 1일, 7일, 30일 전 커밋 내용을 바탕으로 마크다운 파일들을 수집하기 때문에 하루가 지나기 전까지는 내용이 변경될 일이 없습니다. 따라서 하루마다 갱신되는 공부 앱이기 때문에 앱을 매번 킬 때마다 API를 호출시킬 필요가 없습니다. 그래서 저는 다음과 같이 로직을 추가하였습니다.

     

    공부 앱에 인덱스 DB를 추가하여 비용 및 성능 개선

     

    위와 같이 indexDB를 활용하여 API 호출 횟수를 줄였습니다. 이렇게 해놓으면 하루 중에 언제든 앱을 접속해도 최초 한 번만 API를 호출하므로 비용 및 성능이 개선됩니다.

     

    indexDB 대신 localStorage를 활용해도 되지만 저는 추후에 이 로직을 서비스워커로 등록하여 백그라운드로 특정 시간에 DB를 갱신하는 코드로 변경해서 앱 로딩시간을 조금 더 개선하고자 하여 indexDB를 사용하였습니다.

     


     

    🌠 마무리하기

    기존 공부 앱(왼쪽)과 변경된 공부 앱(오른쪽) 비교해보기

    HyperCLOVA X API를 활용한 질문을 생성하는 데 사용되는 토큰 수는 대략 700~ 900입니다. (평균 4~5개 질문 생성) 이 토큰 수를 원화로 환산하면 대략 하루에 5원인 계산이 나옵니다.

     

    만약 유저가 30일 동안 1000명이 사용했다면 얼마의 비용이 발생할까요? 단, 150,000원입니다. 생성형 AI를 사용하는데 이 정도 가격이면 생각보다 괜찮은 가격이지 않나요? 여기서 만약에 백엔드 파이프라인으로 Cloud Functions와 같은 서버리스 서비스를 사용한다면 겨우 30000건 수준의 호출이므로 무료로 사용할 수 있습니다.

     

    B2B형 AI 서비스들에 비해 B2C SaaS형 AI 서비스들이 부진하는 이유 중에 하나로 많은 분들이 생성형 AI 호출비용에 대한 가격부담을 많이 느끼고 있는 것 같기도 해 아쉬움이 많은 것 같습니다.

     

    처음에도 언급했듯이 올해 2024년은 실제로 생성형 AI가 비즈니스에 적합한지 확인하고 검증해 나가는 시기라고 하는데요. 저도 계속해서 생성형 AI를 활용해 여러 가지 서비스들을 계획하고 시도해보고 있지만 앞으로도 많은 사람들이 B2C SaaS형 AI 서비스들에 관심을 갖고 많은 시도를 통해 생성형 AI 생태계가 잘 발전되었으면 좋겠다는 생각이 듭니다.

    댓글

Designed by Tistory.