M2-5. 엔터티·변수·조건 — 입력을 데이터로 바꾸기
한 줄 요약 — 엔터티는 사용자 입력에서 정보를 뽑고(슬롯 채우기), 변수는 그 값을 대화 중 저장하며, 조건은 Power Fx 수식으로 경로를 분기합니다. 세 요소가 토픽을 “대본”에서 “프로그램”으로 만듭니다.
1. 엔터티 (Entities)
엔터티는 사용자 발화에서 뽑아낼 정보의 단위입니다:
| 종류 | 예 |
|---|---|
| 프리빌트 엔터티 | 날짜·시간, 숫자, 이메일, 전화번호, 불리언(BooleanPrebuiltEntity), 도시 … |
| 커스텀 엔터티 | 닫힌 목록(예: 휴가 종류 = 연차/반차/병가) · 정규식(예: 사번 형식) |
- 커스텀 닫힌 목록은 동의어(synonym) 를 등록해 인식률을 높이고, 스마트 매칭으로 유사 표현을 흡수합니다
- 질문 노드의 Identify 항목에서 엔터티를 지정하면 응답 형식이 강제됩니다
슬롯 채우기(slot filling) — 사용자가 “내일 연차 쓸게요”라고 하면, 질문을 다시 하지 않고 발화에서 날짜(내일)·종류(연차)를 미리 채웁니다. 생성형 오케스트레이션은 부족한 슬롯의 질문도 자동 생성합니다.
2. 변수 (Variables)
| 범위 | 접두사 | 수명 |
|---|---|---|
| 토픽 변수 | Topic. |
해당 토픽 실행 동안 |
| 전역 변수 | Global. |
대화 전체 |
| 시스템 변수 | System. |
대화 메타데이터 (예: System.Conversation.Id) |
| 사용자 변수 | User. |
인증 시 사용자 정보 (User.DisplayName 등, M3-3) |
- 질문 노드의 응답은 자동으로 변수에 저장됩니다
- Set variable value 노드로 직접 설정, 캔버스 상단 변수 패널(watch window) 로 값 추적
- 토픽 입·출력 매개변수로 토픽 간 값 전달 (M2-3)
화면 구성 예시 — 실제 화면·명칭은 버전에 따라 다를 수 있습니다
3. 조건 (Conditions) — Power Fx
Condition 노드는 변수 값에 따라 경로를 나눕니다. 단순 비교는 UI로, 복잡한 논리는 Power Fx 수식으로:
=Topic.LeaveType = "연차" && Topic.Days > 3
Power Fx는 Set variable 노드·메시지 노드 안({x} 삽입)에서도 사용할 수 있어, 날짜 계산·문자열 가공·형식 변환을 코드 없이 처리합니다.
=Text(DateAdd(Today(), 3, TimeUnit.Days), "yyyy-mm-dd")
4. 미니 실습 — 휴가 신청 토픽 완성
- 질문 노드 ① “어떤 휴가인가요?” — 커스텀 엔터티(연차/반차/병가 + 동의어)
- 질문 노드 ② “언제부터인가요?” — 프리빌트 날짜 엔터티
- Condition 노드 —
Topic.LeaveType = "병가"이면 증빙 안내 메시지 - 메시지 노드 —
{Topic.LeaveType}{Topic.StartDate}변수 삽입해 접수 확인 - 테스트 — “다음 주 월요일부터 연차 쓰고 싶어요” 한 문장으로 슬롯 채우기 확인
핵심 정리
- 엔터티 = 무엇을 뽑을지, 변수 = 어디에 담을지, 조건 = 어떻게 나눌지
- 커스텀 엔터티에는 동의어를 아끼지 마세요 — 인식률이 달라집니다
- 슬롯 채우기 덕분에 묻지 않아도 되는 질문은 건너뜁니다 — 대화가 짧아집니다
출처: Use entities and slot filling (MS Learn) · Work with variables (MS Learn) · Use conditions (MS Learn)