Google/Dialogflow
Google Dialogflow 챗봇 API 설명
가라밍
2021. 6. 17. 03:29
https://cloud.google.com/dialogflow/es/docs/basics ← 공식 문서를 참고하여 정리함
- DialogFlow를 통해 사용자가 사용하는 자연어를 해석, 처리할 수 있다.
에이전트
- 사용자와의 대화를 처리하는 가상 에이전트
- 자연어 이해 모듈
- 사용자의 텍스트/오디오 → 구조화된 데이터로 변환
인텐트
- 한 번의 대화 차례를 위한 사용자의 의도 분류
- 각 에이전트에 대해 다수의 인텐트 정의
- Dialogflow는 최종 사용자 표현을 에이전트에서 가장 유사한 인텐트와 일치시킴 (인텐트 분류)
ex. '예보는 어때?' → 예보 인텐트와 일치시키기
- 인텐트에 포함되는 사항
- 학습 문구 : 사용자가 말할 가능성 있는 예시 문구
- 작업 : 각 인텐트의 작업 정의 (인텐트 일치 시 Dialogflow가 시스템에 작업 제공)
- 매개변수 : 인텐트 일치 시 최종 사용자 표현에서 추출된 값 제공
- 응답 : 사용자에게 반환할 텍스트, 음성, 시각적 응답 등
- 인텐트 일치 및 최종 사용자 응답에 대한 기본 흐름 :
항목
- 각 인텐트 매개변수에 있는 '개체 유형' → 최종 사용자 표현에서 데이터를 추출하는 방법을 정확하게 지정함
- 사전 정의된 시스템 항목 제공 (ex. 시간, 색상, 이메일 주소 등)
- 커스텀 데이터와 일치시킬 커스텀 항목을 직접 만들 수도 있다.
컨텍스트
- 최종 사용자 표현을 인텐트에 정확하게 일치시키기 위해 제공되어야 함
- 입력 및 출력 컨텍스트를 설정 → 인텐트의 컨텍스트 구성
- 인텐트 일치 → 출력 컨텍스트 활성화
ex. 금융 에이전트에 컨텍스트를 사용하는 예시
- 사용자가 예금 계좌에 대한 정보 요청
- Dialogflow가 최종 사용자 표현을 CheckingInfo 인텐트와 일치시킴 → 해당 인텐트에 checking 출력 컨텍스트가 있으므로 활성화됨
- 에이전트가 사용자에게 예금 계좌에 대해 필요한 정보 유형 요청
- 사용자가 '잔액'이라고 응답
- Dialogfow가 최종 사용자 표현을 CheckingBalance 인텐트와 일치시킴 → 해당 인텐트에 checking 입력 컨텍스트가 있음. 이 컨텍스트가 활성화된 상태여야 이 인텐트와 일치시킬 수 있다.
- 시스템이 필요한 쿼리를 수행 → 에이전트가 예금 잔액 응답
통합을 위한 fulfillment
- 기본적으로 정적 응답에 일치하는 인텐트에 응답함
- 통합 옵션 사용 → 보다 동적인 응답 제공 가능
- fulfillment가 사용 설정된 인텐트와 일치하는 경우 → Dialogflow가 일치된 인텐트에 대한 정보와 함께 웹훅 서비스에 요청을 보냄
- fulfillment 처리 흐름을 나타낸 다이어그램 :
- 사용자가 표현을 입력하거나 말함
- Dialogflow가 최종 사용자 표현을 인텐트와 일치시키고 매개변수 추출
- Dialogflow가 웹훅 서비스에 웹훅 요청 메세지 전달 (일치하는 인텐트, 작업, 매개변수, 인텐트에 정의된 응답에 대한 정보 등 포함)
- 서비스가 필요에 따라 DB 쿼리 또는 외부 API 호출 등의 작업 수행
- 서비스에서 Dialogflow에 웹훅 요청 보냄 (사용자에게 전송되어야 하는 응답 포함)
- Dialogflow가 이 응답을 사용자에게 전달
- 사용자가 응답을 보거나 듣는다.
API와의 사용자 상호작용
- 통합 옵션 중 하나를 사용하지 않는다면 사용자와 직접 상호작용하는 코드를 작성해야한다.
- API와 상호작용하는 경우 처리 흐름을 나타낸 다이어그램 :
- 사용자가 표현을 입력하거나 말함
- 서비스가 최종 사용자 표현을 Dialogflow에 인텐트 탐지 요청 메세지로 전달
- Dialogflow가 서비스에 인텐트 감지 응답 메세지를 보냄 (일치하는 인텐트, 작업, 매개변수, 인텐트에 정의된 응답에 대한 정보 포함)
- 서비스가 필요에 따라 DB 쿼리 또는 외부 API 호출 등 작업 수행
- 서비스가 사용자에게 응답 보냄
- 사용자가 응답을 보거나 듣는다.