超級代理程式

您可以將多個 Dialogflow 代理程式 (稱為子代理程式) 合併為單一代理程式 (稱為巨型代理程式)。對超級代理程式執行偵測意圖要求時,系統會考量所有子代理程式,並傳回子代理程式的最佳回應。

您可能會基於各種原因而需要使用巨型代理程式:

  • 提升管理效率:如果有多個團隊建構代理程式,每個團隊可以負責一個子代理程式,簡化團隊間的變更衝突。
  • 更多意圖:如果代理程式的意圖數量較多,可能會接近意圖數量上限。在這種情況下,您可以建立多個子代理程式和一個超級代理程式。

限制

超級代理程式有以下限制:

  • 巨型代理程式及其子代理程式必須在同一個區域中建立。
  • 在一個區域內,巨型代理程式及其子代理程式都會與不同的 Google Cloud 專案建立關聯。
  • 超級代理程式最多可有 10 個子代理程式。
  • 閒聊 不適用於巨型代理程式。
  • 將要求傳送至超級虛擬服務專員時,子虛擬服務專員意圖優先順序不會影響意圖比對。
  • Google 助理整合功能無法與巨型代理程式搭配使用。
  • 系統不支援合作夥伴內建的電話整合功能 (AudioCodesAvayaSignalWireVoximplant)。
  • 巨型代理程式不支援用做後續追蹤意圖備用意圖

建立子代理程式

建立子代理程式的方式與建立其他代理程式相同。 視需要新增意圖、情境、實體等,建構代理程式。

建立或更新巨型代理程式

您可以使用 Dialogflow 主控台建立巨型代理程式,並連結至子代理程式。

Dialogflow 會將大部分的代理程式設定納入巨型代理程式,並將資料記錄至巨型代理程式。例如:

網路使用者介面

1. 建立超級代理程式

  1. 前往 Dialogflow ES 主控台
  2. 按一下左側欄選單中的「建立代理程式」。 如果您已有其他代理程式,請按一下代理程式名稱並捲動至底部,然後按一下 [Create new agent] (建立新代理程式)。
  3. 輸入代理程式名稱、預設語言、預設時區和Google Cloud 專案。
  4. 將「代理程式類型」設為「Mega Agent」
  5. 按一下 [建立] 按鈕。

2. 新增及管理子代理人

  1. 按一下左側欄選單中的「Sub Agents」
  2. 選取要加入超級代理程式的子代理程式。
  3. 子代理程式「環境」預設為「草稿」,但您可以視需要更新。
  4. 如要使用與子代理程式相關聯的知識庫,請將欄位從「已排除」變更為「已納入」
  5. 按一下 [儲存]

設定角色

視您打算如何使用巨型代理程式,您需要在子代理程式專案中授予特定角色,巨型代理程式才能呼叫子代理程式。如要設定這些角色,請按照下列步驟操作:

  1. 如常建立巨型代理程式和子代理程式 Google Cloud 專案,並確保已為每個專案啟用「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 會考量所有子代理程式,並傳回子代理程式的最佳回應。

舉例來說,請考量下列子代理程式:

子代理 Intent 訓練詞組
訂單 圖書 「我想買書」
「將書籍加入購物車」
帽子 「我想購買帽子」
「我想要帽子」
帳戶 餘額 「我的餘額是多少?」
「我的帳戶還剩多少錢?」
地址 「我想變更地址」
「我有新地址」

如果使用者說出「I want to buy 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"}
    ]
  }
}

叫用事件

如要從 Webhook 服務叫用事件,可以指定要觸發意圖的子代理程式。請使用下列活動名稱格式:

sub-agent-project-id.event-name

舉例來說,如果子代理程式專案 ID 為 123,且所需意圖的事件名稱為 alarm,請使用 123.alarm 做為事件名稱。

如果未指定活動的子代理程式,系統會將活動傳回給先前比對意圖的子代理程式。

設定輸出背景資訊

如要透過 Webhook 服務設定輸出背景資訊,可以指定背景資訊所屬的子代理程式。請使用下列格式:

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 中啟用的背景資訊執行階段生命週期。

版本和環境

您可以在巨型代理程式層級使用版本和環境,為巨型代理程式的回退意圖建立不同的快照,並為巨型代理程式的不同環境設定不同的 Webhook 和 Text-to-Speech 設定。

巨型代理程式的子代理程式控制台頁面設定,不會納入巨型代理程式的版本和環境。巨型代理程式要求一律會觸發當時該頁面指定的子代理程式環境。