使用 Dialogflow CX 產生器和資料儲存庫做出明智的決策

1. 總覽

上次更新時間:2023 年 10 月 10 日

建構項目

在本程式碼研究室中,您將使用 Vertex AI Conversation 和 Dialogflow CX 建構、部署及設定虛擬服務專員,協助有意捐血的人,並確保他們符合資格規定。虛擬服務專員會在 Dialogflow CX 執行要求期間使用真實公開資料和 Google 的生成式大型語言模型 (LLM)。

您會使用的功能

如要完成程式碼研究室,請設定並使用三種獨特功能:

資料儲存庫代理程式

Vertex AI Conversation 功能會建立特殊的 Dialogflow 虛擬服務專員,稱為「資料儲存庫代理程式」

啟用這項功能後,只要提供網站網址、結構化資料或非結構化資料 (資料儲存庫),Google 就會剖析你的內容,並建立採用資料儲存庫和大型語言模型的虛擬服務專員。這樣一來,客戶和使用者就能與服務專員對話,並提出與內容相關的問題。如要進一步瞭解這類代理程式,請參閱「Vertex AI Conversation 簡介」。

發電機

生成器功能是 Dialogflow CX 功能,可讓開發人員在執行階段使用 Google 最新的生成式大型語言模型 (LLM) 和自訂提示,產生服務專員回應。生成器可處理一般知識,這些回覆內容涵蓋訓練內容的大型文字資料集,或是對話中的背景資訊。

生成式備用

生成式備用功能會使用 Google 最新的生成式大型語言模型 (LLM),在使用者輸入內容與填寫表單的意圖或參數不符時,產生虛擬服務專員回覆。您可以使用文字提示設定這項功能,指示 LLM 做出回應。您可以使用預先定義的文字提示,也可以自行新增提示。您可在流程、網頁或參數填入期間,針對不相符的事件處理常式啟用生成備用功能。為不相符的事件啟用生成式備用選項後,每當該事件觸發時,Dialogflow 就會嘗試產生生成的回應,並向使用者發出指令。如果回應產生失敗,就會改為發出一般預先設定好的服務專員回應。如果您想進一步瞭解生成式備用方案,可以試試這個程式碼研究室

課程內容

  • 如何從非結構化資料建立資料儲存庫代理程式
  • 如何利用知識處理常式,讓使用者與虛擬服務專員對話,討論新增至資料儲存庫的內容。
  • 如何設定產生器文字提示,並使用內建的產生器提示預留位置來提供背景資訊。
  • 如何將字詞標示為產生器提示預留位置,並在之後將字詞與執行要求中的工作階段參數建立關聯,以便在執行期間使用其值。
  • 如何設定產生器,處理與大型文字資料集相關的知識和目前對話情境的回覆。
  • 如何使用產生器產生正式電子郵件
  • 如何測試代理程式及模擬客戶問題,這些問題會觸發系統生成的回覆

軟硬體需求

  • Google Cloud 專案
  • 瀏覽器,例如 Chrome

2. 啟用 API

您必須先啟用 Dialogflow 和 Vertex AI Search and Conversation API,才能在 Vertex AI Conversation 中建立資料儲存庫虛擬服務專員。

如要啟用 Dialogflow API,請按照下列步驟操作:

  1. 透過瀏覽器前往 Dialogflow API 服務詳細資料頁面
  2. 點選「啟用」按鈕,在 Google Cloud 專案中啟用 Dialogflow API。

如要啟用 Vertex AI Search and Conversation API,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台中的 Vertex AI Search and Conversation 控制台
  2. 閱讀並同意《服務條款》,然後按一下「Continue and activate the API」(繼續並啟用 API)

3. 為應用程式建立新的即時通訊應用程式和資料儲存庫

您現在可以為虛擬服務專員建立新的即時通訊應用程式,並透過資料來源進行設定。您要建構的代理程式之目的在於協助客戶對血液資格有疑問。您將使用澳洲 Red Cross Lifeblood 做為可靠資料來源,並根據血液資格網站上的非結構化資料建立資料儲存庫。

  1. 如要在 Vertex AI Conversation 中建立新的即時通訊應用程式,您可以採取下列其中一種做法:
    1. 前往 Vertex AI Conversation 控制台,然後按一下靠近控制台頂端的「+新增應用程式」
    2. 前往 Dialogflow CX 控制台,按一下「+ 建立新代理程式」,然後選取「自動產生」選項,系統就會將您重新導向至 Vertex AI Conversation 控制台中的下一個步驟。
  2. 在 Vertex AI Conversation 控制台中,選取「Chat」做為要建立的應用程式類型。
  3. 輸入 Save a Life 的「公司名稱」。這個參數是用來定義代理程式代表的公司,以及代理程式的範圍。
  4. 在「Agent name」(代理程式名稱) 中指定 Blood Donation Agent
  5. 按一下「繼續」
  6. 按一下「建立新的資料儲存庫」
  7. 選取「Cloud Storage」做為資料儲存庫的資料來源。
  8. 請指定以下 Google Cloud Storage 資料夾,其中包含本程式碼研究室的範例資料。請注意,不一定要前置字串 gs://
    cloud-samples-data/dialogflow-cx/arc-lifeblood
    
  9. 然後選取「非結構化文件」做為匯入的資料類型。
  10. 按一下「繼續」
  11. 將「Data store name」指定為 Australian Red Cross Lifeblood Unstructured
  12. 按一下「Create」(建立),建立資料儲存庫。
  13. 在資料儲存庫清單中,選取新建立的 Australian Red Cross Lifeblood Unstructured
  14. 按一下「建立」即可建立即時通訊應用程式。

恭喜!你已完成建構知識面板的即時通訊應用程式,且能協助潛在捐款者,現在就來慶祝吧!

不過,使用者還需要處理更多工作,才能順利使用代理程式。在下一節中,您將使用知識處理常式讓服務專員和使用者之間的對話,以便說明相關資格規定。

4. 設定服務專員,以便回答血液資格常見問題

提供日期儲存庫提示

在背景執行文件收集程序時,讓我們編輯資料儲存庫提示,為服務專員提供品牌形象。

  1. 在 Vertex AI Conversation 控制台中,按一下即時通訊應用程式的名稱,系統會將您重新導向至 Dialogflow CX 控制台,以便進行進一步測試及自訂。
  2. 在 Dialogflow CX 控制台中,按一下頁面右上角的「Agent settings」(代理程式設定),然後前往「ML」分頁,最後開啟「Generative AI」分頁。

前往資料儲存庫提示

  1. 依照下方說明填寫表單,即可產生下列資料儲存庫提示:您的名字是Donate,您在 Save a life, a fictitious organization 做出實用且有禮貌的chatbot。你的任務是協助humans with eligibility information

填寫表單以生成提示

為預設啟動流程的不相符事件啟用生成備用功能

  1. 切換至「Build」分頁,然後開啟「Start Page」
  2. 按一下 sys.no-match-default 事件處理常式。如未勾選方塊,請啟用生成式備用功能。

針對不相符流程啟用生成式備用選項

查看虛擬服務專員的資料儲存庫

在「起始網頁」中按一下「編輯資料儲存庫」,即可查看資料儲存庫設定。

編輯資料儲存庫

Dialogflow 已為您選取您先前建立的資料儲存庫。

連結您建立的資料儲存庫

向下捲動至「Fulfillment」(執行要求) 下方的「Agent Responses」(代理程式回應)。執行要求是指針對使用者的代理程式回應。Dialogflow 已預先填入「Agent 標註」,並在執行階段含有 $request.knowledge.answers[0] 參數,並針對使用者的問題提供最佳答案。

服務專員回覆包含使用者問題的最佳答案

5. 測試代理程式

文件出爐並可供服務專員使用後,請檢查答案是否良好。

按一下「Test Agent」,再次開啟「Simulator」

再次測試虛擬服務專員

前往網站的常見問題頁面,提出您預期會出現的問題:

  • What age do I need to be to donate?
  • Can pregnant women donate?
  • I've just come back from a trip to Africa. Can I donate?
  • How can I schedule an appointment?

檢查答案是否來自知識庫

請注意,答案是擷取自澳洲紅十字輩主管網站。如這個網頁所述,接受血液的接受年齡下限和上限。首次捐款者的最低年齡為 18 歲,首次捐款者的最低年齡則為 75 歲。針對我們從資料儲存庫提取資訊的進一步證據,會顯示在代理程式回應中的小星號圖示,以及原始 JSON 回應。

檢查原始 JSON 回應

最後,讓我們試著用一個與血液捐款無關的問題來挑戰服務專員。

使用者:「What's theWeather is in Melbourne?」(墨爾本的天氣如何?)

代理程式:「很抱歉,我無法提供這方面的協助我可以透過哪些方式協助你取得資格資訊?」

這個答案包含 AI 生成內容,並衍生出 Dialogflow 根據先前提供的知識連接器設定建立的文字提示:「Your name is Donate,您是 Save a Life 員工的實用且友善的聊天機器人。你的任務是協助人類提供資格資訊。」這段文字提示包含公司名稱、服務專員名稱,以及 Dialogflow 用來產生代理程式回應的範圍中最重要的事情。

非常好!您目前使用資料儲存庫來協助人們解決與血液有關的常見問題。在程式碼研究室的下一個部分中,我們會說明如何將產生器文字提示繫結至相同的內容,進而做出明智的決策。

6. 設定服務專員進行資格測驗

接下來的工作是設計這個代理程式,以判定使用者是否有資格捐血。捐款者必須遵守嚴格的規定,例如年齡、體重、現有條件、近期旅遊行程等。在本程式碼研究室的適用範圍內,我們只會考慮年齡和體重。生成器會使用 Google 的大型語言模型 (LLM),根據對話情境和知識庫動態做出明智的決策。

設定新路徑和參數

  1. 開啟「起始網頁」,然後按一下「編輯資料儲存庫」
  2. 將現有代理程式的回應變更為 $request.knowledge.answers[0] Would you like to take the eligibility quiz to find out if you can donate blood, and start changing lives?

充實服務專員對使用者常見問題的回覆

  1. 按一下 [儲存] 按鈕
  2. 現在我們要設計代理程式來處理「是」和「否」回應。首先,請建立 confirmation.yes 意圖和 confirmation.no 意圖。請遵循這些關於重複使用意圖的指南
  3. 接著,請在「Start Page」(起始網頁) 中,為 confirmation.yes 意圖建立路徑,以遷移至新頁面「Eligibility Quiz」

為確認.yes 意圖建立路徑

如果確認為確認動作,系統會改為顯示新頁面的資格測驗。

  1. 如前所述,我們會簡化測驗流程,在決定使用者是否符合捐款資格時,只會考量使用者的年齡和體重。開啟「Eligibility Quiz」頁面,新增表單參數 age-weight,並選擇 @sys.any 做為實體類型。提供 "What is your age and weight?" 做為初始提示執行要求。我們想一次收集年齡和體重。儲存所有變更。

建立參數

建立及設定資格產生器

產生器功能是 Dialogflow CX 功能,可讓開發人員在 Dialogflow CX 執行要求期間使用 Google 最新的生成式大型語言模型 (LLM)。可在執行階段產生代理程式回應的產生器。生成器可處理一般知識,這些回覆內容涵蓋訓練內容的大型文字資料集,或是對話中的背景資訊。

我們建立一個新的產生器,會比對使用者提供的資訊 (例如年齡與體重) 與資格規定,進而判斷使用者是否可捐款。

  1. 在 Dialogflow CX 主控台上,前往「Manage」分頁,選取「Generators」,然後按一下「Create new」

建立新的產生器

  1. 接著,請提供描述性的顯示名稱,並撰寫文字提示。保留預設的模型品質驗證設定。接著按一下「Save」建立產生器。
    • 顯示名稱:Blood Donation Eligibility
    • 文字提示:Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. Weight should be above 50 Kg. The user age and weight is $last-user-utterance. Be nice and tell the user if they are eligible to donate (also tell them why not in case)

在執行階段,文字提示會傳送至生成式模型。因此應力求明確問題或要求,讓模型產生令人滿意的回覆。您可以在文字提示中使用特殊的內建產生器提示預留位置:

  • $conversation代理程式和使用者之間的對話,不含最後一則使用者話語。
  • $last-user-utterance上次使用者語音。

您設定的文字提示預期使用者在一回合對話中提供年齡和體重 (「$last-user-utterance`」)。

在執行要求中使用產生器,並設定所有必要參數

  1. 在「Eligibility Quiz」頁面中新增路徑,等所有參數都填入後就會進入。輸入條件要求 $page.params.status = "FINAL",然後按一下「儲存」

請新增路徑,這會在填入所有參數後啟動

  1. 前往「Fulfillment」(執行要求) 窗格的「Generators」(產生器) 區段,然後展開該面板。接著,按一下「Add generator」,然後選取「Blood Donation Eligibility」產生器。選取產生器後,您需要定義輸出參數,該參數將包含發電機執行後的結果。

選取「活動捐款資格」產生器,將提示預留位置與工作階段參數建立關聯,並定義輸出參數

  1. 在代理程式回應中使用輸出參數並儲存路徑。現在可以開始測試所有內容了。

在代理程式回應中使用輸出參數

7. 重新測試虛擬服務專員

按一下「Test Agent」再次開啟模擬器。

再次測試虛擬服務專員

在「Simulator」(模擬工具) 上,與代理程式開始新的對話。請先詢問年齡規定,然後繼續參加資格測驗。測試「符合資格」因此,請輸入介於 18-75 以及超過 50 公斤的體重。

符合資格的路徑

接著,如果其中一或兩項均不符合,資格檢查會失敗。

不符合資格的路徑

太好了,發電機運作正常!還是實際做法?如果使用者提供年齡,但不提供體重 (或其他途徑),會發生什麼事?

提供年齡而非體重

8. 產生器提示調整

除非同時提供年齡和體重,否則一年前收集年齡和體重可能無法運作。我們應該改為建立同時收集兩個值做為實體參數的表單。為了提供符合所有資格規定 (例如年齡和體重) 的提示,我們可以在字詞前加上 $ 來使用預留位置。我們稍後會在執行要求中,將這些產生器提示預留位置與工作階段參數建立關聯,並在執行過程中由工作階段參數值取代。

  1. 開啟「Eligibility Quiz」頁面,然後新增兩個不同的表單參數,一個參數代表重量,一個用於年齡。選取 @sys.number-integer 做為實體類型,然後標示必要參數。提供初始提示執行要求,例如 How old are you?What is your correct weight?。儲存所有變更。

資格表單

  1. 由於我們要加入兩個新的自訂預留位置,我們必須先將產生器從路徑執行要求中移除產生器,才能變更產生器的文字提示。按一下 [儲存]

移除產生器

  1. 前往「Manage」分頁,選取「Generators」,然後將「Blood Donation Eligibility」產生器的文字提示更新為:Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. The weight must be at least 50 kg. The user is $age years old and weighs $weight Kg. Craft an email and politely explain to the user if they're eligible to donate and if not why.。按一下「儲存」

請注意,除了使用年齡和體重表單參數的文字提示文字提示,我們也修改了最後一個句子,方便使用者產生一封正式的電子郵件,其中包含資格測驗的正式結果。

重新設定文字提示

  1. 在「Eligibility Quiz」頁面中選取路線,然後展開「Fulfillment」(執行要求) 窗格的「Generators」(產生器) 部分。接著,按一下「Add generator」,然後選取「Blood Donation Eligibility 產生器」。選取產生器後,您必須將新的提示預留位置與對應的工作階段參數建立關聯。此外,您需要重新設定輸出參數。按一下「儲存」

更新產生器繫結

  1. 再次測試代理程式。資格檢查現在會將年齡和體重以及用語從對話語調變更為更友善的回覆,因此這類回覆會呈現出較不禮貌的回應,且不會妨礙任何人力介入。

提及使用者資格不符的電子郵件

提及使用者符合資格的電子郵件

9. 恭喜

恭喜您完成本程式碼研究室!

恭喜您完成本程式碼研究室!

今天,我們針對資格測驗已經調查了產生器。您已經發現,產生器透過大型語言模型生成服務專員回覆,而知識庫也能提供資訊完善的決策。當然,還能利用產生器和資料儲存工具實現其他用途,我們等不及要認識這些用途了!

清除

您可以執行以下清除作業,以免系統向您的 Google Cloud 帳戶收取這個程式碼研究室中所用資源的費用:

瞭解詳情

透過下列指南和資源,繼續瞭解對話式 AI 和生成式 AI:

授權

這項內容採用的是創用 CC 姓名標示 2.0 通用授權。