인텐트는 대화 차례 1회에서 최종 사용자의 의도를 분류합니다.
인텐트에는 다음 데이터가 포함됩니다.
용어 | 정의 |
---|---|
표시 이름 | 콘솔에 표시되는 인텐트의 이름입니다. |
라벨 | 인텐트 분류를 도와주는 라벨입니다. 예를 들면 헤드 인텐트입니다. |
학습 문구 | 학습 문구는 최종 사용자가 입력하거나 말할 수 있는 예시 문구로, 최종 사용자 입력이라고 합니다. 최종 사용자 입력이 이러한 문구 중 하나와 유사하면 대화형 에이전트(Dialogflow CX)에서 인텐트를 일치시킵니다. 대화형 에이전트(Dialogflow CX)의 기본 제공 머신러닝에서 유사한 다른 문구들로 목록을 확장하므로 모든 예시를 하나하나 정의할 필요는 없습니다. |
매개변수 | 최종 사용자 입력의 특정 부분에서 값을 추출하기 위해 매개변수를 사용하도록 학습 문구를 정의합니다. |
DTMF 패턴 | 전화 통합용 DTMF를 참조하세요. |
인텐트 매칭
최종 사용자가 입력(텍스트, 음성 또는 전화 키 누르기)을 입력하면 대화형 에이전트(Dialogflow CX)는 입력을 인텐트 학습 문구를 비교하여 가장 일치하는 항목을 찾습니다. 이 프로세스를 인텐트 일치라고 합니다. 인텐트 일치는 범위의 인텐트 경로(인텐트 요구 사항이 있는 상태 핸들러)와 연결된 인텐트에만 발생할 수 있습니다.
키 누르기 입력은 DTMF 패턴에 따라 일치됩니다. 하지만 텍스트와 일치하는 인텐트를 검색할 때 대화형 에이전트(Dialogflow CX)는 신뢰도 점수라고도 하는 인텐트 감지 신뢰도로 일치 가능성을 점수로 계산합니다. 이 값의 범위는 0.0(완전히 불확실함)부터 1.0(완전히 확실함)까지입니다. 인텐트를 평가하면 다음 두 가지 결과가 발생할 수 있습니다.
- 최고점 인텐트의 신뢰도 점수가 분류 기준점 설정보다 크거나 같으면 일치로 반환됩니다.
- 기준점을 충족하는 인텐트가 없으면 일치하지 않는 이벤트가 호출됩니다.
학습 문구
학습 문구는 최종 사용자가 입력하거나 말할 수 있는 예시 문구로, 최종 사용자 입력이라고 합니다. 인텐트마다 다수의 학습 문구를 만듭니다. 최종 사용자 입력이 이러한 문구 중 하나와 유사하면 대화형 에이전트(Dialogflow CX)는 인텐트를 일치시킵니다.
예를 들어 'I want pizza'와 같은 학습 문구는 'Get a pizza' 또는 'Order pizza'와 같은 유사한 최종 사용자 입력을 인식하도록 에이전트를 학습시킵니다.
대화형 에이전트(Dialogflow CX)의 기본 제공 머신러닝에서 유사한 다른 문구들로 목록을 확장하므로 모든 예시를 하나하나 정의할 필요는 없습니다. 에이전트가 다양한 최종 사용자 입력을 인식할 수 있도록 인텐트의 복잡성에 따라 10~20개의 학습 문구를 만들어야 합니다. 예를 들어 인텐트가 최종 사용자의 좋아하는 색상에 대한 입력을 인식하도록 하려면 다음과 같은 학습 문구를 정의할 수 있습니다.
- 'I like red'
- 'My favorite color is yellow'
- 'black'
- 'Blue is my favorite'
- ...
학습 문구 주석 처리
학습 문구의 일부를 주석 처리하고 관련 매개변수를 구성하여 최종 사용자 데이터가 추출되는 방식을 제어합니다.
예를 들어 'What is the forecast tomorrow for Tokyo?'와 같은 학습 문구를 가정해 보겠습니다.
'tomorrow를 date
매개변수로, 'Tokyo'를 location
매개변수로 주석 처리해야 합니다.
학습 문구의 일부에 주석을 작성하면 대화형 에이전트(Dialogflow CX)는 이러한 부분이 런타임에 최종 사용자가 제공하는 실제 값의 예시일 뿐임을 인식합니다.
'What is the forecast on Friday for Sydney?(금요일 시드니 날씨는 어때?)'와 같은 최종 사용자 입력의 경우
대화형 에이전트(Dialogflow CX)는 'Friday'에서 date
매개변수를, 'Sydney'에서 location
매개변수를 추출합니다.
매개변수로 추출하려는 모든 학습 문구 부분을 주석 처리해야 합니다. 그렇지 않으면 Dialogflow에서 값을 추출하지 않습니다.
콘솔을 사용하여 에이전트를 빌드할 때는 기존 개체 유형과 일치시킬 수 있는 부분이 포함된 학습 문구를 추가하면 대부분의 주석이 자동으로 생성됩니다. 이러한 부분은 콘솔에서 강조표시됩니다. 필요에 따라 이러한 주석과 매개변수를 수정할 수 있습니다.
콘솔을 사용하여 학습 문구를 수동으로 주석 처리하려면 다음 안내를 따르세요.
- 학습 문구에서 주석 처리할 부분을 선택합니다.
- 목록에서 원하는 개체 유형을 선택합니다.
- 아래의 매개변수 표에서 매개변수가 생성됩니다.
API를 사용하여 에이전트를 만들 때는 학습 문구 일부를 수동으로 주석 처리해야 합니다.
Intent
유형에 사용되는 TrainingPhrase
유형을 참조하세요.
인텐트 참조의 프로토콜 및 버전 선택:
프로토콜 | V3 | V3beta1 |
---|---|---|
REST | 인텐트 리소스 | 인텐트 리소스 |
RPC | 인텐트 인터페이스 | 인텐트 인터페이스 |
C++ | IntentsClient | 해당 사항 없음 |
C# | IntentsClient | 해당 사항 없음 |
Go | IntentsClient | 해당 사항 없음 |
자바 | IntentsClient | IntentsClient |
Node.js | IntentsClient | IntentsClient |
PHP | 없음 | 해당 사항 없음 |
Python | IntentsClient | IntentsClient |
Ruby | 없음 | 해당 사항 없음 |
학습 문구로 생성된 암시적 개체
대부분의 커스텀 개체는 개체 유형을 만들고 개체 항목을 추가해서 명시적으로 정의됩니다. 하지만 커스텀 개체에는 암시적 값도 포함될 수 있습니다. 이러한 경우는 학습 문구 텍스트를 주석으로 만들어서 주석 처리된 텍스트가 선택한 개체 유형으로 정의된 값이 아닐 때 발생합니다. 주석 처리된 텍스트는 암시적으로 추가된 개체 항목에 대한 개체 참조 값이 됩니다. 개체 유형이 맵 개체인 경우에는 또한 텍스트가 개체 항목의 동의어가 됩니다.
기본 시작 인텐트
에이전트를 만들면 기본 시작 인텐트가 생성됩니다. 일부 언어에서 인텐트에는 초기 최종 사용자 입력과 일치시키기 위한 '안녕' 또는 '안녕하세요'와 같은 간단한 학습 문구가 있습니다. 이 인텐트를 원하는 대로 수정할 수 있습니다.
API를 사용할 때는 다음 인텐트 ID로 이 인텐트를 참조할 수 있습니다.
00000000-0000-0000-0000-000000000000
에이전트가 대화를 시작하면 개발자는 API를 사용하여 이 인텐트를 트리거할 수 있습니다.
detectIntent
또는 streamingDetectIntent
메서드를 호출할 때 QueryInput.intent.intent
필드의 projects/<PROJECT_ID>/locations/<LOCATION_ID>/agents/<AGENT_ID>/intents/00000000-0000-0000-0000-000000000000
값을 사용합니다.
기본 제외 인텐트
에이전트를 만들면 기본 제외 인텐트가 생성됩니다. 이 인텐트에 대한 제외 예시로 역할을 하는 학습 문구를 추가할 수 있습니다. 최종 사용자 입력의 경우 일반 인텐트의 학습 문구와 약간의 유사성이 있지만 이러한 입력을 일반 인텐트와 일치시키고 싶지 않은 경우가 있습니다.
예를 들어 객실 예약 담당자의 경우 'I'd like to book a room'과 같은 학습 문구가 있을 수 있습니다. 그런데 최종 사용자가 방에 대한 책을 구매하기를 원하면 'I'd like to buy a book about rooms.'라고 말할 수 있습니다. 최종 사용자 입력이 인텐트와 매칭되지 않게 하려면 해당 문구를 제외 예시로 추가하면 됩니다.
또한 에이전트의 범위를 벗어나는 문구들을 추가하여 인텐트와 일치하지 않도록 해야 합니다. 하지만 이러한 문구를 너무 많이 추가하지는 마세요. 예를 들어 기본 인텐트 문구 10,000개를 정의하면 일반 인텐트 일치에 부정적인 영향을 줍니다.
이러한 문구 중 일부는 원래부터 에이전트 범위를 벗어났을 수 있지만 이후에 인텐트에 추가되었기 때문에 문구를 정기적으로 검토해야 합니다.
기본 부정적 인텐트는 모든 인텐트 매칭에 영향을 줍니다. 여기에 추가하는 문구는 한 인텐트에 대해 이점이 일치할 수 있지만 다른 인텐트에 대해서는 피해가 일치할 수 있습니다. 예를 들어 해외 이동 인텐트와 일치하는 것을 방지하기 위해 기본 부정적 인텐트에 '해외 통화'를 추가할 수 있습니다. 하지만 이렇게 하면 이 구문이 해외 통화 인텐트와 일치하는 것도 방지됩니다.
API를 사용할 때는 다음 인텐트 ID로 이 인텐트를 참조할 수 있습니다.
00000000-0000-0000-0000-000000000001
취소 인텐트
대화 중 최종 사용자는 현재 대화 주제를 취소하길 원할 수 있습니다. 예를 들어 현재 활성 페이지에서 새 약속의 날짜를 요청하고 있지만 최종 사용자가 새 약속을 만들지 않기로 결정할 수 있습니다. 최종 사용자가 '취소' 또는 '새 약속을 만들지 않습니다'와 같이 말할 수 있습니다. 이러한 상황을 처리하기 위해 에이전트에 대해 하나 이상의 취소 인텐트를 만들 수 있습니다. 이러한 취소 인텐트는 원하는 대로 이름을 지정할 수 있지만 이름에 'cancel'을 포함하는 것이 일반적입니다. 이러한 취소 인텐트는 대화 중 관련 포인트에서 범위 내에 있는 인텐트 경로와 연결해야 합니다. 이러한 인텐트 경로는 취소 처리를 위해 적절한 페이지로 전환됩니다.
취소 인텐트의 학습 문구는 일반 및 주제별 취소 시도를 모두 처리해야 합니다. 예를 들면 다음과 같습니다.
- 취소
- 중지
- 취소
- 취소
- 돌아가기
- 뒤로
- 새 약속을 원하지 않음
- 새 예약 취소
- 새 예약 삭제
인텐트 만들기
인텐트를 만들려면 다음 안내를 따르세요.
콘솔
- Dialogflow CX 콘솔을 엽니다.
- Google Cloud 프로젝트를 선택합니다.
- 에이전트를 선택합니다.
- 관리 탭을 선택합니다.
- 인텐트를 클릭합니다.
- 만들기를 클릭합니다.
- 인텐트 데이터를 입력합니다.
- 저장을 클릭합니다.
API
Intent
유형은 create
메서드를 참조하세요.
인텐트 참조의 프로토콜 및 버전 선택:
프로토콜 | V3 | V3beta1 |
---|---|---|
REST | 인텐트 리소스 | 인텐트 리소스 |
RPC | 인텐트 인터페이스 | 인텐트 인터페이스 |
C++ | IntentsClient | 해당 사항 없음 |
C# | IntentsClient | 해당 사항 없음 |
Go | IntentsClient | 해당 사항 없음 |
자바 | IntentsClient | IntentsClient |
Node.js | IntentsClient | IntentsClient |
PHP | 없음 | 해당 사항 없음 |
Python | IntentsClient | IntentsClient |
Ruby | 없음 | 해당 사항 없음 |
인텐트 삭제
인텐트를 삭제하려면 다음 안내를 따르세요.
콘솔
- Dialogflow CX 콘솔을 엽니다.
- Google Cloud 프로젝트를 선택합니다.
- 에이전트를 선택합니다.
- 관리 탭을 선택합니다.
- 인텐트를 클릭합니다.
- 삭제하려는 인텐트 위로 마우스를 가져갑니다.
- 삭제 delete 버튼을 클릭합니다.
API
Intent
유형은 delete
메서드를 참조하세요.
인텐트 참조의 프로토콜 및 버전 선택:
프로토콜 | V3 | V3beta1 |
---|---|---|
REST | 인텐트 리소스 | 인텐트 리소스 |
RPC | 인텐트 인터페이스 | 인텐트 인터페이스 |
C++ | IntentsClient | 해당 사항 없음 |
C# | IntentsClient | 해당 사항 없음 |
Go | IntentsClient | 해당 사항 없음 |
자바 | IntentsClient | IntentsClient |
Node.js | IntentsClient | IntentsClient |
PHP | 없음 | 해당 사항 없음 |
Python | IntentsClient | IntentsClient |
Ruby | 없음 | 해당 사항 없음 |
인텐트 데이터 액세스
인텐트 데이터에 액세스하려면 다음 안내를 따르세요.
콘솔
- Dialogflow CX 콘솔을 엽니다.
- Google Cloud 프로젝트를 선택합니다.
- 에이전트를 선택합니다.
- 관리 탭을 선택합니다.
- 인텐트를 클릭합니다.
- 액세스하려는 인텐트를 클릭합니다.
- 인텐트 데이터를 보거나 업데이트합니다.
- 저장을 클릭하여 변경사항을 저장합니다.
API
Intent
유형은 get
및 patch/update
메서드를 참조하세요.
인텐트 참조의 프로토콜 및 버전 선택:
프로토콜 | V3 | V3beta1 |
---|---|---|
REST | 인텐트 리소스 | 인텐트 리소스 |
RPC | 인텐트 인터페이스 | 인텐트 인터페이스 |
C++ | IntentsClient | 해당 사항 없음 |
C# | IntentsClient | 해당 사항 없음 |
Go | IntentsClient | 해당 사항 없음 |
자바 | IntentsClient | IntentsClient |
Node.js | IntentsClient | IntentsClient |
PHP | 없음 | 해당 사항 없음 |
Python | IntentsClient | IntentsClient |
Ruby | 없음 | 해당 사항 없음 |
인텐트 추천
Dialogflow는 대화 중에 발생한 일치하지 않는 항목을 자동으로 분석하고 새 인텐트를 제안하거나 기존 인텐트에 추가 학습 문구를 추천할 수 있습니다. 이러한 제안을 수락하면 향후 일치 항목이 없는 것을 방지할 수 있습니다.
제안을 사용할 때는 클러스터 크기를 조정할 수 있습니다. 클러스터 크기가 작을수록 인텐트당 학습 문구 수가 적은 인텐트가 많아집니다. 클러스터 크기가 클수록 인텐트당 학습 문구가 더 많은 인텐트가 줄어듭니다.
인텐트 제안을 수락하려면 다음 안내를 따르세요.
콘솔
- Dialogflow CX 콘솔을 엽니다.
- Google Cloud 프로젝트를 선택합니다.
- 에이전트를 선택합니다.
- 관리 탭을 선택합니다.
- 인텐트를 클릭합니다.
- 추천 탭을 클릭합니다.
- 원하는 경우 클러스터 크기를 조정합니다.
- 제안을 선택합니다.
- 원하는 학습 문구를 선택합니다.
- 대상 인텐트의 경우 기존 인텐트나 새 인텐트에 학습 문구를 추가합니다.
- 저장 또는 새로 만들기를 클릭하여 변경사항을 저장합니다. 인텐트 추천을 수락하면 인텐트는 추천 목록에 유지됩니다.
인텐트 분할
콘솔을 사용하여 인텐트 하나를 인텐트 두 개로 분할할 수 있습니다. 인터페이스를 사용하면 소스 인텐트에서 학습 문구를 선택하여 새 인텐트로 이동할 수 있습니다.
콘솔
- Dialogflow CX 콘솔을 엽니다.
- 프로젝트를 선택합니다.
- 에이전트를 선택합니다.
- 관리 탭을 선택합니다.
- 인텐트를 클릭합니다.
- 분할할 인텐트를 선택합니다.
- 분할을 클릭합니다.
- 소스 인텐트에서 인텐트를 선택합니다.
- 오른쪽으로 이동을 클릭합니다.
- 대상 인텐트에 대한 다른 세부정보를 제공합니다.
- 분할을 클릭합니다.
인텐트 비교 및 병합
콘솔을 사용하여 인텐트 두 개를 단일 인텐트와 비교하거나 병합할 수 있습니다.
콘솔
- Dialogflow CX 콘솔을 엽니다.
- 프로젝트를 선택합니다.
- 에이전트를 선택합니다.
- 관리 탭을 선택합니다.
- 인텐트를 클릭합니다.
- 비교하거나 병합할 인텐트 두 개를 선택합니다.
- 비교를 클릭합니다.
- 비교할 수 있도록 학습 문구가 나란히 표시됩니다.
- 인텐트 두 개를 병합하려면 병합을 클릭합니다.
인텐트 내보내기 및 가져오기
인텐트를 내보내고 가져와 에이전트 간에 공유할 수 있습니다.
내보내기 형식 옵션 중 하나는 다음 열이 있는 CSV입니다.
- 인텐트 표시 이름
- 언어
- 구문
각 항목에는 표시 이름, 언어, 첫 번째 학습 문구 또는 이전에 선언된 인텐트의 학습 문구가 포함됩니다. Dialogflow는 내보낸 학습 문구의 주석을 인코딩하므로 가져올 때 주석이 복원됩니다. 이 인코딩의 형식은 다음과 같습니다.
(annotated part)[entity, parameter]
예를 들면 다음과 같습니다.
Intent Display Name,Language,Phrase
Shirt Selection,en,I want a (green)[@sys.color, color] shirt
,,I would like a (yellow)[@sys.color, color] shirt
Store Hours,en,When are you open?
,,What are your hours?
인텐트를 가져올 때 기존 에이전트의 인텐트 표시 이름이 가져온 인텐트의 표시 이름과 일치하면 병합 충돌이 발생할 수 있습니다. 다음 중 하나를 선택하여 인텐트 표시 이름이 일치할 때 병합 동작을 제어할 수 있습니다.
- 기존 인텐트 교체: 가져온 인텐트가 기존 에이전트에서 이름이 같은 인텐트를 덮어씁니다.
- 이름 바꾸기 및 새 인텐트로 가져오기: 표시 이름에 '_1'을 추가하여 가져온 인텐트의 이름을 변경합니다.
- 기존 인텐트와 병합: 가져온 인텐트의 학습 문구가 기존 인텐트에 추가됩니다. 동일한 학습 문구가 있는 경우 중복되지 않습니다.
- 원본 인텐트 유지: 기존 인텐트는 변경되지 않으며 충돌하는 인텐트는 무시됩니다. 충돌하지 않는 인텐트를 가져옵니다.
인텐트를 내보내려면 다음 안내를 따르세요.
콘솔
- Dialogflow CX 콘솔을 엽니다.
- Google Cloud 프로젝트를 선택합니다.
- 에이전트를 선택합니다.
- 관리 탭을 선택합니다.
- 인텐트를 클릭합니다.
- 내보내려는 각 인텐트를 선택합니다.
- 선택한 인텐트 내보내기를 클릭합니다.
- 원하는 형식과 대상을 선택합니다.
- 제출을 클릭합니다.
인텐트를 가져오려면 다음 안내를 따르세요.
콘솔
- Dialogflow CX 콘솔을 엽니다.
- Google Cloud 프로젝트를 선택합니다.
- 에이전트를 선택합니다.
- 관리 탭을 선택합니다.
- 인텐트를 클릭합니다.
- 가져오기를 클릭합니다.
- 소스를 선택합니다.
- 충돌하면 병합 동작을 선택할 수 있는 대화상자 창이 표시됩니다.
- 제출을 클릭합니다.
학습 문구 내보내기 및 가져오기
기존 인텐트의 학습 문구를 내보내고 가져올 수 있습니다.
가져올 파일 형식은 열 제목이 없는 단일 열의 CSV입니다. 예를 들면 다음과 같습니다.
"I want a pony"
"I need a pony"
"I must have a pony"
학습 문구를 가져올 때 다음 가져오기 모드 중 하나를 선택할 수 있습니다.
- 새 학습 문구로 가져오기: 파일의 문구가 기존 문구 목록에 추가됩니다.
- 기존 학습 문구 바꾸기: 기존 학습 문구가 삭제되고 파일의 학습 문구가 추가됩니다.
기본적으로 가져온 학습 문구는 자동으로 주석 처리됩니다. 자동 주석 건너뛰기를 선택하여 이 동작을 중지할 수 있습니다.
인텐트의 학습 문구를 내보내려면 다음 안내를 따르세요.
콘솔
- Dialogflow CX 콘솔을 엽니다.
- Google Cloud 프로젝트를 선택합니다.
- 에이전트를 선택합니다.
- 관리 탭을 선택합니다.
- 인텐트를 클릭합니다.
- 인텐트를 선택합니다.
- 학습 문구 섹션까지 아래로 스크롤합니다.
- 내보낼 학습 문구를 선택합니다.
- 내보내기를 클릭합니다.
인텐트의 학습 문구를 가져오려면 다음 안내를 따르세요.
콘솔
- Dialogflow CX 콘솔을 엽니다.
- Google Cloud 프로젝트를 선택합니다.
- 에이전트를 선택합니다.
- 관리 탭을 선택합니다.
- 인텐트를 클릭합니다.
- 인텐트를 선택합니다.
- 학습 문구 섹션까지 아래로 스크롤합니다.
- 원하는 경우 자동 주석 건너뛰기를 선택합니다.
- 학습 문구 목록 바로 위에 있는 가져오기 버튼을 클릭합니다.
- 파일 및 가져오기 모드를 선택합니다.
- 제출을 클릭합니다.
헤드 및 보조 인텐트
에이전트를 설계할 때는 인텐트를 헤드 인텐트 또는 보조 인텐트와 같이 생각하는 것이 유용할 수 있습니다.
헤드 인텐트는 에이전트와의 상호작용하기 위한 최종 사용자의 기본 목적을 식별합니다. 보조 인텐트는 헤드 인텐트와 관련된 최종 사용자의 후속 질문을 식별합니다. 이러한 후속 질문은 최종 사용자의 요구에 맞는 추가 컨텍스트를 제공하거나, 최종 사용자가 특정 항목을 분류하거나 더 잘 이해하는 데 도움이 되는 향후 질문일 수 있습니다.
헤드 인텐트는 일반적으로 대화에서 일치하는 첫 번째 인텐트 중 하나이며 최종 사용자 질문은 보조 인텐트와 일치합니다. 예를 들면 다음과 같습니다.
대화 | 설명 |
---|---|
최종 사용자: 새 통화 활성화 에이전트: 물론 제가 도와 드릴 수 있습니다. 활성화하려는 전화 번호의 마지막 4자리 숫자가 무엇인가요? |
헤드 인텐트 일치 |
최종 사용자: 1234 에이전트: 이제 휴대전화를 활성화할 준비가 되었습니까? |
매개변수가 설정됨 |
최종 사용자: 내 모든 메시지가 새 휴대전화로 전송되나요? 에이전트: ... |
보조 인텐트 일치 |