스킬 트레이너 활용 예제
    • PDF

    스킬 트레이너 활용 예제

    • PDF

    Article Summary

    Classic/VPC 환경에서 이용 가능합니다.

    이 예제에서는 네이버의 지역 검색 API를 활용하여 다양한 업체를 추천하는 요청에 응답할 수 있는 대화형 AI 서비스를 생성하는 방법을 설명합니다. 이 예제를 통해 스킬 트레이너를 활용하여 서비스를 제작하는 전반적인 과정을 이해할 수 있습니다.

    대화형 AI 서비스를 제작하는 단계는 다음과 같습니다.

    사전 준비

    이 예제에서 사용할 API는 네이버 개발자 센터에서 제공하는 검색 API를 활용합니다. 스킬 트레이너에서 검색 API를 호출하려면 네이버 개발자 센터에서 애플리케이션을 등록한 후 API 호출에 필요한 인증 정보를 획득해야 합니다. 이 단계에서 획득한 인증 정보는 데이터 수집 시 호출 옵션에 적용합니다.

    네이버 API를 사용하기 위해 인증 정보를 획득하는 방법은 다음과 같습니다.

    1. 네이버 개발자 센터에서 애플리케이션을 등록해 주십시오.
      • 애플리케이션을 등록하는 방법은 애플리케이션 등록을 참조해 주십시오.
      • 애플리케이션 등록 시 사용 API검색 API를 선택해 주십시오.
    2. API 호출 시 클라이언트 아이디와 클라이언트 시크릿 정보를 확인해 주십시오.
    참고
    • 네이버 API 사용 시 네이버 개발자 센터의 이용 약관을 준수해야 합니다. 약관 준수 의무를 위반하여 발생한 모든 법적 책임은 사용자에게 있습니다.
    • 네이버 API를 사용하는 방법에 대한 자세한 설명은 네이버 개발자 센터 API 공통 가이드를 참고해 주십시오.

    Step 1. 스킬셋 생성

    스킬셋을 생성하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔에서 Services > AI Services > CLOVA Studio 메뉴를 차례대로 클릭해 주십시오.
    2. My Product 메뉴에서 [CLOVA Studio 바로가기] 버튼을 클릭해 주십시오.
    3. CLOVA Studio에서 스킬 트레이너 메뉴를 클릭해 주십시오.
    4. [새 스킬셋 생성하기] 버튼을 클릭해 주십시오.
      • 동일한 그룹 내에 이미 생성된 스킬셋이 있는 경우에는 [스킬셋 생성] 버튼을 클릭해 주십시오.
    5. 스킬셋 생성 창이 나타나면 다음과 같이 입력해 주십시오.
      • 스킬셋: 지역 검색
      • 스킬셋 설명: 사용자가 입력한 검색어에 맞춰 적절한 지역 검색 결과를 제공합니다. 네이버 지역 서비스에 등록된 다양한 업체나 기관을 조회할 수 있고 검색 결과를 원하는 정렬 방식(블로그의 리뷰 개수순, 정확도순 등을 요청할 수 있습니다.
      • 서비스 분야: 플레이스
      • 답변 형식: 선택 안 함
    6. 스킬셋 이름의 중복 여부를 확인하기 위해 [중복 확인] 버튼을 클릭해 주십시오.
    7. [저장] 버튼을 클릭해 주십시오.
    8. 스킬셋에 스킬을 추가하려면 [스킬 생성] 버튼을 클릭해 주십시오.

    Step 2. 스킬 생성

    스킬을 생성하는 방법은 다음과 같습니다.

    1. Step 1. 스킬셋 생성을 참조하여 스킬셋을 생성해 주십시오.

    2. [스킬 생성] 버튼을 클릭해 주십시오.

    3. 스킬 정보 화면이 나타나면 스킬 이름을 '지역 검색'으로 입력한 후 [중복 확인] 버튼을 클릭해 주십시오.

    4. API Spec 영역에 작성한 후 [검증하기] 버튼을 클릭해 주십시오.

      {
        "info": {
          "title": "네이버 지역 검색",
          "version": "1.0.0",
          "description": "네이버 지역 서비스에 등록된 업체 및 기관을 검색하기 위한 스킬"
        },
        "paths": {
          "/v1/search/local.json": {
            "get": {
              "summary": "국내 지역 정보 검색 결과를 나열합니다.",
              "responses": {
                "200": {
                  "content": {
                    "application/json": {
                      "schema": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "link": {
                                  "type": "string"
                                },
                                "mapx": {
                                  "type": "string"
                                },
                                "mapy": {
                                  "type": "string"
                                },
                                "title": {
                                  "type": "string"
                                },
                                "address": {
                                  "type": "string"
                                },
                                "category": {
                                  "type": "string"
                                },
                                "telephone": {
                                  "type": "string"
                                },
                                "description": {
                                  "type": "string"
                                },
                                "roadAddress": {
                                  "type": "string"
                                }
                              }
                            }
                          },
                          "start": {
                            "type": "integer"
                          },
                          "total": {
                            "type": "integer"
                          },
                          "display": {
                            "type": "integer"
                          },
                          "lastBuildDate": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  },
                  "description": "- **title**: 업체명\\n- **address**: 지번 주소(e.g. 서울특별시 중구 을지로3가 229-1)\\n- **roadAddress**: 도로명 주소(e.g. 서울특별시 중구 을지로15길 6-5)\\n- **category**: 카테고리(e.g. 식당, 카페, 병원, 미용실, 기업, 공공 기관)\\n- **description**: 업체에 대한 설명(e.g. 연탄불 한우갈비 전문점, 강남역 근처 분위기 좋은 카페)\\n- **link**: 홈페이지 링크"
                }
              },
              "parameters": [
                {
                  "in": "query",
                  "name": "query",
                  "schema": {
                    "type": "string"
                  },
                  "required": true,
                  "description": "**query**: 사용자가 찾고자 하는 상점의 설명 (e.g. 정자동 근처 맛집, 강남역 근처 분위기 좋은 카페)\\n"
                },
                {
                  "in": "query",
                  "name": "display",
                  "schema": {
                    "type": "integer",
                    "default": "2"
                  },
                  "required": true,
                  "description": "요청한 쿼리에 대한 검색 결과 수 입니다. 유일한 상점이나 업체일 경우에는 결과를 1개만 보여주세요."
                },
                {
                  "in": "query",
                  "name": "sort",
                  "schema": {
                    "type": "string"
                  },
                  "required": false,
                  "description": "검색 결과 정렬 방법\\n- **random**: 정확도순으로 내림차순 정렬(기본값)\\n- **comment**:카페, 블로그의 리뷰 개수순으로 내림차순 정렬이 필요할 때 값을 사용하세요.(e.g. 리뷰 많은 순으로 정렬해주세요. 유명한 곳을 알려주세요. 인기 많은 곳을 알려주세요.)\\n"
                }
              ],
              "description": "지역의 업체나 기관을 검색합니다.",
              "operationId": "getLocalInfo"
            }
          }
        },
        "openapi": "3.0.2",
        "servers": [
          {
            "url": "https://openapi.naver.com"
          }
        ]
      }
      
    5. Manifest 영역에 다음과 같이 입력해 주십시오.

      • Name for model: LocalSearch
      • Description for human: 네이버 지역 서비스에 등록된 업체 및 기관을 검색한 결과를 반환합니다.
      • Description for model: 네이버 지역 서비스에 등록된 업체 및 기관을 검색하기 위해서는 LocalSearch 스킬을 사용하세요. /v1/search/local.json은 업체나 기관의 이름, 주소(ex. 도로명 주소, 지번 주소)를 검색어로 입력할 때 동작합니다. 원하는 정렬 방식(ex.블로그의 리뷰 개수순, 정확도순 등)을 포함하여 검색 결과를 요청할 수 있습니다.
    6. Name for model[중복 확인] 버튼을 클릭해 주십시오.

    7. 필수 정보를 모두 입력한 후, [생성하기] 버튼을 클릭해 주십시오.

      • 현재까지 작업한 내용을 저장하려면 [임시 저장] 버튼을 클릭해 주십시오.
      • 모든 영역이 입력되었더라도 [임시 저장] 버튼을 클릭하는 경우, 작업 상태가 '작업 중'으로 저장됩니다.
    8. 스킬 생성 완료 창이 나타나면 [확인] 버튼을 클릭해 주십시오.

    9. 버전이 생성되었는지 확인해 주십시오.

    참고

    API Spec 작성 방법과 Manifest 작성 방법에 대한 자세한 설명은 스킬을 참조해 주십시오.

    Step 3. 데이터 수집

    데이터 수집 단계에서는 사용자의 질문을 분석한 후 적절한 스킬을 호출합니다. 쿼리 분석 결과에서 분리된 쿼리의 수만큼 스킬이 호출되는데, 만약 사용자의 질문이 두 개의 쿼리로 분리되었다면 스킬도 각각 두 번 호출하게 됩니다. 이 예제에서는 '네이버 1784 주소와 근처 카페 추천해 주세요'로 데이터를 수집하므로 스킬이 두 번 호출됩니다.

    스킬을 호출하는 단계는 다음과 같습니다.
    Step 1. 호출하고자 하는 스킬의 정보를 불러옵니다.
    Step 2. 스킬 정보를 바탕으로 API 호출을 위한 URL 및 파라미터를 생성하고, 실제 호출 결과(API 응답)을 받아옵니다.
    Step 3. 호출 결과를 토대로 자연어로 정리된 내용이 생성됩니다.

    만약 데이터를 수집하는 과정에서 API를 호출하기 위한 액션 입력 항목이 제대로 생성되지 못했다면 호출 결과도 정상적으로 생성되지 않습니다. 이런 경우에는 모델이 쿼리를 잘 이해할 수 있도록 액션 입력 항목을 수정해 줍니다. 이러한 검토 과정은 API의 복잡도나 특성에 따라 달라집니다.

    데이터를 수집하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔에서 Services > AI Services > CLOVA Studio 메뉴를 차례대로 클릭해 주십시오.
    2. My Product 메뉴에서 [CLOVA Studio 바로가기] 버튼을 클릭해 주십시오.
    3. CLOVA Studio에서 스킬 트레이너 메뉴를 클릭해 주십시오.
    4. 데이터를 수집할 스킬셋을 클릭해 주십시오.
    5. 화면 왼쪽에서 데이터 수집 메뉴를 클릭해 주십시오.
    6. 호출 옵션에 사전 준비에서 발급 받은 API 정보를 예시 포맷을 참고하여 입력해 주십시오.
    7. User Query에 "네이버 1784 주소와 근처 카페 추천해 주세요"를 입력한 후 [실행] 버튼을 클릭해 주십시오.
    8. 화면 오른쪽에서 쿼리 분석 및 스킬 호출 결과를 검토해 주십시오.
      • 만약 중간에 수정이 필요한 내용이 있다면, [중단하기] 버튼을 클릭하여 수정하고자 하는 영역을 수정한 뒤 [적용] 버튼을 클릭해 주십시오.
      참고

      이 예제에서 사용하는 지역 검색 API는 호출 파라미터 중 query 파라미터에 간결한 값을 입력해야 잘 작동합니다. 모델이 생성한 파라미터 값에 따르면 '네이버 1784 근처 카페'이므로 해당 검색 키워드로는 API 검색 결과를 생성하지 못할 수 있습니다. 따라서 액션 입력 항목에서 쿼리를 '네이버 1784 카페'로 수정한 후 [적용] 버튼을 클릭하여 API 검색 결과를 다시 생성해 주십시오.

    9. 스킬 호출 단계의 수정 및 검토가 완료되면 [작업 완료] 버튼을 클릭하여 데이터 수집을 완료해 주십시오.
      • 최종 답변 단계에서는 두 스킬 호출 결과가 취합된 답변이 생성됩니다.
    10. 원하는 답변 형식이 있다면, 다음과 같이 형식에 맞춘 케이스를 여러 건 수집해 주십시오.
      {사용자 요청 내용}을 알려드리겠습니다.
      1. {장소1 이름}
      - 주소: {장소 1의 주소}
      2. {장소2 이름}
      - 주소: {장소 2의 주소}
      
      더 필요하신 지역 정보가 있다면 말씀해주십시오. 
      
    11. 모델이 여러 케이스를 학습할 수 있도록 다양한 User Query를 활용하여 데이터를 수집해 주십시오.
      • 최소 20개 이상의 데이터를 수집한 후 학습을 수행하는 것을 권장합니다.
      • 다음과 같은 쿼리를 수집할 수 있습니다.
        • 정자동 미용실 인기 많은 곳
        • 강남역 근처 카페 찾아줘
        • 성수동 맛집 찾아줘. 리뷰 많은 순으로 나열해줘.
        • 분당구청 정보 알려줘

    Step 4. 데이터 학습

    다양한 유저 쿼리로 데이터를 수집한 후, 모델이 더 정확하고 정교한 답변을 생성할 수 있도록 스킬셋을 학습시킵니다. 데이터를 학습하려면 '완료' 상태의 스킬과 수집된 데이터가 1개 이상 존재해야 합니다.

    데이터를 학습하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔에서 Services > AI Services > CLOVA Studio 메뉴를 차례대로 클릭해 주십시오.
    2. My Product 메뉴에서 [CLOVA Studio 바로가기] 버튼을 클릭해 주십시오.
    3. CLOVA Studio에서 스킬 트레이너 메뉴를 클릭해 주십시오.
    4. 데이터를 수집할 스킬셋을 클릭해 주십시오.
    5. 화면 왼쪽에서 데이터 학습 메뉴를 클릭해 주십시오.
    6. [학습 시작] 버튼을 클릭해 주십시오.

    Step 5. 테스트 앱 발급

    버전 관리 메뉴에서 데이터 수집 화면에서 학습된 버전에 대한 테스트를 진행해 볼 수 있습니다. 만약 결과가 만족스럽지 않다면 데이터를 추가로 수집하여 재학습을 진행합니다.

    테스트 앱을 발급하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔에서 Services > AI Services > CLOVA Studio 메뉴를 차례대로 클릭해 주십시오.
    2. My Product 메뉴에서 [CLOVA Studio 바로가기] 버튼을 클릭해 주십시오.
    3. CLOVA Studio에서 스킬 트레이너 메뉴를 클릭해 주십시오.
    4. 스킬셋을 클릭해 주십시오.
    5. 화면 왼쪽에서 버전 관리 메뉴를 클릭해 주십시오.
    6. 서비스에 적용할 최종 버전의 [테스트 앱] 버튼을 클릭하여 테스트 앱을 생성해 주십시오.
      • 발급한 앱을 호출하는 방법은 API 가이드를 참조해 주십시오.

    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.