Jump to content

스킬 트레이너 일시적 서버 에러가 발생하였습니다.


전호영

Recommended Posts

안녕하세요.

다음과 같이 API Spec을 작성하였습니다.

{
  "info": {
    "title": "자투리 시간 및 현재 위치 기반 장소 추천",
    "version": "v1"
  },
  "paths": {
    "/v1/places_recommendation": {
      "post": {
        "summary": "AI를 통해 장소를 추천하는 API입니다.",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "integer",
                        "description": "추천 순서(1,2,3,4,5 중 1)"
                      },
                      "title": {
                        "type": "string",
                        "description": "장소 이름"
                      },
                      "address": {
                        "type": "string",
                        "description": "장소 주소"
                      },
                      "content": {
                        "type": "string",
                        "description": "장소 추천 이유"
                      }
                    }
                  },
                  "maxItems": 5,
                  "minItems": 1
                }
              }
            },
            "description": "성공적인 응답"
          }
        },
        "description": "AI를 통해 장소를 추천하는 API입니다.",
        "operationId": "placesRecommendation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "spareTime",
                  "activityType",
                  "keywords",
                  "location"
                ],
                "properties": {
                  "keywords": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "SELF_DEVELOPMENT",
                        "HEALTH",
                        "NATURE",
                        "CULTURE_ART",
                        "ENTERTAINMENT",
                        "RELAXATION",
                        "SOCIAL"
                      ],
                      "type": "string"
                    },
                    "description": "원하는 활동 주제. SELF_DEVELOPMENT, HEALTH, NATURE, CULTURE_ART, ENTERTAINMENT, RELAXATION, SOCIAL 중 1~7개의 값을 가진다."
                  },
                  "location": {
                    "type": "string",
                    "description": "현재 위치"
                  },
                  "spareTime": {
                    "type": "integer",
                    "description": "자투리 시간. 10~300 사이의 값을 가진다."
                  },
                  "activityType": {
                    "enum": [
                      "ONLINE",
                      "OFFLINE",
                      "ONLINE_AND_OFFLINE"
                    ],
                    "type": "string",
                    "description": "활동의 온/오프라인 여부. ONLINE, OFFLINE, ONLINE_AND_OFFLINE 중 하나의 값을 가진다."
                  }
                }
              }
            }
          },
          "required": true
        }
      }
    }
  },
  "openapi": "3.0.0",
  "servers": [
    {
      "url": "http://localhost:8080"
    }
  ]
}

그 후 데이터 수집 시 호출 옵션을 다음과 같이 설정하였습니다. 

{
  "baseOperation": {
    "header": {
      "X-Naver-Client-Id": "",
      "X-Naver-Client-Secret": ""
    }
  },
  "operations": [
    {
      "operationId": "placesRecommendation",
      "requestBody": {
        "spareTime": 30,
        "activityType": "OFFLINE",
        "keywords": [
          "NATURE"
        ],
        "location": "서울시 강남구"
      }
    }
  ]
}

image.png.d52ebec4d8b451128d34c8821300a074.png

image.png.1155089931d391fe972df5f6d15f9472.png

그 후 실행을 누르면 위와 같이 계속 에러가 발생합니다..
어디가 문제인지 모르겠습니다 .

링크 복사
다른 사이트에 공유하기

@전호영님 안녕하세요.

공유주신 API Spec을 확인해본 결과, servers 항목의 url 필드에 로컬 주소(http://localhost:8080)가 입력되어서 해당 오류가 발생된 것으로 보입니다. 따라서 외부에서도 접근이 가능한 도메인 이름 또는 주소로 변경해 주시면 정상적인 호출이 가능합니다. 

이후에도 문제가 지속되거나 추가적인 문의가 있으시다면 언제든 남겨주세요!

감사합니다 🙂

링크 복사
다른 사이트에 공유하기

예시로 준 지역검색을 사용해보았습니다.
 

API Spec에서 query에 대한 값들을 수정하고, display도 5로 변경했습니다.

Quote

{
  "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": "5"
            },
            "required": true,
            "description": "요청한 쿼리에 대한 검색 결과 수 입니다. 유일한 상점이나 업체일 경우에는 결과를 1개만 보여주세요."
          },
          {
            "in": "query",
            "name": "sort",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "검색 결과 정렬 방법\\n- **random**: 정확도순으로 내림차순 정렬(기본값)\\n- **comment**:카페, 블로그의 리뷰 개수순으로 내림차순 정렬이 필요할 때 값을 사용하세요. '맛집'이라는 키워드가 포함되면 무조건 이 값을 사용하세요.(e.g. 리뷰 많은 순으로 정렬해주세요. 유명한 곳을 알려주세요. 인기 많은 곳을 알려주세요.)\\n"
          }
        ],
        "description": "지역의 업체나 기관을 검색합니다.",
        "operationId": "localSearch"
      }
    }
  },
  "openapi": "3.0.2",
  "servers": [
    {
      "url": "https://openapi.naver.com"
    }
  ]
}

이 후 유저 쿼리로 
 

Quote

자투리 시간: 30분

선호활동: OFFLINE

활동 키워드: 휴식

위치: 건대입구

활동이나 갈만한 장소를 추천해줘

이와 같이 날려보았는데 답변으로 

Quote

{
    "message": "네, 건대입구에서 휴식할 수 있는 장소를 알려드리겠습니다.",
    "list": [
        {
            "name": "휴식카페 청계광장점",
            "address": "서울특별시 종로구 서린동 146 1F 휴식카페"
        },
        {
            "name": "휴식카페 종로르메이에르점",
            "address": "서울 종로구 종로1가 24 1층 116-1호"
        },
        {
            "name": "휴식카페 시청점",
            "address": "서울 중구 태평로2가 69-3 1층 휴식카페"
        },
        {
            "name": "휴식 청계다동점",
            "address": "서울 중구 다동 70"
        },
        {
            "name": "잠시휴식",
            "address": "서울 중구 을지로2가 6"
        }
    ]
}

건대입구 주변이라고 할 수 없는 값들을 추천받았습니다. 
이는 데이터 학습을 통해 해결하나요? 

링크 복사
다른 사이트에 공유하기

@전호영님 안녕하세요!

전달주신 API Spec와 query로 확인해보니, API 조회 결과는 "건대입구에서 휴식할 수 있는 장소"로 잘 받아오나, 액션입력에서 쿼리 파마리터를 "query=휴식"으로 잡혀 API 호출 결과에 영향을 미친 것 으로 보입니다. 이때는 아래와 같이 액션입력 영역을 의도하신 "건대입구 휴식"로 수정 및 적용해주시면 최종답변까지 의도한 응답값을 받으실 수 있습니다.image.png.b64d90e7a214b353e43a1b6c7bfa05b8.png이렇게 데이터 수집 시에 Step2의 액션 입력값과 Step3의 생각 영역을 적절히 수정 후 학습을 진행하시면 모델 응답을 개선할 수 있습니다.

마지막으로, 문의 주신 CLOVA X의 Skill을 API로 활용하기 어려운 점 안내드립니다.
추가적인 문의 있으시면 편하게 남겨주세요! 감사합니다.

 

링크 복사
다른 사이트에 공유하기

게시글 및 댓글을 작성하려면 로그인 해주세요.



로그인
×
×
  • Create New...