資料儲存庫工具

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

資料儲存庫工具:控制台

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

建立資料儲存庫工具

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

將資料儲存庫工具新增至 fulfillment

  1. 前往最左側的選單列,然後選取「Flows」。
  2. 選取流程和頁面,然後按一下要與資料儲存庫搭配使用的「Route」(路徑)。
  3. 依序前往「Fulfillment」>「Data store tool」,然後從下拉式選單中選取資料儲存庫工具。
  4. 依序前往「Fulfillment」>「Agent responses」,按一下「+Add dialogue response」,然後點選「Data store tool response」。
  5. 設定回覆中顯示的來源連結和引用數量,並指定資料儲存庫回覆空白時的備用行為。在「Static fallback responses」(靜態備用回應) 欄位中輸入靜態備用回應。(選用) 勾選「生成式備用答覆」核取方塊,即可先使用 AI 生成回覆,再使用靜態備用回覆。如要自訂備用回覆,請按一下「Data store response」(資料儲存庫回覆) 表單視窗左上角的「wrench」(扳手) 圖示,開啟「Conditional response」(條件式回覆) 視窗。
  6. 按一下「Route」(路徑) 選單頂端的「Save」(儲存)。
  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"
            }
          ]
        }
      }
    ]
  }
}

(僅限依據 Playbook 運作的代理) 資料儲存庫工具範例

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

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

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

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

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

篩選最佳做法:

  • 指定可用於篩選的欄位,以及各欄位的有效值,讓教戰手冊瞭解建構有效篩選器的限制。舉例來說,存放菜單資訊的資料儲存庫可能包含 meal 欄位,有效值為「breakfast」、「lunch」和「dinner」,以及 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 參數會提供資料儲存庫工具回覆的答案。您可以提供多個範例,指示 Playbook 模型如何為與不同主題相關的使用者輸入內容,填入備用欄位。工具輸出內容不含任何程式碼片段,有助於縮短延遲時間及減少輸入詞元用量。

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

測試代理

部署 AI 代理

您可以透過多種方式部署代理:

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

特殊意圖

除了處理您提供的內容相關問題外,代理還能處理下列類型的問題:

  • 代理身分:代理會處理「你是誰?」或「你是真人嗎?」等問題。
  • 轉接給真人服務專員:代理會處理「我想與真人交談」或「我想與真人對話」等問題。

系統會自動產生意圖和意圖路徑,

代理回覆

在「Agent responses」(代理回覆) 部分,提供參照生成式答案的自訂回覆。在「Agent says」(代理回覆) 部分使用 $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]