IT/HyperClovaX

[Clova Studio] 스킬트레이너 -2 [스킬 만들기]

송시 2024. 7. 14. 05:36
728x90

2024.07.04 - [IT/HyperClovaX] - [Clova Studio] 스킬트레이너 - 1 [ 스킬셋 만들기 ]

 

[Clova Studio] 스킬트레이너 - 1 [ 스킬셋 만들기 ]

클로바 스튜디오의 언어모델의 한계를 극복하기 위한 방법 중 하나로 스킬트레이너를 사용한다고 이전에 글을 작성한 적이 있다. 2024.06.24 - [IT/HyperClovaX] - [Clova Studio] 스킬트레이너에 대한 간략

songsiaix.tistory.com

스킬셋을 만들었다면 이제 스킬을 만들 차례다.

 

하나의 스킬은 하나의 API 와 매칭이 된다.

 

물론 외부의 openAPI 도 사용할 수 있겠지만 회사 내부에서 사용하는 API 도 사용할 수 있다.

 

다만 Clova Studio 에서 API로 통신이 되야하기에 네트워크가 열려있는 API 에서만 사용할 수 있다.

 

이번에 내가 진행한 실제 프로젝트를 예를 들어보려 한다.

 

네이버개발자에서 제공하는 API 중 검색 API 가 있고 검색 API 중 쇼핑을 전문으로 검색할 수 있는 기능이 있다.

 

https://developers.naver.com/main/

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

App 등록 과정

네이버개발자의 API 종류가 몇개 있는데 그 중에서 쇼핑이라는 단어에 꽂혀서 "데이터랩(쇼핑인사이트)" 를 선택하면 엉뚱한 선택을 하게 되는 것이다.

 

제일 상단에 있는 "검색"을 선택해야지만 네이버검색의 기능 중 쇼핑 부분을 검색할 수 있게 된다.

 

cliet ID와 client secret 정보

 

그리고 추가로 검색의 쇼핑 관련 API 사용방법에 대해서도 알아보아야 한다.

https://developers.naver.com/docs/serviceapi/search/shopping/shopping.md#%EC%87%BC%ED%95%91

 

검색 > 쇼핑 - Search API

검색 > 쇼핑 쇼핑 검색 개요 개요 검색 API와 쇼핑 검색 개요 검색 API는 네이버 검색 결과를 뉴스, 백과사전, 블로그, 쇼핑, 웹 문서, 전문정보, 지식iN, 책, 카페글 등 분야별로 볼 수 있는 API입니다

developers.naver.com

 

요청 URL: https://openapi.naver.com/v1/search/shop.json

필수 파라미터: query , 검색어는 UTF-8로 인코딩되어야함

**이 외의 정보는 위의 네이버개발자 API 사용방법을 확인해보자

 

우선 새로운 스킬셋을 만든다.

아래는 스킬을 만든는데 필요한 정보다.

 

스킬명: shopSkill

 

API spec

더보기

{
  "info": {
    "title": "네이버 쇼핑 검색",
    "version": "1.0.0",
    "description": "네이버 쇼핑 서비스에 등록된 상품을 검색하기 위한 스킬"
  },
  "paths": {
    "/v1/search/shop.json": {
      "get": {
        "summary": "쇼핑 검색 결과를 나열합니다.",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "link": {
                            "type": "string"
                          },
                          "brand": {
                            "type": "string"
                          },
                          "image": {
                            "type": "string"
                          },
                          "maker": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "hprice": {
                            "type": "integer"
                          },
                          "lprice": {
                            "type": "integer"
                          },
                          "mallName": {
                            "type": "string"
                          },
                          "category1": {
                            "type": "string"
                          },
                          "category2": {
                            "type": "string"
                          },
                          "category3": {
                            "type": "string"
                          },
                          "category4": {
                            "type": "string"
                          },
                          "productId": {
                            "type": "integer"
                          },
                          "productType": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "start": {
                      "type": "integer"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "display": {
                      "type": "integer"
                    },
                    "lastBuildDate": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "description": "- **title**: 상품명\\n- **link**: 상품 구매 페이지 링크\\n- **image**: 상품 이미지\\n- **lprice**: 최저가\\n- **hprice**: 최고가\\n- **mallName**: 쇼핑몰명\\n- **productId**: 상품 ID\\n- **productType**: 상품 타입\\n- **brand**: 브랜드\\n- **maker**: 제조사\\n- **category1**: 카테고리1\\n- **category2**: 카테고리2\\n- **category3**: 카테고리3\\n- **category4**: 카테고리4"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "query",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "**query**: 사용자가 찾고자 하는 상품의 설명 (e.g. 스마트폰, 노트북, 가방)"
          },
          {
            "in": "query",
            "name": "display",
            "schema": {
              "type": "integer",
              "default": "2"
            },
            "required": false,
            "description": "요청한 쿼리에 대한 검색 결과 수 입니다."
          },
          {
            "in": "query",
            "name": "start",
            "schema": {
              "type": "integer"
            },
            "required": false,
            "description": "검색 시작 위치입니다."
          },
          {
            "in": "query",
            "name": "sort",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "검색 결과 정렬 방법\\n- **sim**: 정확도순으로 내림차순 정렬(기본값)\\n- **date**: 날짜순으로 내림차순 정렬\\n- **asc**: 가격 오름차순\\n- **dsc**: 가격 내림차순\\n- **point**: 리뷰 순\\n- **mall**: 네이버페이 상품 순\\n- **checkout**: 네이버체크아웃 상품 순\\n- **rel**: 유사도순"
          }
        ],
        "description": "네이버 쇼핑에서 상품을 검색합니다.",
        "operationId": "shoppingSearch"
      }
    }
  },
  "openapi": "3.0.2",
  "servers": [
    {
      "url": "https://openapi.naver.com"
    }
  ]
}

API spec 은 네이버개발자의 검색 API 의 request & response 를 정의한 정의서 이다.

 

Manifest:

Name for model : SearchShop

Description for human : 사용자가 나이, 성별, 날씨, 장소, 분위기 등에 맞춰 옷, 악세서리 등을 추천합니다.

Description for model : 사용자가 원하는 유형에 맞게 옷, 악세서리 등을 추천하는 API 입니다. 이 API 를 호출하면 네이버의 쇼핑 검색에서 나오는 제목, 판매처, 최저 가격, 최고 가격, 성별, 연령대, 카테고리1,2를 보여줍니다.

 

Manifest 는 스킬셋을 통해서 LLM 요청이 왔을 때 어떤 스킬을 사용할지를 결정할 수 있는 중요한 부분이기에 model 에게 설명하는 부분을 잘 기입해야 한다.

 

이렇게 만들어진 스킬은 이제 데이터 수집을 통해서 훈련을 위한 과정에 도입하게 된다.

728x90