메가 에이전트

하위 에이전트라는 여러 Dialogflow 에이전트를 메가 에이전트라는 단일 에이전트로 결합할 수 있습니다. 메가 에이전트에 대해 인텐트 인식 요청을 수행하면 모든 하위 에이전트가 고려되며 하위 에이전트의 최상의 응답이 반환됩니다.

메가 에이전트를 사용하는 데는 다양한 이유가 있습니다.

  • 더 나은 거버넌스: 여러 팀이 에이전트를 빌드하는 경우 각 팀은 하나의 하위 에이전트를 담당하게 되므로 팀 간 변경 충돌이 간소화됩니다.
  • 추가 인텐트: 인텐트가 많은 에이전트의 경우 인텐트 수 제한에 도달할 수 있습니다. 이 경우 여러 개의 하위 에이전트와 하나의 메가 에이전트를 만들 수 있습니다.

제한사항

메가 에이전트에는 다음과 같은 제한사항이 적용됩니다.

  • 메가 에이전트 및 하위 에이전트는 동일한 리전에서 생성되어야 합니다.
  • 한 리전 내에서 메가 에이전트와 하위 에이전트는 모두 다른 GCP 프로젝트와 연결됩니다.
  • 메가 에이전트가 가질 수 있는 하위 에이전트의 수는 최대 10개입니다.
  • 메가 에이전트는 스몰 토크를 할 수 없습니다.
  • 하위 에이전트 인텐트 우선순위는 메가 에이전트로 요청을 보낼 때 인텐트 일치에 영향을 주지 않습니다.
  • Google 어시스턴트 통합은 메가 에이전트와 함께 사용할 수 없습니다.
  • 파트너 기본 제공 전화 통합(AudioCodes, Avaya, Genesys, SignalWire, Voximplant)이 지원되지 않습니다.
  • 메가 에이전트는 후속 조치 인텐트로 사용되는 대체 인텐트를 지원하지 않습니다.

하위 에이전트 만들기

다른 에이전트와 마찬가지로 하위 에이전트를 만듭니다. 필요에 따라 인텐트, 컨텍스트, 항목 등을 추가하여 에이전트를 빌드합니다.

메가 에이전트를 만들기 또는 업데이트

Dialogflow 콘솔을 사용하여 메가 에이전트를 만들고 하위 에이전트에 연결할 수 있습니다.

Dialogflow는 대부분의 에이전트 설정을 메가 에이전트에서 가져오고 데이터를 메가 에이전트에 로깅합니다. 예를 들면 다음과 같습니다.

웹 UI

1. 메가 에이전트 만들기

  1. Dialogflow ES 콘솔로 이동합니다.
  2. 왼쪽 사이드바 메뉴에서 에이전트 만들기를 클릭합니다. 이미 다른 에이전트가 있는 경우 에이전트 이름을 클릭하고 맨 아래로 스크롤하여 새 에이전트 만들기를 클릭합니다.
  3. 에이전트 이름, 기본 언어, 기본 시간대, GCP 프로젝트를 입력합니다.
  4. 에이전트 유형메가 에이전트로 설정합니다.
  5. 만들기 버튼을 클릭합니다.

2. 하위 에이전트 추가 및 관리

  1. 왼쪽 사이드바 메뉴에서 하위 에이전트를 클릭합니다.
  2. 메가 에이전트에 추가할 하위 에이전트를 선택합니다.
  3. 하위 에이전트 환경의 기본값은 초안이지만 필요에 따라 업데이트할 수 있습니다.
  4. 하위 에이전트와 연결된 기술 자료를 사용하려면 필드를 제외됨에서 포함됨으로 변경합니다.
  5. 저장을 클릭합니다.

역할 설정

메가 에이전트를 사용하는 방법에 따라 하위 에이전트 프로젝트에서 특정 역할을 부여해야 합니다.그러면 메가 에이전트가 하위 에이전트를 호출할 수 있는 권한을 갖습니다. 역할을 설정하는 방법은 다음과 같습니다.

  1. 평소처럼 메가 에이전트 및 하위 에이전트 GCP 프로젝트를 만들고 각 프로젝트에 대해 'Dialogflow API'를 사용 설정했는지 확인합니다.
  2. API를 사용하여 메가 에이전트와 상호작용하려면 각 하위 에이전트 프로젝트의 서비스 계정에 메가 에이전트 API 호출에 사용하는 역할을 부여해야 합니다. 또한 역할에는 인텐트 감지 호출을 수행할 수 있는 권한이 있어야 합니다. 프로젝트 소유자, 프로젝트 편집자, Dialogflow API 관리자, Dialogflow API 클라이언트의 역할이 이러한 액세스를 제공합니다. 이 서비스 계정의 이메일 주소를 가져오려면 다음 안내를 따르세요.
    1. IAM 서비스 계정 페이지로 이동합니다.
    2. 메가 에이전트의 프로젝트를 선택합니다.
    3. API 호출을 위해 이미 만든 서비스 계정을 선택하거나 원하는 역할을 가진 새 서비스 계정을 추가합니다. 설정 안내에 따라 새 서비스 계정을 만들고 비공개 키를 다운로드합니다.
    4. 선택한 서비스 계정 이메일 주소를 기록해 둡니다. 아래에 이 주소가 필요합니다.
  3. 메가 에이전트에 통합을 사용하려는 경우 메가 에이전트 프로젝트에 대해 자동 생성된 service-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com 서비스 계정에 해당 프로젝트에 대한 인텐트 호출을 감지할 수 있는 권한이 포함된역할이 있어야 합니다. 프로젝트 소유자, 프로젝트 편집자, Dialogflow API 관리자, Dialogflow API 클라이언트의 역할이 이러한 액세스를 제공합니다. 이 서비스 계정의 이메일 주소를 가져오려면 다음 안내를 따르세요.

    1. IAM 기본 페이지로 이동합니다.
    2. 메가 에이전트의 프로젝트를 선택합니다.
    3. 오른쪽에서 Google 제공 역할 부여 포함 옵션을 사용 설정합니다.
    4. 다음 패턴과 일치하는 서비스 계정을 찾습니다:
      service-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com.
    5. 선택한 서비스 계정 이메일 주소를 기록해 둡니다. 아래에 이 주소가 필요합니다.
  4. 각 하위 에이전트 프로젝트의 경우, 위에서 수집한 메가 에이전트 서비스 계정에 역할을 부여합니다.

    1. IAM 기본 페이지로 이동합니다.
    2. 하위 에이전트의 프로젝트를 선택합니다.
    3. 프로젝트에서 메가 에이전트의 서비스 계정 이메일 주소에 원하는 역할을 부여합니다.

인텐트 감지

인텐트를 인식하려면 다른 인텐트 인식 요청과 같이 요청을 호출하고 메가 에이전트의 프로젝트 ID를 사용합니다. Dialogflow에서는 모든 하위 에이전트가 고려되며 하위 에이전트의 최상의 응답이 반환됩니다.

예를 들어 다음과 같은 하위 에이전트를 살펴보겠습니다.

하위 에이전트 인텐트 학습 문구
주문 도서 'I want to buy a book(책을 구입하고 싶습니다.)'
'Add a book to my cart(장바구니에 책 추가)'
모자 'I want to purchase a hat(모자를 구매하고 싶어요.)'
'I want a hat(모자를 사고 싶어요.)'
계정 잔액 'What is my balance?(잔액이 얼마인가요?)'
'How much is left in my account?(계정에 얼마가 남아 있나요?)'
주소 'I want to change my address(주소를 변경하고 싶습니다.)'
'I have a new address(주소가 변경되었습니다.)'

최종 사용자가 'I want to purchase a hat please(모자를 구매하고 싶습니다.)'라고 말하면 메가 에이전트에 전송된 인텐트 인식 요청에 Orders 에이전트의 Hats 인텐트와 일치되는 결과가 나옵니다.

인텐트 인식 요청에 하나 이상의 하위 에이전트를 지정하려면 QueryParameterssubAgents 필드를 설정합니다. 예를 들어 이 요청에 대한 REST JSON은 다음과 비슷합니다.

{
  "queryInput": {
    "text": {
      "text": "reserve a meeting room for six people",
      "languageCode": "en-US"
    }
  },
  "queryParams": {
    "subAgents": [
       {"project": "projects/sub-agent-1-project-id"},
       {"project": "projects/sub-agent-2-project-id"}
    ]
  }
}

이벤트 호출

웹훅 서비스에서 이벤트를 호출하려면 트리거할 인텐트의 하위 에이전트를 지정할 수 있습니다. 다음의 이벤트 이름 형식을 사용합니다.

sub-agent-project-id.event-name

예를 들어 하위 에이전트 프로젝트 ID가 123이고 원하는 인텐트의 이벤트 이름이 alarm인 경우 123.alarm을 이벤트 이름으로 사용합니다.

이벤트에 하위 에이전트를 지정하지 않으면 이전에 일치된 인텐트가 포함된 하위 에이전트로 이벤트가 다시 전송됩니다.

출력 컨텍스트 설정

웹훅 서비스의 출력 컨텍스트를 설정하려면 컨텍스트가 속하는 하위 에이전트를 지정할 수 있습니다. 다음 형식을 사용합니다.

projects/mega_agent_project_id/agent/sessions/session_id/contexts/sub_agent_project_id.context_name

예를 들어 세션이 projects/mega_agent_project_id/agent/sessions/session_id이고 프로젝트 ID가 sub_project_1인 하위 에이전트의 컨텍스트 이름을 music_context로 설정하려면 다음 이름을 출력 컨텍스트로 설정할 수 있습니다.

projects/mega_agent_project_id/agent/sessions/session_id/contexts/sub_project_1.music_context

컨텍스트 이름에 하위 에이전트 프리픽스를 지정하지 않으면 시스템이 이를 메가 에이전트의 컨텍스트로 간주합니다.

컨텍스트 수명

컨텍스트가 활성화되면 컨텍스트 수명은 일반적으로 컨텍스트가 비활성화되기 전에 몇 번의 대화 전환이 발생하는지 결정합니다. 기본적으로 활성 컨텍스트의 런타임 수명은 활성 상태가 된 후 각 대화 차례마다 감소합니다.

이 동작은 메가 에이전트의 경우 다를 수 있습니다. 대화 중에 다른 하위 에이전트의 인텐트가 각 대화 차례에 일치할 수 있습니다. 하위 에이전트의 인텐트가 일치되고 인텐트에 출력 컨텍스트가 있는 경우 이 컨텍스트의 수명은 동일한 하위 에이전트에 있는 인텐트가 추가로 일치하는 경우에만 감소합니다.

예를 들어 인텐트 일치는 하위 에이전트 A에서 발생하고 인텐트에 컨텍스트를 활성화하는 출력 컨텍스트가 포함됩니다. 하위 에이전트 B에서 일치하는 인텐트가 있더라도 하위 에이전트 A에서 원래 시작된 활성 컨텍스트에는 런타임 수명이 감소하지 않습니다.

버전 및 환경

메가 에이전트 수준의 버전 및 환경을 사용하면 메가 에이전트 대체 인텐트의 다른 스냅샷을 만들고 다양한 메가 에이전트 환경에 대해 다른 웹훅 및 Text-to-Speech를 설정할 수 있습니다.

메가 에이전트의 하위 에이전트 콘솔 페이지에 있는 설정은 메가 에이전트의 버전 및 환경에 포함되지 않습니다. 메가 에이전트 요청은 항상 해당 시점의 페이지에 지정된 하위 에이전트의 환경을 트리거합니다.