일반 에이전트 설계 권장사항

이 가이드에서는 모든 유형의 에이전트를 설계하는 일반적인 권장사항을 제공합니다.

특히 음성 에이전트 설계에 대해 다룬 음성 에이전트 설계 가이드와 Dialogflow 서비스 사용에 대한 권장사항 가이드도 참조하세요.

에이전트를 제작하기 전에

이 섹션에서는 에이전트 제작를 시작하기 전에 고려해야 할 정보를 제공합니다.

목표

에이전트의 전반적인 목표를 고려합니다.

  • 비즈니스에서 달성하고자 하는 바는 무엇인가요?
  • 사용자가 에이전트에서 기대하는 것은 무엇인가요?
  • 사용자가 에이전트와 얼마나 자주 상호작용하나요?

플랫폼

사용자가 에이전트에 액세스하는 방법을 고려합니다. 콘텐츠를 만들기 전에 Dialogflow에서 지원되는 플랫폼을 검토합니다. 지원할 플랫폼을 선택할 때 그에 따라 적절히 콘텐츠를 준비합니다. Dialogflow의 플랫폼 통합 중 일부는 이미지, 링크, 추천 검색어 칩과 같은 요소를 포함할 수 있는 리치 메시지를 지원합니다.

반복적으로 에이전트 제작

에이전트가 크거나 복잡하다면 먼저 최상위 요청만 처리하는 대화를 만듭니다. 기본적인 구조가 완성되면 대화 경로를 반복 실행하면서 사용자가 선택할 수 있는 가능한 모든 경로를 감안했는지 확인하세요.

사전 제작된 에이전트

Dialogflow는 처음 시작하는 데 도움이 되도록 사전 제작된 에이전트를 제공합니다. 사전 제작된 에이전트는 호텔 예약, 내비게이션, 온라인 쇼핑과 같은 일반적인 사용 사례를 다룹니다. 이러한 에이전트에는 가장 일반적인 사용자 쿼리를 처리하기 위한 인텐트와 항목이 함께 제공됩니다. 내 비즈니스와 관련된 응답을 추가하면 유용한 에이전트를 신속하게 만들 수 있습니다.

시스템 항목

사용자가 요청을 할 때 사용자가 말한 내용에는 파싱해야 할 중요한 정보가 있습니다. Dialogflow에서 이러한 정보를 항목이라고 합니다. 특히 Dialogflow가 제공하는 사전 제작된 항목인 시스템 항목은 가장 일반적인 정보 유형을 처리합니다.

스몰 토크

대화를 개발할 때 주제를 벗어난 요청을 처리하는 방법을 고려할 수 있습니다. Dialogflow는 스몰 토크라고 하는 선택적인 기능을 제공합니다. 이 기능을 사용 설정하면 에이전트는 보편적인 대화, 감정적인 반응, 에이전트 자체에 대한 질문에 응답합니다. 모든 스몰 토크 응답은 맞춤설정을 통해 브랜드의 성격(친근함, 사무적, 또는 그 중간)을 반영하는 경험을 보장할 수 있습니다.

에이전트 설계 권장사항

이 섹션에서는 견고하고 정확하고 유능하고 유용한 에이전트를 위한 권장사항 목록을 제공합니다.

시작 인사와 끝 인사

권장사항 세부정보
환영 인텐트는 브랜딩을 염두에 두고 사용자가 에이전트의 기능을 알 수 있도록 해야 합니다. 에이전트의 환영 인텐트는 사용자에게 에이전트가 도움을 줄 수 있는 작업을 2~3개 알리고 이러한 기능을 사용하는 방법에 대한 간략한 설명(필요한 경우)을 제공해야 합니다.
에이전트에 성공적인 상호작용이 끝났을 때 사용할 적절한 종료 메시지가 있어야 합니다. 사용자가 에이전트에서 작업을 완료하면 에이전트는 트랜잭션/작업을 요약하고 '다음에 또 만나요' 등의 말을 해야 합니다.

머신러닝과 학습

권장사항 세부정보
인텐트는 인텐트의 복잡성에 따라 최소 10~20개의 학습 문구를 포함해야 합니다. 각 인텐트에 필요한 실제 학습 문구의 수는 에이전트의 복잡성에 따라 결정되지만, 적절한 최소 기준은 인텐트의 복잡성에 따라 10~20개입니다. 인텐트에 매개변수가 많을수록 머신러닝 모델을 학습시키기 위한 문구도 더 많이 제공해야 합니다.
학습 문구는 다양해야 합니다. 문구가 폭넓은 요청을 포괄하도록 질문, 명령, 동사의 변형, 보통명사의 동의어를 포함하세요.
주석은 일관적이어야 합니다.
  • 학습 문구를 검토하여 강조표시된 주석이 올바른 객체를 가리키는지 확인하세요.
  • 일부 경우에만 주석 처리되는 텍스트는 학습 문구에 포함되면 안됩니다.
  • 주석으로 선택되는 텍스트에는 항목 일치에 필요한 텍스트가 모두 포함되어야 하지만 그 이상은 포함되면 안 됩니다.
  • 여러 학습 문구에서 주석 처리된 텍스트에는 학습 문구의 비슷한 부분이 포함되는지 확인합니다. 예를 들어 '오전 6시에 알람 울리기'라는 학습 문구가 있고 여기서 '오전 6시'가 @sys.date로 주석 처리되어 있다고 가정해 보겠습니다. 다른 학습 문구 '오전 7시에 깨우기'가 있는 경우 '오전 7시'를 주석 처리해야 하며, '오전 7시에'를 주석 처리해서는 안 됩니다.
시스템 항목에 시맨틱상 유의미한 주석을 사용합니다. 주석에 대해 선택된 학습 문구 부분의 시맨틱 의미는 학습 문구의 나머지 텍스트로부터 영향을 받을 수 있습니다. 예를 들면 다음과 같습니다.
  • 나는 7세입니다(주석 처리된 텍스트의 시맨틱 의미는 사람의 연령).
  • 계약은 7년 동안 유효합니다(주석 처리된 텍스트의 시맨틱 의미는 기간).
Dialogflow의 머신러닝 모델은 시스템 항목 일치 시 시맨틱 의미를 고려합니다. 학습 문구 부분의 시맨틱 의미는 시스템 항목의 의도된 시맨틱 의미와 일치해야 합니다.

예를 들어 위의 첫 번째 '7년'에 @sys.duration 시스템 항목을 주석으로 사용하지 마세요. '7년'의 시맨틱 의미는 단순 기간과 일치하지 않습니다. 대신 @sys.age 시스템 항목을 사용해야 합니다.
커스텀 항목은 광범위한 예시 범위를 포괄해야 합니다. 항목은 여러 항목을 가진 목록입니다. 머신러닝이 문법적 형식을 알아서 처리하지만 가능한 모든 항목을 포함해야 합니다. 또한 동의어 정의 옵션을 선택하고 몇 가지 변형을 포함하세요.
ML을 사용 중지하는 인텐트의 수를 최소화합니다. ML이 사용 중지된 인텐트의 학습 문구는 에이전트 학습 시 사용되지 않습니다. ML이 사용 설정된 다른 인텐트에 사용자 쿼리와 약간의 유사함이 있는 경우 ML이 사용 중지된 인텐트의 학습 문구와 매우 비슷한 사용자 쿼리를 잘못된 인텐트와 일치시킬 수 있습니다. 거짓양성 관련 문제가 있는 경우 ML을 사용 중지하지 말고 ML 분류 임계값을 높이세요.
학습 데이터가 소량인 에이전트에서 ML 분류 임계값을 높게 설정하지 마세요. 임곗값이 높고 학습 데이터가 많지 않은 경우 학습 문구와 100% 일치에 근접한 사용자 쿼리만 인텐트 일치가 됩니다. 높은 임곗값을 사용하려면 학습 데이터를 많이 제공해야 합니다.
에이전트에 대체 인텐트가 있어야 합니다. 대체 인텐트가 없으면 일치하지 않는 사용자 쿼리는 빈 응답으로 이어집니다.
에이전트는 제외 예를 제공해야 합니다. 제외 예는 학습 문구와 약간 비슷한 사용자 쿼리가 의도하지 않게 인텐트와 일치되지 않도록 합니다.
거의 모든 항목과 일치하는 항목을 정의하지 마세요. 그렇게 하면 ML의 성능과 품질이 저하됩니다. 모든 학습 문구의 거의 모든 항목이 가능한 일치 항목으로 평가되기 때문입니다. 그 대신 @sys.any를 사용하는 것이 좋습니다. 마찬가지로, 복합 항목은 동의어로 하나의 @sys.any를 포함해서는 안 됩니다.
필러 단어 또는 무의미한 텍스트로 구성된 항목을 정의하지 마세요. 필러 단어와 무의미한 텍스트의 예시로는 '흠', '가만 있자', '저기요' 등이 있습니다. 다양성을 위해 이와 같은 항목을 사용하려고 시도하면 ML의 성능만 저하됩니다. Dialogflow는 이미 데이터를 보강하여 이와 같은 다양성을 처리합니다. 이와 같은 문구는 항목이 아니라 학습 문구에 추가해야 합니다.
항목에는 한 가지 유형의 정보에 대한 고유한 값을 캡처하는 제한된 범위가 있어야 합니다. 항목은 핵심적이고 짧고 단순하게 유지하세요. 항목 값이 복잡하면 인텐트 학습 문구가 더 적합하기 때문일 수 있습니다. 예를 들어 '요금제 A로 국제 전화를 거는 방법은 무엇인가요?'와 '요금제 B로 국제 데이터 로밍 사용'과 같은 최종 사용자 표현을 고려해 보세요. 작업('국제 전화를 거는 방법' 및 '국제 데이터 로밍 사용')과 요금제('요금제 A', '요금제 B') 모두에 해당하는 항목을 만들지 마세요. 대신 학습 문구 및 인텐트를 사용하여 작업을 캡처하고 항목을 사용하여 요금제를 캡처해야 합니다.
학습 문구의 주석 처리된 텍스트는 다양해야 합니다. 예를 들어 학습 문구에서 @sys.time 시스템 항목으로 파싱해야 하는 시간 값을 제공하려면 모든 학습 문구에서 동일한 시간을 제공하지 마세요. 학습 문구에는 '오전 7시', '오후 8시', '9시'와 같은 다양한 시간 예시가 있어야 합니다.
매개변수가 많은 인텐트는 학습 문구도 많아야 합니다. 일반적으로 학습 문구의 수가 매개변수보다 3배 이상 많고 학습 문구가 10~20개 이상(인텐트의 복잡성에 따라)이 되도록 하는 것이 좋습니다.
각 매개변수는 많은 학습 문구에 사용되어야 합니다. 일반적으로 각 매개변수가 5개 이상의 학습 문구에 사용되어야 합니다.
학습 문구 하나에 @sys.any 항목 여러 개를 사용하지 마세요. 하나의 학습 문구에 연속된 두 개의 @sys.any 또는 총 3개의 @sys.any 항목이 포함되면 안 됩니다. Dialogflow에서 이를 구분하지 못할 수 있습니다.
다른 인텐트에 비슷한 학습 문구를 사용하지 마세요. 서로 다른 인텐트에 비슷한 학습 문구가 포함되면 안 됩니다. 그러면 Dialogflow에서 이러한 문구를 인식하는 방법을 학습하지 못하기 때문입니다.
자동 맞춤법 교정을 사용 설정합니다. 텍스트 입력을 사용하는 경우 자동 맞춤법 교정을 사용 설정해야 합니다.
복합 항목을 중첩하지 마세요. 복합 항목에서 두 개 이상의 중첩 수준을 사용하지 마세요. 각 중첩 수준마다 품질이 크게 저하됩니다.
학습 문구에 특수문자를 사용하지 마세요. 학습 문구에서 {, _, #, [와 같은 특수문자는 무시됩니다. 그림 이모티콘은 예외이며 정상적으로 작동합니다.

인텐트 이름 지정

에이전트에 인텐트가 많은 경우 체계적으로 유지하는 데 도움이 되는 이름 지정 스킴을 고려해야 합니다. 구두점으로 인텐트 이름을 구분하는 것이 일반적이며, 특수성은 왼쪽에서 오른쪽으로 증가합니다. 또한 인텐트 이름은 대화 차례에 대한 최종 사용자의 의도를 반영해야 합니다.

적절한 명명 체계가 많지만 다음이 한 가지 예시입니다.

  • phone-service.order.cancel
  • phone-service.order.create
  • phone-service.order.change
  • tv-service.order.cancel
  • tv-service.order.create
  • tv-service.order.change
  • account.balance.get
  • account.balance.pay
  • account.address.get
  • account.address.update

유용한 인텐트 기능

권장사항 세부정보
에이전트는 컨텍스트 요청을 지원해야 합니다. 예를 들어 에이전트가 날씨 요청을 처리하고 사용자가 '샌프란시스코의 날씨'를 묻는 경우 '내일은 어때?'와 같은 추가 요청도 지원하도록 컨텍스트를 추가해야 합니다.
에이전트에는 예, 아니요, 취소, 다음, 뒤로 등에 대응하는 후속 조치가 있어야 합니다. 후속 조치 인텐트는 일반적인 응답에 대응하는 데 사용됩니다. 후속 조치 인텐트를 추가하려면 인텐트로 마우스를 가져간 다음 후속 조치 추가를 클릭하세요.
인텐트에 하나 이상의 텍스트 응답이 있어야 합니다. 응답 섹션은 인텐트 페이지 맨 아래에 있습니다. 변형을 추가하면 여러 가지 응답 중에서 선택되므로 같은 응답이 반복되는 것을 줄일 수 있습니다.
에이전트는 사용자 요청을 처리하기 위해 필요한 모든 정보를 수집해야 합니다. 필요한 매개변수를 필수 항목으로 설정하는 방법을 고려하세요. 에이전트는 필요한 정보를 얻을 때까지 계속 사용자에게 요청합니다. 이것을 슬롯 채우기라고 합니다.
주문 확인과 같이 필요한 경우 응답에서 정보를 반복해야 합니다. 사용자가 주문 또는 정보 변경 등을 요청하면 에이전트는 확인을 위해 현재 상황을 반복해서 말해야 합니다. 이러한 확인 응답을 만들 때는 반복되는 항목 및 매개변수의 가능한 모든 조합을 포함해야 합니다.

대화 복구

권장사항 세부정보
에이전트에는 대화의 각 단계에서 유용한 복구 프롬프트가 있어야 합니다. 예를 들어 첫 번째 프롬프트가 '원하시는 색상이 무엇인가요?'이고 사용자가 '정글 앵무새'라고 답했으면 대체/후속 조치 인텐트는 '죄송하지만 무슨 색상이라고 하셨나요?'와 같이 질문을 바꿔서 말해야 합니다.
에이전트에는 기본 대체 인텐트에 맞춤설정된 브랜드별 응답이 있어야 합니다. 사용자가 인텐트와 일치하지 않는 내용을 말하는 경우 기본 대체 인텐트가 일치됩니다. 대체 인텐트는 브랜드의 성격을 반영하여 맞춤설정되어야 하며 사용자에게 유효한 요청을 하도록 안내하는 정보를 제공해야 합니다.
맞춤설정된 fulfillment의 경우 사용자가 정보를 반복하도록 허용하는 인텐트가 에이전트에 있어야 합니다. 하나의 인텐트가 '다시 말해', '반복해', '다시 재생해'와 같은 요청을 처리할 수 있습니다. 이는 후속 조치 인텐트일 수 있습니다.
사용자가 성공을 거둘 수 있도록 돕고, 듣고싶은 답변 내용을 정확히 알려줄 수 있도록 돕습니다. 예를 들어 선택지를 제시하는 경우 "A 혹은 B를 좋아하시나요?"라고 묻지 마세요. 사용자가 "예"라고 대답할 수 있기 때문입니다. 그 대신 "저한테 A와 B가 있습니다. 어느 것이 좋으세요?"라고 물으세요.

개성

권장사항 세부정보
에이전트 응답의 스타일과 어조가 브랜드와 어울리고 에이전트 전반에서 일관적이어야 합니다. 사용자는 에이전트와 대화하는 과정에서 하나의 인격체와 대화하는 느낌을 받아야 합니다. 선택한 특성과 성격이 모든 응답에 반영되었는지 확인하세요.
에이전트는 문화, 성별, 종교적 신념, 신체나 정신적 능력, 연령에 주의해야 합니다. 고정 관념화는 농담이라도 사용자에게 모욕감을 줄 수 있으며 그러면 사용자가 에이전트를 다시 찾지 않을 가능성이 높습니다.

음성 설계

권장사항 세부정보
시각화 또는 키보드 및 마우스 상호작용이 필요한 콘텐츠는 피하세요. 하이퍼링크, 테이블, 이미지, 약어는 사용하지 마세요. 이름으로 웹사이트를 참조할 수 있습니다. 옵션 목록을 표시할 때 가장 일치하는 항목을 반환하고 사용자가 대체 옵션을 듣길 원하는지 물어봅니다.
어색한 침묵을 만들지 마세요. 항상 질문으로 끝내세요. 대화를 주도하고 상호작용이 진행되도록 하세요.
이해하기 쉬운 간결한 대화를 작성하세요. 화면에서는 텍스트가 길고 여러 단락을 포함할 수도 있습니다. 그래도 관심이 없는 부분을 건너뛸 수 있습니다. 하지만 가상 에이전트의 음성 설명이 너무 길면 사용자가 불편하게 느낄 수 있습니다.
SSML 사용 SSML을 사용하여 문장의 구조를 구성하고 변경하여 음성이 더 자연스럽게 들리도록 합니다.

음성 설계에 대한 자세한 내용은 음성 에이전트 설계를 참조하세요.

소비자의 개인정보보호

권장사항 세부정보
에이전트 설정에서 GDPR 규정 준수에 대해 데이터 로깅을 사용 중지하세요. 에이전트 설정에서 Dialogflow의 상호작용 로깅을 사용 중지할 수 있습니다. 이 기능을 사용 중지하면 PII 데이터가 Dialogflow에 저장되지 않습니다. 즉 애널리틱스와 같은 특정 기능을 사용할 수 없습니다.
BigQuery에 채팅 대화 데이터를 저장하여 리전별 스토리지를 제어합니다. Cloud Logging 또는 Dialogflow API를 사용하여 새로 추가되는 채팅 발화를 BigQuery로 전송할 수 있습니다. 이 방법을 사용하면 데이터를 저장할 리전을 제어할 수 있습니다. 또한 Data Loss Prevention API를 사용하여 민감한 정보를 마스킹할 수 있습니다. GCP에서 AI로 지원되는 고객 서비스를 빌드하기 위한 청사진을 참조하세요.

기술 자료 커넥터 사용

권장사항 세부정보
공개 FAQ를 가져올 때 적합한 HTML5 마크업을 사용하세요. 예를 들어 schema.org/Questionschema.org/Answer와 같은 schema.org 표기법으로 기사 요소를 사용합니다.
FAQ 웹사이트가 Google Robot에 의해 색인으로 생성되었는지 확인합니다. 웹사이트에서 Google Robot이 허용되어야 하고, Google 웹마스터 도구를 통해 Google 검색 엔진에 웹사이트를 추가해야 합니다. pages.github와 같은 사이트는 크롤링 가능한 사이트가 아니므로 작동하지 않습니다.
1~200개 FAQ 사용 기술자료당 1~200개 사이의 Q&A 쌍이 필요합니다. 더 필요하면 여러 기술 자료를 로드할 수 있습니다.

Dialogflow API 구현

권장사항 세부정보
모바일 또는 웹 애플리케이션용 클라이언트 코드베이스에서 서비스 계정 비공개 키를 노출하지 마세요. 안전한 방법이 아닙니다. Chrome 개발 도구에 익숙한 누구라도 키를 쉽게 훔쳐서 해당 계정을 통해 (유료) API 호출을 수행할 수 있습니다. 항상 API 프록시 서버를 통해 Google Cloud 인증을 처리하는 것이 더 나은 방법입니다. 이렇게 하면 서비스 계정이 일반에 노출되지 않고 키를 안전하게 보관할 수 있습니다.

에이전트 한곳에서 음성 및 텍스트 설계

권장사항 세부정보
기본 플랫폼 응답에 SSML을 사용하지 마세요. 에이전트가 음성 및 텍스트로 모두 응답할 수 있으면 텍스트 응답에 원시 SSML 코드가 포함됩니다. 기본 플랫폼 응답에 일반 텍스트를 사용하고 플랫폼별 응답에 SSML을 사용하세요. 또는 웹훅을 사용해서 음성 응답이 필요할 때만 SSML을 생성할 수 있습니다.

테스트

권장사항 세부정보
개발에 관여하지 않은 사람을 통해 앱을 철저히 테스트하세요. 에이전트에 익숙하지 않은 사람이 앱을 사용하도록 하면 대화 진행에 대한 객관적인 의견을 얻을 수 있습니다. 정확성, 긴 정지 상태, 대화 경로 누락, 진행 속도, 서툰 전환 등을 유의하여 살펴보도록 하세요.
지원하려는 모든 플랫폼에서 앱을 테스트하세요. 플랫폼 한 개 이상에서 에이전트를 사용할 수 있는 경우 모든 플랫폼에서 서식 있는 메시지와 응답이 예상대로 나타나는지 확인합니다.

기업 권장사항

추가 대화 설계 가이드