대화 상자 라이브러리
적용 대상: SDK v4
대화는 SDK의 핵심 개념으로, 사용자와 장기간 대화를 관리하는 방법을 제공합니다. 대화 상자는 전체 대화 흐름의 일부 또는 전체를 나타낼 수 있는 작업을 수행합니다. 그것은 단지 한 턴 또는 많은 턴에 걸칠 수 있으며, 짧은 시간이나 긴 시간에 걸칠 수 있습니다.
이 문서에서는 대화 상자 라이브러리의 핵심 클래스 및 기능을 설명합니다.
- 봇이 작동하는 방식(
포함)과 상태관리하는 잘 알고 있어야 합니다. - 각 대화 상자는 완료까지 실행하고 수집된 정보를 반환할 수 있는 대화형 작업을 나타냅니다.
- 각 대화 상자는 제어 흐름의 기본 단위를 나타냅니다. 시작, 계속 및 종료할 수 있습니다. 일시 중지 및 다시 시작; 또는 취소할 수 있습니다.
- 대화 상자는 프로그래밍 언어의 메서드 또는 함수와 유사합니다. 대화 상자를 시작할 때 인수 또는 매개 변수를 전달할 수 있으며 대화 상자가 끝나면 나중에 반환 값을 생성할 수 있습니다.
팁
Bot Framework를 사용하여 봇을 개발하거나 새로운 대화형 환경을 만드는 경우, Bot Framework Composer를 시작하는 것이 좋습니다. Composer에서 생성되지 않은 기존 SDK 우선 봇의 경우, 귀하의 봇을 스킬로 노출하고, 향후 봇 개발에는 Composer를 사용하는 것이 좋습니다.
대화 상태
대화 상자는 다중 턴 대화구현할 수 있으므로 턴 간에 지속형 상태 사용합니다. 대화 상자의 상태가 없으면 봇이 대화의 위치 또는 이미 수집한 정보를 알 수 없습니다.
대화의 흐름을 유지하려면 매 턴마다 대화의 상태를 메모리에서 가져와 저장해야 합니다. 이는 봇의 대화 상태에 정의된 대화 상태 속성 접근자를 통해 처리됩니다. 이 대화 상태는 모든 활성 대화 및 활성 대화의 자식들에 대한 정보를 관리합니다. 이렇게 하면 봇이 마지막으로 중단된 지점에서 다시 시작하여 다양한 대화 방식을 처리할 수 있습니다.
런타임 시 대화 상태 속성에는 대화 인스턴스 객체 형태로 내부적으로 수집된 정보를 포함하여, 대화가 논리적 프로세스 어느 위치에 있는지를 나타내는 정보가 포함됩니다. 봇에 입력하고 각 턴마다 메모리에 저장해야 합니다.
대화 인프라
다양한 유형의 대화와 함께 다음 클래스는 대화의 설계 및 제어에 참여합니다. 일반적으로 이러한 클래스와 직접 상호 작용할 필요는 없지만 봇에 대한 대화 상자를 디자인할 때 클래스와 해당 용도를 인식하는 것이 유용합니다.
수업 | 묘사 |
---|---|
대화 상자 모음 | 서로 참조하고 함께 작업할 수 있는 대화 상자 컬렉션을 정의합니다. |
대화 맥락 | 모든 활성 대화 상자에 대한 정보를 포함합니다. |
대화 상자 인스턴스 | 하나의 활성 대화 상자에 대한 정보를 포함합니다. |
대화 상호작용 결과 | 활성 또는 최근에 활성화된 대화 상자의 상태 정보를 포함합니다. 활성 대화 상자가 종료되면, 이곳에 반환 값이 포함됩니다. |
대화 상자 유형
대화 라이브러리는 봇의 대화를 보다 쉽게 관리할 수 있도록 몇 가지 유형의 대화 상자를 제공합니다. 이러한 형식 중 일부는 이 문서의 뒷부분에 자세히 설명되어 있습니다.
유형 | 설명 |
---|---|
대화 | 모든 대화 상자의 기본 클래스입니다. |
컨테이너 대화 상자 | 구성 요소 및 적응형 대화 상자와 같은 모든 컨테이너 대화 상자의 기본 클래스입니다. 내부 대화 집합을 유지 관리하며 대화의 컬렉션을 단위로 처리할 수 있습니다. |
구성 요소 대화 상자 | 전체 집합을 다시 사용할 수 있도록 대화 상자 집합을 캡슐화하는 범용 컨테이너 대화 상자 형식입니다. 구성 요소 대화 상자가 시작되면 컬렉션에서 지정된 대화 상자로 시작합니다. 내부 프로세스가 완료되면 구성 요소 대화 상자가 종료됩니다. |
폭포 대화 상자 | 봇이 선형 프로세스를 통해 사용자를 안내할 수 있도록 일련의 단계를 정의합니다. 일반적으로 구성 요소 대화 상자의 컨텍스트 내에서 작동하도록 설계되었습니다. |
프롬프트 대화 상자 | 사용자에게 입력을 요청하고 결과를 반환합니다. 프롬프트는 유효한 입력을 가져오거나 취소될 때까지 반복됩니다. 폭포 대화와 함께 작동하도록 설계되었습니다. |
적응형 대화 상자 | Composer에서 보다 자연스러운 대화 흐름을 제공하기 위해 사용하는 컨테이너 대화 상자의 한 유형입니다. SDK 우선 봇에서 직접 사용하기 위한 것이 아닙니다. |
작업 대화 상자 | Composer에서 작업 실행을 지원하는 대화 상자의 유형입니다. SDK-우선 봇에서 직접 사용하도록 의도된 것이 아닙니다. |
입력 대화 상자 | 작성기에서 입력 작업의 구현을 지원하는 대화 상자의 형식입니다. SDK 우선 봇에서 직접 사용하도록 의도된 것이 아닙니다. |
기술 대화 상자 | 스킬 소비자로부터 하나 이상의 스킬 봇을 자동으로 관리합니다. Composer는 기술을 행동으로 직접 지원합니다. |
QnA Maker 대화 상자 | QnA Maker 기술 자료에 대한 액세스를 자동화합니다. 이 다이얼로그는 Composer 내에서 작업으로도 작동하도록 설계되었습니다. |
중요하다
적응형 대화 C# SDK 버전 4.9에서 처음 추가되었습니다. 적응형 대화 상자는 Bot Framework Composer 지원하며 SDK 우선 봇에서 직접 사용할 수 없습니다.
다이얼로그 패턴
봇에서 대화 상자를 시작하고 관리하기 위한 두 가지 주요 패턴이 있습니다.
- 보다 자연스럽고 자유로운 대화 기능을 활용하려면 Bot Framework Composer를 사용하여 대화형 대화 상자를 작성하는 것이 좋습니다. 자세한 내용은 Bot Framework Composer소개를 참조하세요. 이러한 봇은 필요한 경우 코드를 사용하여 확장할 수 있습니다.
- SDK 언어 중 하나로 봇을 개발하고 루트 대화 상자의 확장 메서드를 실행합니다. 구성 요소 대화 상자에서 실행 메서드를 사용하는 방법에 대한 자세한 내용은
과(와) 관련한 구성 요소 대화 상자 및 폭포 대화 그리고 순차 대화 흐름을(를) 구현하는 방법을(를) 참조하세요.
다이얼로그 스택
대화 컨텍스트는 모든 활성 대화에 대한 정보를 포함하며 모든 활성 대화에
스택에 직접 액세스하지는 않지만 스택이 존재하고 해당 함수를 이해하면 대화 라이브러리의 다양한 측면이 작동하는 방식을 이해하는 데 도움이 됩니다.
컨테이너 대화 상자
컨테이너 대화 더 큰 대화 집합의 일부일 수 있습니다. 각 컨테이너에는 관리되는 내부 대화 집합도 있습니다.
각 대화 집합은 대화 ID를 해결하기 위한 범위를 만듭니다.
SDK는 현재 구성 요소 대화 상자와 적응형 대화 상자라는 두 가지 유형의 컨테이너 대화 상자를 구현합니다.
두 가지의 개념적 구조는 매우 다릅니다. 그러나 컴포저 봇은 둘 다 사용할 수 있습니다.
대화 상자 ID
대화 집합에 대화 상자를 추가할 때 해당 집합 내에서 고유한 ID를 할당합니다. 집합 내의 대화 상자들은 ID로 서로를 참조하고 있습니다.
한 대화 상자가 런타임에 다른 대화 상자를 참조하는 경우 대화 상자의 ID로 참조합니다. 대화 컨텍스트는 즉시 대화 세트의 다른 대화창을 기반으로 ID를 확인하려고 합니다. 일치하는 항목이 없으면 포함된 대화 집합 또는 외부 대화 집합에서 차례대로 일치 항목을 찾습니다. 일치하는 항목이 없으면 예외 또는 오류가 생성됩니다.
구성 요소 대화 상자
구성 요소 대화 상자는 대화에 시퀀스 모델을 사용하고 컨테이너의 각 대화 상자는 컨테이너의 다른 대화 상자를 호출합니다. 구성 요소 대화 상자의 내부 대화 스택이 비어 있으면 구성 요소가 종료됩니다.
봇에 동적 대화 흐름이 필요하지 않은 비교적 간단한 제어 흐름이 있는 경우 구성 요소 및 폭포 대화 상자를 사용하는 것이 좋습니다.
구성 요소 및 폭포 대화 구성 요소, 폭포 및 프롬프트 대화에 대해 자세히 설명합니다.
기타 대화 상자
QnA Maker 및 기술 대화 상자는 독립 실행형 대화 상자 또는 컨테이너의 대화 컬렉션의 일부로 사용할 수 있습니다.
QnA Maker 대화 상자
메모
Azure AI QnA Maker는2025년 3월 31일에 사용 중지됩니다. 2022년 10월 1일부터 새 QnA Maker 리소스 또는 기술 자료를 만들 수 없습니다. 이제 최신 버전의 질문 및 답변 기능을 Azure AI Language의 일부로 사용할 수 있습니다.
Azure AI Language의 기능인 사용자 지정 질문 답변은 QnA Maker 서비스의 업데이트된 버전입니다. Bot Framework SDK의 질문 및 답변 지원에 대한 자세한 내용은 자연어 이해참조하세요.
QnA Maker 대화 상자는 QnA Maker 기술 자료에 액세스하고 QnA Maker의 후속 프롬프트 및 활성 학습 기능을 지원합니다.
- 다중 턴 프롬프트라고도 하는 후속 프롬프트를 통해 지식 기반에서 질문에 대답하기 전에 사용자에게 추가 정보를 요청할 수 있습니다.
- 활성 학습 제안을 통해 기술 자료는 시간이 지남에 따라 개선될 수 있습니다. QnA Maker 대화 상자는 활성 학습 기능에 대한 명시적 피드백을 지원합니다.
자세한 내용은 다음을 참조하세요.
- QnA Maker란?.
- SDK에서 QnA Maker를 사용하여 질문에 대답하는 방법 .
- Composer에서 QnA Maker 기술 자료를 봇에 추가하는 방법입니다.
스킬 대화 상자
기술 대화 상자는 하나 이상의 기술에 액세스하고 관리합니다. 기술 대화 상자는 부모 봇의 활동을 기술 봇에 게시하고 사용자에게 기술 응답을 반환합니다.
자세한 내용은 다음을 참조하세요.