ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CLOVA Studio 스킬 사용방법
    Infra/ncloud 2024. 3. 17. 14:45

    “어제 영화 순위 알려줘”, “오늘 날씨 알려줘”와 같은 질문들을 CLOVA X에게 물어보신 적이 있으신가요? 아마 다음과 같이 답변하는 것을 확인하실 수 있습니다.

     

    CLOVA X에게 최신 정보 질문

     

    이는 ChatGPT나 다른 생성형 AI에게 물어봐도 마찬가지인데요. 이처럼 가까운 과거나 미래에 일어날 일들은 도대체 어떻게 물어봐야 답변이 가능하도록 만들 수 있을까요? CLOVA Studio에서는 바로 이러한 문제점들을 해결하기 위해 스킬 트레이너라는 기능을 만들었습니다.

     


     

    🏇🏻 스킬 트레이너란?

    스킬 트레이너는 특화된 지식을 모델에 학습시키는 CLOVA Studio의 기능입니다. 이 특화된 지식이라 함은 생성형 AI가 답변할 수 없는 가까운 미래나 최신 정보들을 답변할 수 있도록 특정 질문이나 발화 패턴을 인식하여 다른 외부 API로 답변을 유도할 수 있습니다.

     

    이러한 스킬 트레이너의 특징을 잘 활용하면 사용자에게 최신 정보나 신뢰할 수 있는 정보를 제공할 수도 있고 할루시네이션 현상도 줄일 수 있기 때문에 다양한 필드에서 유용하게 사용될 수 있습니다. 스킬 트레이너에 대한 더 자세한 정보는 아래 링크를 통해 확인하시면 좋을 것 같습니다.

     

     

    스킬 트레이너 화면

     

    guide.ncloud-docs.com

     


     

    📜 스킬 트레이너 사용방법

    스킬 트레이너를 사용하기 위해서 클로바 스튜디오에 접속해 보도록 하겠습니다. 스킬 트레이너는 화면 상단의 메뉴바를 통해 들어올 수 있습니다.

     

    CLOVA Studio 스킬 트레이너 화면

     

    스킬을 생성하기 위해서는 먼저 스킬셋을 생성해야 하는데요. 이 스킬셋을 통해 여러 개의 스킬을 등록할 수 있고 또 스킬셋은 모델에게 학습 및 버전관리의 대상이 됩니다. 스킬셋을 생성하는 방법은 화면 오른쪽 상단에 위치한 [+스킬셋 생성] 버튼을 클릭하셔도 되고 생성해 놓은 스킬셋이 없다면 화면 가운데 있는 [새 스킬셋 생성하기] 버튼을 클릭하셔도 됩니다.

     

    CLOVA Studio 스킬셋 생성하기

     

    스킬셋은 원하는 대로 설정해 주시고 저장하시면 됩니다. 저는 앞에서 언급했던 “어제 영화 순위 알려줘”, “오늘 날씨 알려줘” 와 같은 질문들에 대한 답변을 만들기 위해서 위와 같이 작성 후 저장하도록 하겠습니다.

     

    CLOVA Studio 새 스킬 생성하기

     

    스킬셋을 만들고 나면 이제는 스킬을 생성하실 수 있게 되는데요. 스킬도 마찬가지로 화면 오른쪽 상단에 위치한 [+스킬 생성] 버튼을 클릭하셔도 되고 생성해 놓은 스킬이 없다면 화면 가운데 있는 [새 스킬 생성하기] 버튼을 클릭하시면 됩니다.

     


     

    🚀 스킬 생성하기

    스킬 생성은 다음과 같이 3가지 단계로 구성됩니다.

     

    1. 스킬 정보 입력
    2. API Spec 작성
    3. Manifest 작성

     

    저는 이 순서를 토대로 영화 순위를 답변해 주는 스킬을 생해보도록 하겠습니다.

     

    1. 스킬 정보

    첫 번째 단계인 스킬 정보 입력입니다. 말 그대로 스킬에 대한 정보를 입력하는 구간인데요. 간단하게 스킬 이름을 입력해 주시고 [확인] 버튼을 클릭해 주시면 됩니다.

     

    CLOVA Studio 스킬 정보 작성

     

    2. API Spec

    다음은 두 번째 단계로 스킬 정보 바로 아래에 있는 API Spec을 작성해야 합니다. 이곳에서 저희가 사용할 예정인 영화 순위 API를 등록해야 하는데요. API Spec은 기본적으로 OpenAPI v3를 기반으로 동작하기 때문에 해당 스펙에 맞게 등록해 주시면 됩니다. 자세한 사용 방법은 하단 링크를 참조해 주시면 좋을 것 같습니다.

     

     

    스킬 관리

     

    guide.ncloud-docs.com

     

    저는 영화 순위를 불러오기 위해 API Spec을 다음과 같이 작성하도록 하겠습니다. 영화 순위에 대한 정보는 영화진흥위원회에서 무료로 제공하고 있는 일별 박스오피스 API를 사용했고 위의 링크를 통해 네이버클라우드에서 가이드하고 있는 API Spec 작성방법을 토대로 다음과 같이 구성하였습니다.

     

    {
      "openapi": "3.0.0",
      "info": {
        "title": "영화 순위",
        "version": "1.0.0"
      },
      "servers": [
        {
          "url": "http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice"
        }
      ],
      "paths": {
        "/searchDailyBoxOfficeList.json": {
          "get": {
            "description": "일별 영화 순위 목록을 조회하는 API 입니다.",
            "operationId": "searchDailyBoxOfficeList",
            "parameters": [
              {
                "name": "key",
                "in": "query",
                "description": "발급받은 API key 값을 입력합니다.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              {
                "name": "targetDt",
                "in": "query",
                "description": "조회하고자 하는 날짜를 yyyymmdd 형식으로 입력합니다.",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            ],
            "response" {
              "...": "...생략..."
            }
          }
        }
      }
    }

     

    내용이 길어서 자세한 내용은 생략하도록 하겠습니다. API Spec 작성이 완료되면 [검증하기] 버튼을 클릭하여 검증을 완료합니다. 오른쪽 하단에는 힘들게 작성한 내용들이 날아가지 않도록 [임시 저장] 버튼이 있는데 작업하실 때 사용하시면 좋습니다.

     

    CLOVA Studio 스킬 API Spec 작성

     

    JSON 타입을 수기로 작성하다 보면 실수가 많이 발생할 수 있고 또 어느 부분에서 틀렸는지 찾기에 어려움이 많은 상황이 발생할 수 있는데 API Spec 에디터에서는 어느 부분이 누락됐는지 무엇이 빠졌는지 경고와 라인을 표시해 줍니다. 저는 이 부분이 있어서 굉장히 빠르고 편리하게 작업할 수 있어서 좋았습니다.

     

    3. Manifest

    앞서 API Spec으로 답변에 사용할 정보들을 제공했다면 Manifest에서는 실제로 사용자들의 질문을 어떻게 분석하여 답변으로 유도시킬 수 있는지에 대해 정의합니다. 스킬 트레이너를 사용하는 데 있어서 가장 중요한 부분이 아닐까 싶은데요. 이 Manifest를 어떻게 작성하느냐에 따라 답변의 품질을 결정지을 수 있게 됩니다.

     

    CLOVA Studio 스킬 Manifest 작성 폼

     

    Manifest에서는 다음과 같이 작성해야 되는 내용들을 가이드해주고 있어서 보고 작성하기 편리하게 되어있습니다. 이 내용들을 기반으로 다음과 같이 작성해 보겠습니다.

     

    CLOVA Studio 스킬 Manifest 작성 예시 - 영화 순위

     

    앞서 Manifest를 어떻게 작성하느냐에 따라 답변의 품질이 결정된다고 말씀드렸었는데요. 여기서 작성할 때 가장 신경 써야 하는 두 가지는 바로 Description for human, Description for model입니다.

     

    • Description for human : 사용자의 질문을 바탕으로 모델이 여러 API 중에서 필요한 API를 선택하는 기준
    • Description for model : API의 주요 사용 방법이 작성되며 모델이 사용자의 질문에 답변할 때 사용

     

    간략하게만 설명을 드렸는데 Manifest에 대해서 조금 더 자세한 정보를 확인하고 싶으시다면 아래 링크를 통해서 확인해 주시면 좋을 것 같습니다.

     

     

    스킬 관리

     

    guide.ncloud-docs.com

     


     

    🔮 시나리오 수집

    스킬 생성을 완료하면 다음과 같이 나타나게 됩니다. 이제는 만들어놓은 스킬이 정상적으로 동작하는지 테스트를 진행해 볼 예정인데요. [시나리오 수집] 버튼을 클릭하시면 만들어놓은 스킬들에 대해 실제 모델이 어떻게 답변을 만들어내는지 검증해 볼 수 있습니다.

     

    CLOVA Studio 시나리오 수집

     

    시나리오 생성 화면은 다음과 같이 생겼습니다. 화면 왼쪽에 위치한 입력 폼에서 스킬셋을 지정하고 엔진 및 버전을 선택할 수 있습니다. 여기에서 사용되는 버전은 스킬셋 버전을 의미합니다. 앞서 스킬을 생성하거나 수정, 삭제할 때마다 스킬셋 버전이 올라가게 됩니다. 따라서 시나리오를 만들 때는 이러한 특성을 참고하여 적용해 주시면 됩니다.

     

    CLOVA Studio 시나리오 기본 정보 설정

     

    시나리오 정보를 입력할 때 중요한 것은 호출 옵션인데요. 일반적으로 공공/사설 API들을 사용하다 보면 대부분 API KEY를 헤더나 파라미터 값으로 전달해야 합니다. 호출 옵션을 사용하면 이런 부분들은 모델에게 따로 훈련시킬 필요 없이 안전하게 지정할 수가 있습니다.

     

    CLOVA Studio 시나리오 호출 옵션 설정

     

    호출값을 입력하는 방법도 예시포맷 펼치기를 통해 손쉽게 찾아보고 작성할 수가 있습니다. 눈썰미가 좋으신 분들은 앞서 API Spec 작성 시 제가 operationId 값을 지정했던 것을 보셨을 텐데요. 바로 이곳에서 operationId값을 통해 특정 필드에 대한 값을 고정시킬 수가 있습니다.

     

    꼭 operationId값을 안 쓰시더라도 baseOperation 필드값을 사용하시면 모든 operationId에 공통으로 적용할 수가 있는데 저는 이 필드를 이용해서 API KEY값을 지정하도록 하겠습니다. 호출 옵션 지정을 모두 마치셨다면 [적용] 버튼을 클릭 후 유저쿼리를 입력하고 [실행] 버튼을 클릭해서 결과를 확인해 보도록 하겠습니다.

     

    CLOVA Studio 시나리오 실행 Step 1

     

    화면에 나타난 결과를 확인해 보면 Step 1이라고 나타나게 되는데 Step은 총 3단계가 있으며 이를 통해 모델의 사고 과정을 추적할 수가 있습니다. 이 단계들을 CLOVA Studio에서는 플래닝 단계라고 표현합니다. 플래닝 단계에서 진행되는 각 세부 과정들은 다음과 같습니다.

     

    • Step 1: 사용할 스킬을 계획하는 단계
    • Step 2: 스킬을 수행하는 단계
    • Step 3: 사용자에게 최종 답변하는 단계

     

    지금 Step 1단계에서 모델의 계획을 확인해 보면 유저가 “어제 영화 순위 알려줘”라고 질문했을 때 제가 만들어놓은 MovieOrders로 문제없이 잘 연결을 해줄 것 같다는 생각이 드네요. 이곳에서는 문제가 없는 것 같으니 [다음] 버튼을 클릭하여 Step 2를 확인해 보도록 하겠습니다.

     

    CLOVA Studio 시나리오 실행 Step 2

     

    Step 2의 결과를 확인해 보면 모델이 실제 계획대로 API를 잘 호출해서 답변을 만들어내는 것 같습니다. 단, 어제 날짜를 잘 인식을 못하는 것 같은지 작년 날짜의 데이터를 불러오고 있네요. 이 부분에 대해서는 수작업으로 정정해 줘야 될 것 같습니다. 어디서부터 데이터가 잘못되었는지 Step 2-1부터 차례대로 확인해 보도록 하겠습니다.

     

    CLOVA Studio 시나리오 실행 Step 2-1

     

    Step 2-1을 살펴보면은 모델이 제가 만들어놓은 MovieOrders 액션을 잘 찾아간 것 같습니다. 스킬을 찾았으므로 액션입력에는 None이 들어가게 됩니다. 따라서 이곳에서는 더 이상 수정할 게 없으므로 Step 2-2를 살펴보겠습니다.

     

    CLOVA Studio 시나리오 실행 Step 2-2

     

    Step 2-2를 확인해 보니 모델이 어제 날짜를 작년으로 인식하고 있네요. 이 부분을 수정해 줘야 될 것 같습니다.

     

    CLOVA Studio 시나리오 실행 Step 2-3

     

    2023으로 된 부분을 2024로 전부 바꿔주니 이제는 제대로 어제 날짜의 영화 순위를 불러오는 것 같습니다. 검증이 끝났으니 [다음] 버튼을 클릭하여 Step3으로 넘어가도록 하겠습니다.

     

    CLOVA Studio 시나리오 실행 Step 3

     

    Step 3에서는 최종 답변을 확인하고 수정할 수 있습니다. 따로 수정을 안 해도 잘 답변을 해주는 것 같아 만족스럽습니다. Step 3까지 점검을 확인했다면 오른쪽 하단의 [작업 완료] 버튼에 불이 들어온 것을 확인하실 수가 있습니다. 해당 버튼을 클릭하여 시나리오 작성을 마치도록 하겠습니다.

     

    작업한 시나리오는 왼쪽 하단의 [불러오기] 버튼을 클릭하여 확인이 가능합니다. 저는 테스트용도로 하나만 만들었지만 CLOVA Studio FAQ 가이드에 따르면 시나리오는 스킬 셋 1개당 50개에서 100개 정도 생성하는 것을 권장하고 있으므로 참고하시면 좋을 것 같습니다.

     

    CLOVA Studio 시나리오 목록

     

    이렇게 만들어진 시나리오와 스킬들을 API로 만들어서 직접 사용할 수도 있습니다. 상단의 [스킬 트레이너] 메뉴를 클릭한 다음 [작업] 탭의 [버전 관리] 버튼을 클릭하시면 이제껏 작업한 버전과 내용들을 확인할 수 있게 됩니다.

     

    CLOVA Studio 스킬셋 작업 - 버전 관리 이력

     

    저는 여러 테스트를 해보다가 v6까지 오게 되었네요. 이 버전들 중 하나를 선택해서 [테스트 앱] 버튼을 클릭하면 플레이그라운드에서 테스트 앱을 생성할 때와 마찬가지로 API가 생성되어 나만의 서비스에도 적용시켜 볼 수 있게 됩니다.

     


     

    🌠 정리하기

    간단하게 스킬 사용방법에 대해서 알아보았는데요. 스킬 트레이너를 통해 외부 API연동해서 답변을 생성해 보는 작업을 진행 과정에 대해 다시 한번 정리해 보면 다음과 같습니다.

     

    1. 스킬셋 생성 및 스킬 정보 입력하기
    2. API Spec 작성하기 (외부 API 연동)
    3. Manifest 작성하기 (모델이 API를 찾아갈 수 있도록 프롬프트 작성)
    4. 시나리오 수집을 통해 모델 사고 과정 추적 및 개선하기(외부 API에 잘못된 파라미터로 넘어가는 것을 방지)
    5. 테스트 앱에서 스킬을 적용한 모델기반 추론 API 생성하기(나만의 서비스에 적용)

     

    CLOVA Studio의 스킬 트레이너를 사용해 보면서 느낀 점은 정말 재밌고 신기하면서도 한편으로는 무섭다는 생각도 들었습니다. 이전에 제가 Rulebase기반으로 영화 순위 답변을 제공하는 챗봇을 개발했었을 때는 API 응답 결과를 직접 파싱하고 가공해서 답변을 만들었었는데 이제는 간단한 프롬프트 입력만으로도 완벽한 답변을 만들어 낼 수 있게 되었네요. 더 이상 복잡한 API 백엔드 파이프라인이 필요 없다고 느낄 정도로 정말 엄청난 생산성이라고 느껴집니다.

     

    앞으로 이러한 스킬트레이너 기반으로 챗봇을 구성한다면 복잡한 로직의 코드를 작성하지 않아도 프롬프트 만 잘 관리하고 유지보수 한다면 빠른 생산성 및 코드 품질을 바탕으로 고객이 요구하는 답변을 쉽고 빠르게 구현해 낼 수 있겠다는 생각이 듭니다.

    댓글

Designed by Tistory.