대화 상자가 처리되는 방법
대화는 사용자 입력에서 식별되는 인텐트와 애플리케이션의 컨텍스트를 사용하여 사용자와 상호작용하고 궁극적으로 유용한 응답을 제공합니다.
대화 상자는 응답(봇이 뒤에 표시하는 내용)에 의사(사용자가 수행하려는 내용)를 일치시킵니다. 응답은 순서 배치와 같은 명령의 실행 또는 What are your store hours? 같은 질문에 대한 응답일 수 있습니다. 인텐트와 엔티티가 올바른 응답을 식별하기에 충분한 정보가 될 수도 있고, 대화가 올바르게 응답하는 데 필요한 추가 입력을 사용자에게 요청할 수도 있습니다. 예를 들어, 사용자가 Where can I get some food?라고
질문하는 경우, 식당을 갈지 아니면 식료품점을 갈지, 먹고 갈지 아니면 포장해 갈지 등을 명확하게 하길 원할 수 있습니다. 텍스트 응답에서 세부사항을 질문하고 하나 이상의 하위 노드를 작성하여 새 입력을 처리할 수 있습니다.
대화는 그래픽으로 watsonx Assistant에 트리로 표시됩니다. 분기를 작성하여 대화에서 다룰 각 인텐트를 처리하십시오. 분기는 여러 노드로 구성됩니다.
대화 상자 노드
각 대화 노드에는 최소한 조건과 응답이 포함됩니다.
입니다. 또한 이미지 또는 옵션 목록을 표시하거나 프로그래밍 방식의 조치를 트리거하도록 응답을 구성할 수 있습니다. 자세한 정보는 응답 을 참조하십시오.
노드가 if/then 구현/구축(Construction)을 가진 것으로 간주할 수 있습니다. 이 조건이 true이면 이 응답을 리턴합니다.
예를 들어, 어시스턴트의 자연어 처리 기능이 사용자 입력에 #cupcake-menu 인텐트가 포함되어 있다고 판별하는 경우 다음 노드가 트리거됩니다. 노드가 트리거되면 어시스턴트가 적절하게 응답합니다.
하나의 조건과 응답이 있는 단일 노드는 단순 사용자 요청을 처리할 수 있습니다. 하지만 대개 사용자는 복잡한 질문을 하거나 복잡한 태스크에 대한 도움을 원합니다. 사용자에게 어시스턴트에 필요한 추가 정보를 제공하도록 요청하는 하위 노드를 추가할 수 있습니다.
대화 상자 플로우
어시스턴트는 사용자가 작성한 대화를 트리의 첫 번째 노드에서 마지막으로 처리합니다.
트리에서 아래로 이동하면서 어시스턴트가 충족되는 조건을 찾으면 해당 노드를 트리거합니다. 그런 다음 하위 노드 조건에 대한 사용자 입력을 검사하는 트리거 노드를 따라 이동합니다. 하위 노드를 확인하면 첫 번째 하위 노드에서 마지막 하위 노드로 다시 이동합니다.
어시스턴트는 대화 트리의 첫 번째 노드에서 마지막 노드까지, 트리거된 각 노드를 따라, 첫 번째에서 마지막 하위 노드까지, 트리거된 각 하위 노드를 따라 분기 트리의 마지막 노드에 도달할 때까지 계속 진행됩니다.
대화를 빌드하기 시작할 때, 포함할 분기 및 위치를 판별해야 합니다. 분기의 순서는 노드가 처음부터 마지막까지 평가되기 때문에 중요합니다. 조건이 입력과 일치하는 첫 번째 루트 노드가 사용됩니다. 트리에서 나중에 오는 노드는 트리거되지 않습니다.
어시스턴트가 분기의 끝에 도달하거나 평가 중인 현재 하위 노드 세트에서 true로 평가되는 조건을 찾을 수 없으면 트리 기본으로 다시 이동합니다. 어시스턴트가 처음부터 마지막까지 루트 노드를 처리합니다. 조건 중 하나라도 true로 평가되지 않으면 일반적으로 항상 true로 평가되는 특별한 anything_else 조건을 갖는 트리의 마지막 노드에서 응답이 리턴됩니다.
다음과 같은 방법으로 First-To-Last 플로우를 중단시킬 수 있습니다.
-
노드가 처리된 후 발생하는 것을 사용자 정의. 예를 들어, 다른 노드가 트리에서 앞의 위치에 있더라도 노드가 처리된 후 다른 노드로 직접 점프하도록 노드를 구성할 수 있습니다. 자세한 정보는 다음에 수행할 작업 정의 를 참조하십시오.
-
조건부 응답을 구성하여 다른 노드로 점프. 자세한 정보는 조건부 응답 을 참조하십시오.
-
대화 노드에 대한 다이그레션(digression) 설정 구성. 다이그레션(digression)은 실행 중에 노드를 이동하는 방법에도 영향을 미칠 수 있습니다. 대부분의 노드로부터 다이그레션(digression)을 사용으로 설정하고 돌아가기를 구성하는 경우, 사용자는 한 노드에서 다른 노드로 점프하고 쉽게 다시 돌아갈 수 있습니다. 자세한 정보는 다이그레션(Digressions) 을 참조하십시오.
샘플 대화
이 다이어그램은 그래픽 사용자 인터페이스 대화 편집기로 빌드된 대화 트리의 모형을 표시합니다.
이 다이어그램에 있는 대화 트리는 두 개의 루트 대화 노드를 포함합니다. 일반적인 대화 트리에는 더 많은 노드가 있을 수 있지만 이 설명에서는 노드의 서브세트 모양을 한 눈에 살펴볼 수 있습니다.
-
첫 번째 루트 노드는 인텐트 값을 조건으로 합니다. 이 노드에는 각각 엔티티 값을 조건으로 하는 두 개의 하위 노드가 있습니다. 두 번째 하위 노드는 두 개의 응답을 정의합니다. 컨텍스트 변수의 값이 조건에 지정된 값과 일치하는 경우 첫 번째 응답이 사용자에게 리턴됩니다. 그렇지 않으면 두 번째 응답이 리턴됩니다.
이 표준 유형의 노드는 특정 주제에 대한 질문을 캡처한 후 루트 응답에서 하위 노드가 처리하는 후속 질문을 묻는 데 유용합니다. 예를 들어, 할인에 대한 사용자 질문을 인식하고 사용자가 회사에 특수 할인 약정이 있는 단체의 구성원인지 여부에 대한 후속 질문을 할 수 있습니다. 또한 하위 노드가 단체 멤버십과 관련된 질문에 대한 사용자의 답변을 기반으로 다른 응답을 제공합니다.
-
두 번째 루트 노드는 슬롯이 있는 노드입니다. 이 노드도 인텐트 값을 조건으로 합니다. 사용자로부터 수집할 각 정보 부분마다 하나씩, 슬롯 세트를 정의합니다. 각 슬롯은 사용자로부터 답변을 도출하기 위해 질문합니다. 프롬프트에 대한 사용자의 응답에서 특정 엔티티 값을 찾은 후 해당 값을 슬롯 컨텍스트 변수에 저장합니다.
이 유형의 노드는 사용자 대신 트랜잭션을 수행해야 하는 세부사항을 수집하는 데 유용합니다. 예를 들어, 사용자의 목적이 항공권을 예약하는 것이면 슬롯이 출발지 및 도착지 정보, 여행 날짜 등을 수집할 수 있습니다.