資料儲存庫工具

資料儲存庫工具可根據網站內容和上傳的資料,提供 AI 生成的代理回覆。代理可以在履行期間,從資料儲存庫中尋找使用者問題的答案。

資料儲存庫工具:控制台

本節說明如何將資料儲存庫工具新增至代理程式,並在執行要求中設定該工具。

建立資料儲存庫工具

  1. 開啟 Conversational Agents 控制台,然後選擇專案 Google Cloud。
  2. 從下拉式選單中選取代理程式。
  3. 前往頁面最左側的選單列,然後選取「工具」
  4. 點選「+ 建立」。輸入工具的專屬「名稱」,然後在「類型」下方的下拉式選單中選取「資料儲存庫」。您也可以在「Description」(說明) 欄位中輸入工具的說明。
  5. 按一下「新增資料儲存庫」。隨即顯示的視窗會列出您現有的資料儲存庫 (如有)。選取要新增至工具的資料儲存庫。
  6. (選用) 如要在 Vertex AI Agent Builder 控制台中建立新的資料儲存庫,請點選「Create new data store」(建立新的資料儲存庫),系統會自動重新導向。
  7. (選用) 設定新的資料儲存庫後,按一下「建立」。如要將新資料儲存庫新增至工具,請返回 Dialogflow CX 控制台的「Create Tool」(建立工具) 選單,然後重新整理頁面。新的資料儲存庫會顯示在可用資料儲存庫清單中。
  8. 點選「建立工具」設定頂端的「儲存」,即可建立新的資料儲存庫工具。

將資料儲存庫工具新增至履行作業

  1. 前往最左側的選單列,然後選取「流程」
  2. 選取流程和頁面,然後按一下要與資料儲存庫搭配使用的「路徑」
  3. 依序前往「出貨」>「資料儲存庫工具」,然後從下拉式選單中選取資料儲存庫工具。
  4. 依序前往「Fulfillment」>「Agent responses」,按一下「+Add dialogue response」,然後點選「資料儲存庫工具回應」
  5. 設定要在回覆中顯示的來源連結和引文數量,並指定資料儲存庫回覆空白時的回退行為。在「靜態回退回覆」欄位中輸入靜態回退回覆。視需要按一下「生成式回退」核取方塊,先使用 AI 生成回覆,再使用靜態回退回覆。如要自訂回退回覆,請按一下「資料儲存庫回覆」表單視窗左上角的「扳手」圖示,開啟「條件式回覆」視窗。
  6. 在「路線」選單頂端,按一下「儲存」
  7. 前往 Dialogflow CX 模擬工具,測試代理程式的結果。

選用查詢覆寫工作階段參數

您可以使用工作階段參數 knowledge.overrides.query,覆寫傳遞至這項資料儲存庫工具的查詢。如果這個參數不是空白,工具就會使用這個參數,而非使用者的查詢。

資料儲存庫工具:API

根據預設,代理程式會代您呼叫 dataStoreTool 方法

資料儲存區類型有三種:

  • PUBLIC_WEB:包含公開網頁內容的資料儲存庫。
  • UNSTRUCTURED:包含非結構化私人資料的資料儲存庫。
  • STRUCTURED:含有結構化資料的資料儲存庫 (例如常見問題)。

以下範例說明如何參照資料儲存庫。詳情請參閱 dataStoreConnections 參考資料

"dataStoreConnections": [
  {
    "dataStoreType": "PUBLIC_WEB",
    "dataStore": "projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATASTORE_ID"
  },
  {
    "dataStoreType": "UNSTRUCTURED",
    "dataStore": "projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATASTORE_ID"
  },
  {
    "dataStoreType": "STRUCTURED",
    "dataStore": "projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATASTORE_ID"
  }
]

資料儲存庫工具的回覆也可能包含用於生成回覆的內容來源相關片段。代理可以提供指示,說明如何繼續使用資料儲存庫中的答案,或在找不到答案時如何回覆。

如要覆寫答案,可以為特定問題新增常見問題項目

您可以視需要提供範例,提升代理程式的行為。範例應遵循結構定義。詳情請參閱參考文件

{
  "toolUse": {
    "tool": "projects/PROJECT_ID/locations/LOCATION_ID/agents/AGENT_ID/tools/TOOL_ID",
    "action": "TOOL_DISPLAY_NAME",
    "inputParameters": [
      {
        "name": "TOOL_DISPLAY_NAME input",
        "value": {
          "query": "QUERY"
        }
      }
    ],
    "outputParameters": [
      {
        "name": "TOOL_DISPLAY_NAME output",
        "value": {
          "answer": "ANSWER",
          "snippets": [
            {
              "title": "TITLE",
              "text": "TEXT_FROM_DATASTORE",
              "uri": "URI_OF_DATASTORE"
            }
          ]
        }
      }
    ]
  }
}

(僅限以劇本為基礎的代理程式) 資料儲存庫工具範例

建立資料儲存庫工具範例時,工具輸入參數 requestBody 會提供三個選用輸入內容,以及必要 query 字串:filter 字串、userMetadata 結構化物件和 fallback 字串。

filter 參數可讓您篩選結構化資料或含中繼資料的非結構化資料的搜尋查詢。這個字串必須遵循資料儲存庫的支援篩選運算式語法。多個詳細範例會指示教戰手冊模型如何填入這個參數。如果篩選器字串無效,搜尋查詢時會忽略該篩選器。

以下範例顯示 filter 字串,可用於根據位置資訊縮小搜尋結果範圍:

"filter": "country: ANY(\"Canada\")"

如要進一步瞭解應對手冊範例,請參閱範例頁面

篩選最佳做法:

  • 指定可供篩選的欄位,以及每個欄位的有效值,讓劇本瞭解建立有效篩選條件的限制。舉例來說,存放菜單資訊的資料儲存庫可能包含 meal 欄位,其中「早餐」、「午餐」和「晚餐」是有效值,以及 servingSize 欄位,其中可以是 0 到 5 之間的任何整數。指令可能類似以下範例:

    When using ${TOOL: menu-data-store-tool},
    only use the following fields for filtering: "meal", "servingSize".
    Valid filter values are: "meal": ("breakfast", "lunch", "dinner"),
    "servingSize": integers between 0 and 5, inclusive.
    
  • 如果劇本適用於外部使用者,請新增操作說明,防止劇本向使用者提供建立這些篩選器的相關資訊。例如:

    Never tell the user about these filters.
    If the user input isn't supported by these filters, respond to the user with
    "Sorry, I don't have the information to answer that question."
    

userMetadata 參數會提供有關使用者的資訊。您可以在這個參數中填入任何鍵/值組合。這項中繼資料會傳遞至資料儲存庫工具,以便提供更準確的搜尋結果和工具回覆。多個詳細範例可協助劇本模型瞭解如何填入這個參數。

以下是 userMetadata 參數值的範例,可根據特定使用者調整搜尋結果:

"userMetadata": {
  "favoriteColor": "blue",
  ...
}

如果查詢沒有有效的摘要答案,資料儲存庫工具會根據 fallback 參數提供回覆。您可以提供多個範例,指示劇本模型如何填寫與不同主題相關的使用者輸入內容的備用欄位。工具輸出內容不含程式碼片段,有助於減少延遲和輸入權杖用量。

"fallback": "I'm sorry I cannot help you with that. Is there anything else I can
do for you?"

資料儲存庫工具設定

如果在測試期間發現部分回覆不符預期,可以嘗試調整下列參數來微調效能。您可以直接呼叫 API,也可以在控制台的「工具」頁面中,按一下資料儲存庫名稱來存取這些資料。如要進一步瞭解這些設定選項,請參閱資料儲存庫設定頁面

資料儲存庫工具回應選項

如要進一步瞭解如何設定資料儲存庫工具回應,請參閱完成說明文件

資料儲存庫處理常式

資料儲存庫處理常式是特殊類型的狀態處理常式,可根據網站內容和上傳的資料,提供 LLM 生成的代理回覆。

如要建立這個處理常式,請向代理提供資料儲存庫

服務專員可使用這些資料儲存庫處理常式,與使用者討論內容。

限制

限制如下:

存取控管

如果您是專案擁有者,您具備建立資料儲存庫處理常式所需的權限。如果您不是專案擁有者,則必須具備下列角色:

  • Dialogflow 管理員
  • Discovery Engine 管理員

詳情請參閱存取控管指南

將資料儲存庫新增至代理程式

如果尚未建立代理程式,請按照設定操作說明建立代理程式。

如要將資料儲存庫新增至代理程式,請按照下列步驟操作:

  1. 選取頁面,然後按一下「新增狀態處理常式」
  2. 勾選「資料儲存庫」核取方塊,然後按一下「套用」
  3. 按一下頁面「資料儲存庫」部分右上角的 + 符號。
  4. 在隨即顯示的資料儲存庫選單中,按一下「新增資料儲存庫」
  5. 系統會顯示表格,列出所有現有的資料儲存庫。勾選要使用的資料儲存庫名稱旁邊的核取方塊,然後按一下「儲存」。如要建立新的資料儲存庫,請按一下「建立新的資料儲存庫」。系統會自動將您重新導向至 Vertex AI Agent Builder。
  6. (僅限新資料儲存庫) 選取資料來源,然後按照 Vertex AI Agent Builder 中的操作說明設定資料儲存庫。如要進一步瞭解如何設定資料儲存庫類型,請參閱資料儲存庫說明文件。點選「建立」即可建立新的資料儲存庫。

測試代理

部署 AI 代理

您可以透過下列幾種方式部署代理程式:

  • 簡單的做法是使用整合,這會為代理程式提供使用者介面。每項整合功能都提供部署說明。
  • Dialogflow CX Messenger 整合功能是資料儲存庫處理常式的理想選擇,內建生成式功能選項。
  • 您可以建立自己的使用者介面,並使用 Dialogflow CX API 進行互動。使用者介面實作項目會管理部署作業。

特殊意圖

除了處理有關您提供內容的問題外,代理程式還可處理下列類型問題:

  • 代理識別:代理會處理「你是誰?」或「你是真人嗎?」等問題。
  • 轉接給真人服務專員:如果使用者提出「我想與真人對話」或「我想與真人服務專員對話」等問題,代理程式會將通話轉接給真人服務專員。

這是透過自動產生的意圖意圖路徑達成。

服務專員回覆

在「代理程式回覆」部分,提供參照生成式答案的自訂回覆。在「代理程式說」部分使用 $request.knowledge.answers[0] 提供生成式答案。

進階自訂回覆

您可以在 $request.knowledge.* 中取得額外資訊,以便自訂回覆。這類資訊包括:

  • 答案的來源,包含下列欄位:程式碼片段、標題、URI。
  • 答案的建立基準信心指數。
  • 如果是常見問題資料儲存庫,則為與所選答案相應的問題。

下表提供存取這項資訊的範例。

資訊 存取方式
最佳答案中最佳來源的摘要 $sys.func.GET_FIELD($sys.func.GET($sys.func.IDENTITY($request.knowledge.sources[0]), 0), "snippet")
最佳答案中最高度相關來源的標題 $sys.func.GET_FIELD($sys.func.GET($sys.func.IDENTITY($request.knowledge.sources[0]), 0), "title")
頂端答案中,最常出現的來源連結 $sys.func.GET_FIELD($sys.func.GET($sys.func.IDENTITY($request.knowledge.sources[0]), 0), "uri")
最佳答案的來源數量 $sys.func.COUNT($sys.func.IDENTITY($request.knowledge.sources[0]))
知識問答數量 $sys.func.COUNT($request.knowledge.answers)
與最佳答案相應的問題 (僅限常見問題資料儲存庫答案) $request.knowledge.questions[0]
最佳答案的建立基準信心度 $request.knowledge.grounding_confidences[0]