Copilot Studio에서 에이전트 대화의 큰 부분은 자연 언어 이해이며, 이는 AI가 사용자의 의도를 이해할 수 있는 능력입니다. 예를 들어 고객이 "기프트 카드를 사용하려고 했지만 작동하지 않습니다"라고 말합니다. 에이전트는 정확한 구문이 트리거 구문으로 나열되지 않은 경우에도 작동하지 않는 기프트 카드와 관련된 토픽으로 고객을 라우팅해야 한다는 것을 알고 있습니다.
자연어 이해의 기본 요소 중 하나는 사용자 대화에서 엔터티를 식별하는 것입니다.
엔터티는 특정 유형의 실제 주제를 나타내는 정보 단위로 생각할 수 있습니다. 예를 들어 전화 번호, 우편 번호, 도시 또는 사람의 이름이 있습니다. 에이전트는 엔터티가 제공한 지식을 통해 사용자 입력에서 관련 정보를 지능적으로 인식하고 나중에 사용하기 위해 저장할 수 있습니다.
사전 빌드된 엔터티
에이전트의 엔터티를 통해 유사한 그룹에 정보를 저장할 수 있습니다.
Copilot Studio는 나이, 색, 숫자 및 이름과 같은 실제 대화 상자에서 가장 일반적으로 사용되는 정보 유형을 나타내는 미리 빌드된 엔터티 집합을 지원합니다.
엔터티에서 부여한 지식을 통해 에이전트는 사용자 입력에서 관련 정보를 스마트하게 인식하고 나중에 사용할 수 있는 정보를 저장할 수 있습니다.
이러한 개념을 이해하기 위해 Money 엔터티를 예로 들어 보겠습니다.
Copilot Studio에서 에이전트를 열고 페이지 상단에서 설정을 선택한 다음 메뉴에서 엔터티를 선택합니다.
사용 가능한 모든 엔터티 목록이 나타납니다.
Money 엔터티를 선택하세요. 엔터티에 대한 세부 정보 패널이 열립니다.
여기에서는 이 엔터티에 대한 설명과 사용자 입력에서 돈이나 통화와 관련된 정보를 추출하는 데 사용할 수 있는 방법을 볼 수 있습니다.
예를 들어, 사용자가 "1000달러 금액"을 입력할 때 에이전트는 이 금액 엔터티를 사용하여 "1000달러"가 금액 유형의 정보를 나타냄을 압니다. 에이전트가 이 정보를 추출하여 변수에 저장할 때, 주변 정보가 텍스트였음에도 불구하고 "1000"을 숫자로 저장합니다.
사용자 지정 엔터티
사전 빌드된 엔터티는 일반적으로 사용되는 정보 유형을 다룹니다. 특정 용도로 사용되는 에이전트를 빌드할 때와 같이 경우에 따라 에이전트의 언어 이해 모델 도메인별 지식을 가르쳐야 할 수 있습니다.
예를 들어 아웃도어 상점을 위한 에이전트를 만들고 싶다고 가정해 봅시다. 이 경우 에이전트에게 대화에서 "아웃도어 장비 제품" 범주를 인식하도록 가르쳐야 합니다.
먼저 사용자 지정 엔터티를 만듭니다. 이 경우 에이전트에게 모든 아웃도어 제품 범주에 대한 지식을 제공하는 엔터티를 만들 수 있습니다.
에이전트의 설정 페이지로 이동하여 엔터티를 선택합니다.
엔터티 추가>새 엔터티를 선택합니다.
닫힌 목록 엔터티 또는 정규식(regex) 엔터티 중에서 원하는 엔터티 유형을 선택합니다
비공개 목록 엔터티
비공개 목록 엔터티를 사용하면 항목 목록을 정의할 수 있습니다. 이러한 엔터티는 관리하기 쉽고 간단한 항목 레이블이 있는 작은 목록에 가장 적합합니다.
엔터티 만들기에서 닫힌 목록을 선택합니다.
패널이 열리면 새 엔터티의 이름(예: 캠핑 활동)을 입력합니다
원하는 경우 설명을 추가합니다.
목록 항목에서 이 엔터티와 연결할 값을 입력합니다. 예: 하이킹 및 요가.
또는 이 엔터티에 추가하려는 모든 원하는 값을 나열하는 파일을 업로드할 수 있습니다.
항목을 입력할 때 다음을 수행할 수 있습니다.
- 항목을 선택하고 이름을 변경합니다.
- 항목을 삭제하려면 휴지통 아이콘을 선택합니다.
- 동의어(또는 이미 추가된 경우 나열된 동의어 선택)를 선택하여 동의어 편집 패널을 엽니다.
목록에 있는 각 값에 대한 일치 논리를 확장하기 위해 동의어를 추가할 수 있습니다. 예를 들어, 하이킹에 트레킹과 등산을 동의어로 추가할 수 있습니다.
원하는 경우 이 엔터티에 대해 스마트 일치를 켭니다.
스마트 매칭은 에이전트의 언어 이해 모델이 지원하는 인텔리전스의 일부입니다. 스마트 일치가 활성화되면 에이전트는 엔터티에 나열된 값을 기준으로 퍼지 논리를 사용하여 사용자 입력을 해석합니다.
특히 에이전트는 맞춤법 오류를 자동으로 수정하고 일치 논리를 의미론적으로 확장할 수 있습니다. 예를 들어 에이전트는 "소프트볼"을 "야구"와 자동으로 일치시킬 수 있습니다.
엔터티 생성이나 편집이 끝나면 저장을 선택합니다. 변경 사항을 취소하려면 닫기를 선택합니다.
폐쇄 목록 엔터티에 대한 값 업로드
닫힌 목록 엔터티에 대한 세부 정보 패널에서 엔터티와 연결된 값 및 동의어 집합을 추가하거나 바꿀 수 있습니다.
동의어(있는 경우)를 포함하여 엔터티에 추가하려는 모든 값을 나열하는 텍스트 파일(최대 3MB)을 준비합니다. 한 줄에 하나의 값을 입력하고 동의어의 구분 기호로 파이프(
|
)를 사용합니다. 예:hiking|trekking hiking|mountaineering yoga cycling|bicycling cooking
목록 항목에서 파일 업로드를 선택합니다.
파일 업로드에서 원하는 옵션을 선택합니다.
- 엔터티에 대한 새 값과 동의어를 추가하려면 추가를 선택합니다.
- 모든 기존 값과 동의어를 파일의 목록으로 바꾸려면 Replace를 선택합니다.
파일을 창에 놓습니다. 또는 클릭하여 찾아보기를 선택한 후 파일을 찾아 선택합니다.
표시되는 값과 동의어를 검토하고 추가를 선택합니다.
폐쇄 목록 엔터티에 대한 값 다운로드
닫힌 목록 엔터티에 대한 세부 정보 패널에서 엔터티와 연결된 값 및 동의어 집합을 나열하는 텍스트 파일을 다운로드할 수 있습니다.
목록 항목에서 파일 다운로드를 선택합니다.
결과 텍스트 파일을 저장하거나 텍스트 편집기에서 열어 내용을 검토합니다. 각 엔터티 값은 별도의 줄에 표시됩니다. 값에 동의어가 여러 개 있는 경우 다음과 같이 별도의 줄에 표시됩니다.
hiking|trekking hiking|mountaineering
정규식(regex) 엔터티
정규식(regex) 엔터티를 사용하면 입력에서 정보를 일치시키고 추출하는 데 사용할 수 있는 논리적 패턴을 정의할 수 있습니다. 정규식 엔터티는 사용자 입력에 대한 복잡한 패턴 일치에 적합합니다. 또한 사용자가 대화에서 입력의 서식을 지정하거나 입력하는 방법의 특정 변형을 허용해야 하는 경우에도 유용합니다.
예를 들어, 추적 ID, 라이선스 번호, 신용 카드 번호 또는 IP 주소와 같은 항목을 식별하려면 정규식 엔터티를 사용합니다.
엔터티 만들기에서 정규식(regex)을 선택합니다.
패널이 열리면 새 엔터티의 이름을 입력합니다.
원하는 경우 설명을 추가합니다.
입력에서 엔터티 항목을 일치시키고 추출하는 데 사용해야 하는 정규식 패턴을 입력합니다.
Copilot Studio NLU 및 CLU 언어 이해는 .NET 정규식 구문을 사용합니다. NLU+ 는 JavaScript 정규식 구문을 사용합니다.
기본적으로 패턴 일치는 대소문자를 구분합니다. 대소문자를 구분하지 않게 하려면 패턴 문자열에서
(?i)
정규식 옵션을 사용하십시오. 몇 가지 기본 예제가 regex 엔터티 창에 포함되어 있습니다. 구문에 대한 자세한 내용과 더 많은 예제는 정규식 언어 - 빠른 참조를 참조하세요.여러 패턴을 수용하기 위해 정규식이 필요한 경우 대체 연산자
|
을 사용하여 정규식을 연결할 수 있습니다. 예를 들어 두 개의 정규식 패턴을 결합하여 제품 ID 코드의 이전 형식과 새 형식을 모두 찾을 수 있습니다.엔터티 생성이나 편집이 끝나면 저장을 선택합니다. 변경 사항을 취소하려면 닫기를 선택합니다.
대화에서 엔터티 사용
이제 귀하의 에이전트가 캠핑 활동 엔터티 및 사용자가 만든 기타 맞춤 엔터티를 기반으로 야외 장비에 대한 정보를 알게 됐으므로, 이러한 엔터티를 에이전트 내에서 활용할 수 있습니다.
에이전트에 대한 주제 페이지로 이동합니다.
수집하려는 엔터티에 대한 토픽을 엽니다.
노드 추가 아이콘
을 선택한 다음 질문하기를 선택합니다.
식별 아래에 사용자 지정 엔터티에서 만든 엔터티를 선택하십시오.
선택적으로 단추로 표시할 항목을 선택할 수도 있습니다. 예를 들어 일부 범주를 사용자가 입력으로 편리하게 선택할 수 있는 단추로 표시하려는 경우 사용자에 대한 옵션 선택을 선택한 다음 사용자 지정 엔터티를 만들 때 추가한 항목이 포함된 목록에서 해당 항목을 선택하십시오.
필요한 경우 사용자 응답의 출력 변수를 지정하십시오.
슬롯 채우기
슬롯 채우기는 추출된 엔터티를 개체에 저장하는 것을 의미하는 자연어 이해 개념입니다. Copilot Studio에서 슬롯 채우기는 추출된 엔터티 값을 변수에 배치하는 것을 의미합니다. 미리 빌드된 각 엔터티와 연결된 변수 기본 형식에 대한 자세한 내용은 엔터티를 참조하세요.
테스트 채팅에서 "구매하고 싶습니다"를 입력하면 트리거되는 캠핑 활동 토픽을 예로 들어 보겠습니다.
토픽이 성공적으로 트리거되고 에이전트가 활동 유형을 묻고 질문 노드를 작성할 때 지정된 버튼 선택 항목도 표시됩니다. 토픽 간 추적 옵션을 켜면 대화 상자 트리에 에이전트가 질문 노드로 이동 중이라는 것도 표시됩니다.
사용자는 버튼 중 하나를 선택하여 사전 정의된 선택 사항을 사용할 수 있습니다. 또는 "트레킹"과 같은 단어를 입력할 수 있으며, 해당 단어가 동의어로 정의되었기 때문에 "하이킹"에 매핑되는 것을 볼 수 있습니다.
추적 보기는 대화 상자가 제품 범주 값이 "Hiking"인 경로로 올바르게 라우팅되었음을 보여 줍니다. 작성 캔버스의 맨 아래에 있는 변수 조사식 창에서 변수 값을 검사할 수 있습니다. 조사 식 창에 변수 값이 "하이킹"임이 표시됩니다
기본적으로 추출된 엔터티 "하이킹"을 변수 VarCampType
에 삽입하여 슬롯 채우기가 발생합니다.
사용자가 여러 엔터티에 매핑되는 여러 정보를 지정할 수 있는 "사전 슬롯 채우기"라는 기능을 사용할 수도 있습니다. 에이전트는 어떤 정보가 어떤 엔터티에 속하는지 자동으로 이해할 수 있습니다. 의도한 매핑이 확실하지 않은 경우 선택 사항을 제공하여 사용자에게 보다 구체적으로 묻습니다.
이 예제에서 사용자는 "지루하지만 등산을 좋아한다"고 썼습니다. 이 메시지에는 사용자가 야외 활동에 대한 도움을 원하는 트리거 문구와 하이킹의 동의어인 "등산"이라는 두 번째 정보가 포함됩니다. 이 경우 에이전트는 야외 활동을 선택하기 위한 엔터티와 활동 유형을 모두 채웁니다.
추적 보기는 에이전트가 사용자 입력을 받아들이고 활동 유형을 묻는 질문 노드를 지능적으로 건너뛴다는 것을 보여줍니다.
에이전트는 항상 사용자 입력을 적극적으로 듣고 정보를 미리 기억하여 필요에 따라 불필요한 단계를 건너뛸 수 있습니다.
테스트를 다시 시작하고 다른 사례를 시도해 봅시다. 이 라운드에서는 활동에 할애할 수 있는 시간(기간 엔터티 사용) 및 가격 범위(금액 엔터티 사용)와 같은 사항을 묻는 몇 가지 질문 노드를 추가할 수 있습니다.
이번에는 제품 범주 질문이 제시될 때 에이전트에게 제품 범주만 알려주는 대신 사용자가 "$100로 하이킹 부츠 한 켤레를 사고 싶습니다"라고 말할 수 있습니다. 이 예에서 에이전트는 올바른 하이킹 제품 범주 경로로 라우팅할 수 있을 뿐만 아니라 하이킹 장비 유형 및 목표 가격대 정보를 요청하는 슬롯을 적극적으로 채울 수 있습니다.
사전 슬롯 채우기는 노드 수준에서 수동으로 제어할 수 있습니다. 이전 사용자 응답으로 슬롯이 이미 채워졌는지 여부에 관계없이 특정 노드 내에서 항상 질문을 묻고 싶은 경우, 해당 질문 노드에 대해 질문 건너뛰기 옵션을 비활성화할 수 있습니다. 질문 건너뛰기 옵션을 비활성화하려면 다음 단계를 수행하십시오.
질문 노드의 추가 아이콘(…)을 선택한 다음 속성을 선택합니다. 질문 속성 패널이 나타납니다.
질문 속성 패널에서 질문 동작을 선택합니다.
질문 동작 패널의 질문 건너뛰기에서 매번 묻기를 선택한 다음 페이지 상단에서 저장을 선택하세요.
대화 차례에 여러 엔터티 중 하나를 수락
경우에 따라 에이전트는 지정된 대화 턴에서 여러 개의 유효한 답변 중 하나를 수락할 수 있습니다. 예를 들어 에이전트가 고객에게 계정 번호 또는 전화 번호를 제공하라는 메시지를 표시할 수 있습니다. 에이전트가 고객에게 정보를 가지고 있지 않다고 말할 수 있도록 하고, 고객 서비스 담당자에게 즉시 넘기는 대신 상황에 맞게 고객을 안내하도록 할 수도 있습니다.
질문 노드를 추가합니다.
식별에서 여러 엔터티 중 하나를 선택합니다.
이 노드에서 수락하려는 각 엔터티에 대해 새 엔터티 를 선택하고 원하는 엔터티를 선택합니다. 질문 노드는 최대 5개의 다른 엔터티를 지원할 수 있습니다.
사용자 응답 저장에서 기본 변수 이름을 선택하여 변수 속성 패널을 열고 이름을 의미 있는 이름으로 변경합니다(예: 식별자).
인식된 엔터티 값을 저장하는 변수는 형식 레코드이며, 이 노드에서 지원되는 각 엔터티에 대해 하나의 요소(예: Identifier.account, Identifier.phone, Identifier.unknown)가 있습니다.
고객이 제공한 정보에 따라 대화를 라우팅하는 조건을 추가합니다. 비어 있지 않음 연산자 또는 비어 있음 연산자를 사용하여 조건을 설정하는 것이 좋습니다.
"여러 엔터티 중 하나"에 대한 인식 동작
이 유형의 인식은 대화 턴에서 가능한 엔터티 집합에서 단일 엔터티를 식별하기 위한 것입니다. 고객이 해당 질문 노드에서 식별하도록 구성된 둘 이상의 엔터티가 포함된 문을 입력하면 에이전트는 목록의 첫 번째 엔터티 만 식별합니다. 따라서 이러한 질문 노드를 따르는 질문과 조건부 논리를 적절하게 작성해야 합니다.
예를 들어 질문 노드가 라이브러리 카드 번호, 전화 번호 또는 "알 수 없음" 순서로 다음 중 하나를 인식하도록 구성되어 있다고 가정해 보겠습니다. 고객이 "내 전화 번호가 777 555-1212이고 카드 번호가 123456789"이라고 말하는 경우 인식된 엔터티 값은 해당 질문 노드에서 가능한 엔터티 목록의 첫 번째 엔터티이기 때문에 카드 번호입니다.
에이전트가 질문 노드가 인식하도록 구성된 엔터티를 식별할 수 없는 경우 이 노드에 대해 지정된 다시 프롬프트 동작 을 적용합니다.
제한점
다음은 대화 턴에서 여러 엔터티 중 하나를 수집하도록 구성된 질문 노드의 알려진 제한 사항입니다.
지원은 최대 5개의 엔터티로 제한됩니다.
외부 엔터티에 대한 지원이 없습니다.
지정된 형식의 엔터티 하나만 지원합니다. 예를 들어 한 질문 노드는 Date 형식의 두 엔터티를 인식할 수 없습니다.