- 인쇄
- PDF
시나리오 관리
- 인쇄
- PDF
Classic/VPC 환경에서 이용 가능합니다.
시나리오는 사용자의 질문에 적절한 답을 주기 위해 모델이 생각하고 판단하는 과정입니다. 시나리오 수집 및 데이터 검토를 통해 모델의 사고 과정을 수정할 수 있습니다.
시나리오 화면
항목 | 설명 |
---|---|
① 시나리오 수집 영역 | 시나리오를 수집하기 위한 데이터를 설정하는 영역
|
② 플래닝 데이터 영역 | 진행 중인 모델 사고 과정의 전체 데이터가 노출되는 영역
|
③ 스킬 데이터 영역 | 스킬을 호출한 데이터가 노출되는 영역
|
④ 기능 버튼 |
|
- Step 1의 결과는 스킬 호출에 대한 결과가 표시되며, 나머지 스텝에서는 전체 모델 생성에 대한 결과가 표시됩니다.
- 최종 답변이 생성되었더라도 [임시저장] 버튼을 클릭하는 경우, 작업 상태가 '작업 중'으로 변경됩니다.
시나리오 수집
시나리오를 수집하는 방법은 다음과 같습니다.
- 네이버 클라우드 플랫폼 콘솔에서 Services > AI Services > CLOVA Studio 메뉴를 차례대로 클릭해 주십시오.
- My Product 메뉴를 클릭한 후 [CLOVA Studio 바로가기] 버튼을 클릭해 주십시오.
- CLOVA Studio에서 스킬 트레이너 메뉴를 클릭해 주십시오.
- 화면 상단의 [시나리오 수집] 버튼을 클릭해 주십시오.
- 화면 왼쪽에서 스킬셋과 엔진을 선택하고 유저쿼리를 입력해 주십시오.
- 스킬셋: 시나리오를 수집할 스킬셋 선택
- 포함된 스킬: 선택한 스킬셋에 포함된 스킬 목록이 표시됨. 작업 상태가 '작업 완료'인 스킬만 활용 가능
- Engine 및 버전: 사용할 언어 모델 선택. 기본 언어 모델이 기본 값으로 선택되어 있음
- 호출옵션(선택): 유저쿼리 호출 시 고정 값 입력. 호출옵션을 작성하는 방법은 호출옵션 작성을 참조해 주십시오.
- 유저쿼리: 사용자 쿼리를 입력하는 필드. 스킬셋을 선택해야 해당 필드가 활성화됨
- [실행] 버튼을 클릭해 주십시오.
시나리오 수집을 실행한 후에는 스킬셋, Engine, 유저쿼리를 수정할 수 없습니다. 수정이 필요한 경우, [초기화] 버튼을 클릭하여 작업을 새로 수행해 주십시오. [초기화] 버튼은 시나리오 수집이 완료된 이후에 활성화됩니다.
시나리오 데이터 수정
수집한 시나리오의 데이터를 검토하고 수정하는 방법은 다음과 같습니다.
- 시나리오 수집을 수행해 주십시오.
- 플래닝 데이터 영역에서 모델의 사고를 검토해 주십시오.
- 플래닝 데이터 영역의 스텝을 수정하려면 각 필드를 클릭한 후 수정해 주십시오.
- 플래닝 데이터 영역의 수정하는 방법은 플래닝 데이터를 참조해 주십시오.
- 스텝 수정이 완료되면 [적용] 버튼을 클릭해 주십시오.
- 해당 스텝이 재생성됩니다.
- 스킬 데이터 영역의 데이터를 수정하려면 각 필드를 클릭한 후 수정해 주십시오.
- 스킬 데이터 영역을 수정하는 방법은 싱글 스킬 데이터를 참조해 주십시오.
- 수정이 완료되면 [적용] 버튼을 클릭해 주십시오.
- 해당 스킬 데이터가 재실행됩니다.
- 플래닝 데이터 영역에서 최종 답변 필드가 표시되면 화면 오른쪽 하단에 있는 [작업 완료] 버튼을 클릭해 주십시오.
- 해당 작업을 임시 저장하고 나중에 불러오려면 [임시저장] 버튼을 클릭해 주십시오.
스킬 데이터 영역에서 불필요한 데이터가 생성된 경우, 스킬 데이터 영역의 [Step 끝내기] 버튼을 클릭해 주십시오. 해당 스텝과 최종 답변 스텝 사이에 생성된 모든 스텝이 삭제됩니다. [Step 끝내기] 버튼은 최종 답변 스텝까지 모두 생성된 경우에 활성화됩니다.
플래닝 데이터
플래닝 데이터 영역에는 진행 중인 모델 사고 과정의 모든 데이터가 나타납니다. 유저 쿼리 실행 시 활용할 스킬 및 순서 등을 계획하고 수행하는 플래닝 모델의 사고 과정을 확인할 수 있습니다. 플래닝 데이터 영역은 3단계로 구성됩니다.
1단계: 플래닝 단계
어떤 스킬을 사용할 것인지 결정하는 단계입니다.
항목 | 설명 |
---|---|
생각 | 유저 쿼리에 대한 모델의 생각 |
액션 | 현재 스텝을 진행하기 위해 필요한 액션 종류 |
액션 입력 | 액션 호출에 필요한 입력 값. 액션 입력 영역의 쿼리 필드에는 유저 쿼리가 표기되고, 스킬 필드에는 사용할 스킬이 표기됨 두 개 이상의 스킬이 필요한 경우, “강남역 맛집이랑 렌터카 업체 소개해줘“ 대신 “강남역 맛집 알려줘“ + “강남역 렌터카 업체 소개해줘“라고 쿼리가 분리돼서 입력됨 |
결과 | 플래닝 단계의 결과가 입력됨[{“tool_name”: “사용할 스킬 이름1”,“input”:{“query”:“스킬에 해당하는 쿼리”}}, {“tool_name”: “사용할 스킬 이름2”,“input”:{“query”:“스킬에 해당하는 쿼리”}}] |
2단계: 스킬 수행 단계
스킬을 호출하는 단계입니다. 스킬 수행 단계에서는 모든 필드를 수정할 수 없습니다.
3단계: 최종 답변 단계
사용자에게 전달할 답변을 결정하는 단계입니다. [작업 완료] 버튼을 클릭하여 모든 내용을 저장하고 시나리오 생성 작업을 끝낼 수 있습니다.
싱글 스킬 데이터
스킬 데이터 영역에는 호출할 스킬 데이터가 나타납니다. 플래닝 데이터 영역에서 유저 쿼리에 어떤 스킬을 사용할 것인지 계획했다면, 스킬 데이터 영역에서는 호출할 스킬에 대한 상세한 데이터가 나타나고 직접 수정할 수 있습니다. 스킬 데이터 영역은 3단계로 구성됩니다.
1단계: API 조회
싱글 스킬 데이터의 1단계는 API를 조회하는 단계입니다.
항목 | 설명 |
---|---|
생각 | 모델의 판단 결과. 스킬의 API 이름이 포함되어야 함 |
액션 | 액션의 이름 |
액션 입력 | 반드시 'None' 값 표시 |
관찰 | 모델의 판단에 따라 사용해야 하는 API 스펙 |
2단계: API 호출
싱글 스킬 데이터 2단계인 API를 호출하는 단계입니다. 스킬 데이터 2단계인 API를 호출하는 단계입니다. 각 필드를 클릭하여 값을 수정할 수 있습니다. 필드의 값을 수정하면 [적용] 버튼이 활성화됩니다. [적용] 버튼을 클릭하면 스킬 데이터가 재실행되고 수정된 결과가 플래닝 데이터 영역에도 적용됩니다.
API 호출 단계에서 GET 메소드를 사용하는 스킬 데이터의 화면은 다음과 같습니다.
항목 | 설명 |
---|---|
생각 | API를 호출하기 위한 사고 과정. 구체적인 파라미터 및 쿼리 입력 시 성능 향상 가능 <작성 예시> 'API 문서를 확인해보니 필수 파라미터는 {필수 파라미터명}이다. {쿼리}를 하기 위해서는 {사용 파라미터1}의 값으로 {파라미터1 값}을 {사용 파라미터2}의 값으로 {파라미터2 값}을 사용하면 되겠다'. |
액션 | ‘requests_get' 적용 |
액션입력 | API 호출에 필요한 주소 및 파라미터 입력 |
관찰 | 모델의 판단 결과 |
POST 메소드 사용하는 경우에는 액션입력 영역에 URL과 파라미터를 입력할 수 있는 필드가 활성화됩니다.
API 호출 단계에서 POST 메소드를 사용하는 스킬 데이터의 화면은 다음과 같습니다.
항목 | 설명 |
---|---|
생각 | API를 호출하기 위한 사고 과정. 구체적인 파라미터 및 쿼리 입력 시 성능 향상 가능 <작성 예시> 'API 문서를 확인해보니 필수 파라미터는 {필수 파라미터명}이다. {쿼리}를 하기 위해서는 {사용 파라미터1}의 값으로 {파라미터1 값}을 {사용 파라미터2}의 값으로 {파라미터2 값}을 사용하면 되겠다'. |
액션 | ‘requests_post' 적용 |
액션입력 | API 호출 주소와 파라미터 적용
|
관찰 | 모델의 판단 결과 |
새로운 파라미터 생성 시 기존에 생성된 파라미터의 Key와 중복되지 않도록 설정해 주십시오. 중복된 Key가 있을 경우에는 API가 호출되지 않을 수 있습니다.
3단계: 스킬 답변
API를 조회하고 호출하는 단계를 완료한 후 사용자에게 전달할 답변을 결정하는 단계입니다.
시나리오 구성 방식
사용하는 스킬의 개수에 따라 싱글 스킬 시나리오와 멀티 스킬 시나리오로 구성할 수 있습니다.
싱글 스킬 시나리오
싱글 스킬 시나리오는 스킬을 1개만 활용하는 시나리오입니다. 시나리오 진행 순서는 다음과 같습니다.
- 유저 쿼리: 부산 관광지 추천해줘
- 플래닝 데이터의 Step 1: 사용할 스킬을 계획하는 단계
- 플래닝 데이터의 Step 2: 스킬을 수행하는 단계
- 싱글 스킬 데이터의 Step 2-1: 관광지 정보 API 조회
- 싱글 스킬 데이터의 Step 2-2: 관광지 정보의 API 파라미터 확인, 키워드 값에 '부산' 사용하여 호출
- 스킬 데이터의 Step 2-3: 부산 관광지에 대한 결과 출력
- 플래닝 데이터의 Step 3: 사용자에게 최종 답변하는 단계
시나리오 설명
'부산 관광지 추천해줘'라는 유저 쿼리에 대해 모델은 어떤 스킬을 사용할 것인지 판단합니다. 관광지 조회 API를 호출해야겠다고 판단하면 해당 API를 조회하고 필요한 파라미터를 확인한 후 필요한 정보를 호출합니다. 마지막으로 사용자에게 어떤 형태로 보여줄 지 결정한 후 답변을 제시합니다.
멀티 스킬 시나리오
멀티 스킬 시나리오는 스킬 2개를 활용하는 시나리오입니다. 시나리오 진행 순서는 다음과 같습니다.
- 유저 쿼리: 강남역 맛집과 렌터카 업체 소개해줘
- 플래닝 데이터의 Step 1: 사용할 스킬을 계획하는 단계
- 플래닝 데이터의 Step 2: 스킬을 수행하는 단계
- 싱글 스킬 데이터의 Step 2-1: 강남역 맛집 API 조회
- 싱글 스킬 데이터의 Step 2-2: 강남역 맛집 API 호출
- 스킬 데이터의 Step 2-3: 강남역 맛집에 대한 결과 출력
- 플래닝 데이터의 Step 3: 스킬을 수행하는 단계
- 싱글 스킬 데이터의 Step 3-1: 렌터카 업체 정보 API 조회
- 싱글 스킬 데이터의 Step 3-2: 렌터카 업체 정보 API 호출
- 스킬 데이터의 Step 3-3: 렌터카 업체에 대한 결과 출력
- 플래닝 데이터의 Step 4: 사용자에게 최종 답변하는 단계
시나리오 설명
'강남역 맛집과 렌터카 업체 소개해줘' 라는 유저 쿼리에 대해 모델은 어떤 스킬을 사용할 것인지 판단합니다. 맛집 조회와 렌터카 업체 조회가 각각 필요하므로 두 개의 API를 호출해야 겠다고 판단합니다. 두 번째 스텝에서는 강남역 주변의 인기 있는 식당을 조회하는 API를 조회하고 호출하고, 세 번째 스텝에서는 렌터카 업체를 조회하는 API를 조회하고 호출합니다. 마지막으로 사용자에게 여러 정보를 어떤 형태로 보여줄 지 결정한 후 답변을 제시합니다.
- 스킬 수행 단계의 액션 필드에는 호출할 스킬의 'Name for model' 값을 포함해야 합니다.
- 스킬 수행 단계의 액션 입력 필드 값을 수정할 경우, Step 1의 결과 필드에서 입력된 쿼리를 포함해야 합니다.
시나리오 불러오기
이전에 작업하던 시나리오를 불러와서 검토하고 수정할 수 있습니다.
시나리오를 불러오는 방법은 다음과 같습니다.
- 네이버 클라우드 플랫폼 콘솔에서 Services > AI Services > CLOVA Studio 메뉴를 차례대로 클릭해 주십시오.
- My Product 메뉴를 클릭한 후 [CLOVA Studio 바로가기] 버튼을 클릭해 주십시오.
- CLOVA Studio에서 스킬 트레이너 메뉴를 클릭해 주십시오.
- 화면 상단의 [시나리오 수집] 버튼을 클릭해 주십시오.
- 시나리오 수집 화면의 왼쪽 하단에 있는 [불러오기] 버튼을 클릭해 주십시오.
- 작업 중인 시나리오 목록이 나타납니다.
- 기존 쿼리 목록을 확인해 주십시오.
- 불러오기 창 우측 상단에서 유저 쿼리를 검색할 수 있습니다.
- 모델 결과를 확인하려면 데이터 항목의 [보기] 버튼을 클릭해 주십시오.
- 유저 쿼리를 삭제하려면 목록 우측의 더보기 > [삭제] 버튼을 클릭해 주십시오.
- 시나리오 작업 화면에서 [작업 완료] 버튼을 클릭한 경우에만 작업 상태가 '작업 완료'로 표시됩니다.
- 시나리오 수집 화면에서 기존 쿼리에 대한 작업을 수정하려면 [열기] 버튼을 클릭해 주십시오.
- 시나리오 수집 화면이 나타나며 기존 쿼리에 대한 작업을 이어나갈 수 있습니다.
호출옵션 작성
호출옵션을 통해 API spec의 operation ID에 대응하여 헤더 및 본문 매개변수의 특정값을 고정하는 설정을 할 수 있습니다. 호출옵션을 작성하는 방법은 다음과 같습니다.
- 시나리오 수집 과정 중 화면 왼쪽에서 호출옵션의 [설정 아이콘] 을 클릭해 주십시오.
- 호출 옵션 설정 창이 나타납니다.
- 호출값 입력 영역에 호출옵션을 JSON 타입으로 입력해 주십시오. 상단의 예시 포맷을 참고하여 작성해 주십시오.
- 호출값 입력에 대한 자세한 내용은 상세 호출옵션를 참조해 주십시오.
- 호출값 입력이 완료되면 [적용] 버튼을 클릭해 주십시오.
- 적용 실패 시 오류 메시지가 나타납니다. 호출값을 다시 수정해 주십시오.
호출옵션 적용하여 시나리오 수집을 진행한 뒤, [초기화] 버튼을 클릭하더라도 호출옵션은 그대로 유지됩니다. 단, 다음의 경우에 호출옵션이 초기화 됩니다.
- 시나리오 수집 화면에서 벗어난 후에 스킬셋 목록 또는 스킬 목록에서 [시나리오 수집] 버튼을 클릭하여 다시 시작한 경우
- 시나리오 수집 화면에서 스킬셋을 변경하는 경우
이러한 경우 시나리오 [불러오기] 를 클릭하여 이전에 사용한 호출옵션을 다시 불러올 수 있습니다.
상세 호출옵션
호출옵션에 작성 가능한 필드에 관한 정보입니다.
필드 | 데이터 타입 | 설명 |
---|---|---|
baseOperation | object | 해당 스킬셋 내에 등록된 모든 API에 대해 호출옵션이 적용됨 |
baseOperation.header | map<string, string> | 모든 API의 HTTP Header에 추가 및 고정 시키고자 하는 값 |
baseOperation.query | map<string, string> | 모든 API의 HTTP Query Parameter에 추가 및 고정 시키고자 하는 값 |
baseOperation.requestBody | map<string, object> | 모든 API의 HTTP Request Body에 추가 및 고정 시키고자 하는 값 |
operations | list | 해당 스킬셋 내에 등록된 API 중 지정된 Operation ID에 한하여 호출옵션이 적용됨 |
operations[].operationId | string | 호출옵션을 적용하고자 하는 Operation ID를 지정 |
operations[].header | map<string, string> | 지정된 Operation ID에 매핑되는 API의 HTTP Header에 추가 및 고정 시키고자 하는 값 |
operations[].query | map<string, string> | 지정된 Operation ID에 매핑되는 API의 HTTP Query Parameter에 추가 및 고정 시키고자 하는 값 |
operations[].requestBody | map<string, object> | 지정된 Operation ID에 매핑되는 API의 HTTP Request Body에 추가 및 고정 시키고자 하는 값 |
호출값 작성 예시
스킬셋 내에 등록된 모든 API에 대해 일괄적으로 호출옵션을 적용하고자 할 때 baseOperation 필드를 활용할 수 있습니다. 작성 예시는 다음과 같습니다.
{
"baseOperation": {
"query": {
"serviceKey": "value"
}
}
}
특정 Operation ID에 한하여 호출옵션을 적용하고자 할 때 operations 필드를 활용할 수 있습니다. 작성 예시는 다음과 같습니다.
{
"operations": [
{
"operationId": "filterBakeryProducts",
"query": {
"serviceKey": "value"
}
}
]
}
baseOperation 필드와 operations 필드를 함께 적용하는 것도 가능합니다. 작성 예시는 다음과 같습니다.
{
"baseOperation": {
"header": {
"baseHeader": "baseHeaderValue"
},
"query": {
"baseQuery": "baseQueryValue"
},
"requestBody": {
"baseBody": "baseBodyValue"
}
},
"operations": [
{
"operationId": "testOperationId1",
"header": {
"header1": "headerValue1"
},
"query": {
"query1": "queryValue1"
},
"requestBody": {
"body1": "bodyValue1"
}
},
{
"operationId": "testOperationId2",
"header": {
"header2": "headerValue2"
},
"query": {
"query2": "queryValue2"
},
"requestBody": {
"body2": "bodyValue2"
}
}
]
}