您可以將多個 Dialogflow 代理程式 (稱為子代理程式) 合併為單一代理程式 (稱為巨型代理程式)。對超級代理程式執行偵測意圖要求時,系統會考量所有子代理程式,並傳回子代理程式的最佳回應。
您可能會基於各種原因而需要使用巨型代理程式:
- 提升管理效率:如果有多個團隊建構代理程式,每個團隊可以負責一個子代理程式,簡化團隊間的變更衝突。
- 更多意圖:如果代理程式的意圖數量較多,可能會接近意圖數量上限。在這種情況下,您可以建立多個子代理程式和一個超級代理程式。
限制
超級代理程式有以下限制:
- 巨型代理程式及其子代理程式必須在同一個區域中建立。
- 在一個區域內,巨型代理程式及其子代理程式都會與不同的 Google Cloud 專案建立關聯。
- 超級代理程式最多可有 10 個子代理程式。
- 閒聊 不適用於巨型代理程式。
- 將要求傳送至超級虛擬服務專員時,子虛擬服務專員意圖優先順序不會影響意圖比對。
- Google 助理整合功能無法與巨型代理程式搭配使用。
- 系統不支援合作夥伴內建的電話整合功能 (AudioCodes、Avaya、SignalWire、Voximplant)。
- 巨型代理程式不支援用做後續追蹤意圖的備用意圖。
建立子代理程式
建立子代理程式的方式與建立其他代理程式相同。 視需要新增意圖、情境、實體等,建構代理程式。
建立或更新巨型代理程式
您可以使用 Dialogflow 主控台建立巨型代理程式,並連結至子代理程式。
Dialogflow 會將大部分的代理程式設定納入巨型代理程式,並將資料記錄至巨型代理程式。例如:
- Dialogflow 會從巨型代理程式取得代理程式的整體記錄、情緒、語音轉文字和文字轉語音設定。
- Dialogflow 會在巨型服務專員中儲存數據分析、對話記錄和訓練工具的資料。
網路使用者介面
1. 建立超級代理程式
- 前往 Dialogflow ES 主控台。
- 按一下左側欄選單中的「建立代理程式」。 如果您已有其他代理程式,請按一下代理程式名稱並捲動至底部,然後按一下 [Create new agent] (建立新代理程式)。
- 輸入代理程式名稱、預設語言、預設時區和Google Cloud 專案。
- 將「代理程式類型」設為「Mega Agent」。
- 按一下 [建立] 按鈕。
2. 新增及管理子代理人
- 按一下左側欄選單中的「Sub Agents」。
- 選取要加入超級代理程式的子代理程式。
- 子代理程式「環境」預設為「草稿」,但您可以視需要更新。
- 如要使用與子代理程式相關聯的知識庫,請將欄位從「已排除」變更為「已納入」。
- 按一下 [儲存]。
設定角色
視您打算如何使用巨型代理程式,您需要在子代理程式專案中授予特定角色,巨型代理程式才能呼叫子代理程式。如要設定這些角色,請按照下列步驟操作:
- 如常建立巨型代理程式和子代理程式 Google Cloud 專案,並確保已為每個專案啟用「Dialogflow API」。
- 如果您打算使用 API 與巨型代理程式互動,請務必在每個子代理程式專案中,將角色授予用於巨型代理程式 API 呼叫的服務帳戶,且該角色應具備發出偵測意圖呼叫的權限。以下角色會提供這項存取權:專案擁有者、專案編輯者、Dialogflow API 管理員或 Dialogflow API 用戶端。如要取得這個服務帳戶的電子郵件地址:
- 前往 IAM 服務帳戶頁面。
- 選取巨型代理程式的專案。
- 選取您已為 API 呼叫建立的服務帳戶,或新增具備所需角色的服務帳戶。按照設定操作說明建立新的服務帳戶,並下載私密金鑰。
- 記下所選服務帳戶的電子郵件地址。 您會在下方用到這項資訊。
如果打算使用任何巨型代理程式的整合功能,巨型代理程式專案自動建立的service-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com 服務帳戶必須在該專案中擁有包含偵測意圖呼叫權限的角色。以下角色會提供這項存取權:專案擁有者、專案編輯者、Dialogflow API 管理員或 Dialogflow API 用戶端。如要取得這個服務帳戶的電子郵件地址,請按照下列步驟操作:
- 前往 IAM 主頁面。
- 選取巨型代理程式的專案。
- 在右側啟用「包含 Google 提供的角色授權」選項。
- 找出符合下列模式的服務帳戶:
service-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com。 - 記下所選服務帳戶的電子郵件地址。 您會在下方用到這項資訊。
針對每個子代理程式專案,將角色授予您在上方收集的巨型代理程式服務帳戶:
偵測意圖
如要偵測意圖,請呼叫要求,就像其他偵測意圖要求一樣,並使用超級代理程式的專案 ID。Dialogflow 會考量所有子代理程式,並傳回子代理程式的最佳回應。
舉例來說,請考量下列子代理程式:
子代理 | Intent | 訓練詞組 |
---|---|---|
訂單 | 圖書 | 「我想買書」 「將書籍加入購物車」 |
帽子 | 「我想購買帽子」 「我想要帽子」 |
|
帳戶 | 餘額 | 「我的餘額是多少?」 「我的帳戶還剩多少錢?」 |
地址 | 「我想變更地址」 「我有新地址」 |
如果使用者說出「I want to buy a hat please」(我想買帽子),傳送至巨型代理程式的偵測意圖要求,會與 Orders
代理程式中的 Hats
意圖相符。
如要為偵測意圖要求指定一或多個子代理程式,請設定 QueryParameters
的 subAgents
欄位。舉例來說,這項要求的 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 設定。
巨型代理程式的子代理程式控制台頁面設定,不會納入巨型代理程式的版本和環境。巨型代理程式要求一律會觸發當時該頁面指定的子代理程式環境。