透過 Data Insights 代理程式取得洞察資訊

資料洞察代理程式是由 Google 製作的代理程式,並從 BigQuery 資料提供資料洞察。使用「資料洞察」代理程式時,您不需要具備 SQL 相關知識,您就能根據資料做出明智的業務決策,資料分析師也能專注於更複雜的工作。

本頁說明專案管理員如何使用 Google Cloud 控制台REST API 授權、建立及部署 Data Insights 代理程式。 Google Cloud 本頁面也會說明使用者如何使用代理程式。

總覽

資料洞察代理程式的設計用途如下:

  • 瞭解使用者意圖:分析已連結資料來源的內容和使用者的自然語言查詢,瞭解使用者目標
  • 生成 SQL:根據這項理解,將使用者的問題轉換為語法和語意正確的 SQL 查詢。
  • 擷取資料:接著執行產生的 SQL,直接從連結的資料來源 (BigQuery 資料集) 擷取相關資料。
  • 提供洞察資料:以圖表、表格等視覺化方式呈現擷取的資料,或以文字摘要形式回覆使用者查詢。

您可以向資料洞察代理提出的查詢範例

以下列舉幾個可以向資料洞察代理程式提出的查詢:

  • 資料匯總和視覺化
    • 「與去年第 2 季相比,今年第 2 季拉丁美洲地區的銷售額如何?」
    • 「繪製長條圖,顯示該區域前 5 大國家/地區的比較結果。」
  • 趨勢分析
    • 「過去 6 個月的外撥電話量有何變化?請按地點細分。」
    • 「Analyze the booking patterns for the hotels in Lisbon rated higher than 3 stars」(分析里斯本評等高於 3 星的飯店訂房模式)
  • 資料採礦
    • 「顧客購物時,哪些因素與總銷售價值相關?請提供顯示關係的熱視圖。」
  • 分析和報表
    • 「請匯總商機和帳戶表格,並製作簡短報告,重點說明任何重要趨勢。」

事前準備

如要在 Gemini Enterprise 中使用 Data Insights 代理程式,請按照下列步驟操作:

授予 BigQuery 資料存取權

如要讓 Data Insights 代理程式查看及查詢 BigQuery 資料,請將身分與存取權管理 (IAM) 角色授予代理程式的使用者:

工作流程

設定及使用資料洞察代理程式的整體工作流程如下:

取得授權詳細資料

請按照下列步驟設定授權。您必須取得這些詳細資料,才能授權資料洞察代理程式連線至 BigQuery 資料。

  1. 在 Google Cloud 控制台中,前往「APIs & Services」(API 和服務) 中的「Credentials」(憑證) 頁面。

    前往「憑證」

  2. 選取 Google Cloud 包含要讓代理程式查詢的 BigQuery 資料集的專案。

  3. 按一下「建立憑證」,然後選取「OAuth 用戶端 ID」

  4. 在「應用程式類型」中,選取「網頁應用程式」

  5. 在「已授權的重新導向 URI」部分,新增下列 URI:

    • https://vertexaisearch.cloud.google.com/oauth-redirect
    • https://vertexaisearch.cloud.google.com/static/oauth/oauth.html
  6. 點選「建立」

  7. 在「OAuth client created」(已建立 OAuth 用戶端) 面板中,按一下「Download JSON」(下載 JSON)

    下載的 JSON 檔案包含所選Google Cloud 專案的下列詳細資料:您需要下列詳細資料,才能建立授權資源:

    • 用戶端 IDCLIENT_ID
    • 授權 URI

    如要授權應用程式,您必須使用 OAuth 憑證 JSON 檔案中的詳細資料,建構特定的授權 URI。複製下列範本,並將預留位置替換為特定值。

    授權 URI 範本

    https://accounts.google.com/o/oauth2/v2/auth?client_id=YOUR_CLIENT_ID&redirect_uri=https%3A%2F%2Fvertexaisearch.cloud.google.com%2Fstatic%2Foauth%2Foauth.html&scope=YOUR_CUSTOM_SCOPES&include_granted_scopes=true&response_type=code&access_type=offline&prompt=consent
    

    參數細目

    為確保 URI 正常運作,請檢查下列欄位:

    參數 值或動作
    client_id client_id 替換為下載的 JSON 檔案中的值。
    redirect_uri 請勿變更。必須為 https://vertexaisearch.cloud.google.com/static/oauth/oauth.html
    scope 請採取行動:列出應用程式需要的 Google API 範圍,例如 https://www.googleapis.com/auth/bigquery。如果使用多個範圍,請以空格分隔,網址中會顯示為 %20
    include_granted_scopes 必須為 true
    response_type 必須是code才能取得授權碼。
    access_type 設為 offline,確保您收到更新權杖。
    prompt 設為 consent,確保系統一律會向使用者顯示同意畫面。
    • 權杖 URIhttps://oauth2.googleapis.com/token
    • 用戶端密鑰CLIENT_SECRET

使用 Google Cloud 控制台設定代理程式

本節說明如何使用 Google Cloud 控制台授權、建立及部署 Data Insights 代理程式執行個體。您也可以新增使用者權限,決定哪些人可以存取建立的代理程式。

授權及建立代理程式執行個體

按照下列步驟授權及建立 Data Insights 代理程式執行個體:

  1. 前往 Google Cloud 控制台的「Gemini Enterprise」

    前往 Gemini Enterprise

  2. 選取要建立代理程式的應用程式。

  3. 按一下選單中的「代理程式」

    「代理程式」頁面會顯示現有代理程式。

    click-agent
    按一下代理程式

  4. 按一下「新增代理人」

    add-agent
    按一下「新增代理」

  5. 在「建立代理」窗格中,選擇「Google 代理」,然後按一下「新增」

    google-agent
    選擇 Google 代理商

  6. 按一下資料代理程式資訊卡中的「建立」

    create-agent
    建立資料代理程式

  7. 在「授權」中,按一下「新增授權」,然後輸入授權詳細資料。詳情請參閱「取得授權」。

    authorize
    輸入授權詳細資料

  8. 按一下 [完成]

  9. 點選「下一步」

  10. 請按以下方式設定代理程式:

    1. 輸入代理程式名稱和說明。

    2. 在「BigQuery 資料集」中,按一下「瀏覽」,然後執行下列其中一項操作:

      • 選取可用的資料集,然後按一下「選取」
      • 輸入所需 BigQuery 資料集的路徑,按一下「搜尋」,選取該資料集,然後選取「選取」
    3. 選用:按一下「顯示更多」,查看進階選項。

    4. 選取正確的資料表存取權選項。如要強制執行許可清單

      或禁止使用的資料表,請指定受限資料表的路徑。

    5. 選用:定義自然語言查詢設定,自訂自然語言到 SQL 的轉換。 如要提升代理的輸出內容品質,可以提供自然語言查詢、預期 SQL 輸出內容和預期回覆的範例。

      • 結構定義說明:以自然語言描述 BigQuery 資料集結構定義的字串。
      • 將自然語言查詢轉換為 SQL 程式碼的提示詞:以自然語言查詢,並轉換為 SQL 指令。
    6. 選用:新增轉換為 SQL 查詢的自然語言查詢範例:

      • 查詢:自然查詢的範例,必須轉換為 SQL 查詢。例如「加州客戶的姓名和電子郵件地址為何」
      • 預期的 SQL:字串,說明對應自然語言查詢的範例 SQL 查詢。舉例來說,假設您有一個名為 customers 的 BigQuery 資料表。接著,預期的 SQL 查詢可以是 SELECT customer_name, email FROM customers WHERE state = 'California'
      • 預期回應:執行預期 SQL 查詢後,提供查詢預期答案的字串。

      例如:

      Here are the names and email addresses of your customers in California: \
      * Customer name: Lara B, Email address: 222larabrown@gmail.com \
      * Customer name: Alex A, Email address: baklavainthebalkans@gmail.com \
      * Customer name: Bola C, Email address: cloudysanfrancisco@gmail.com \
      
  11. 點選「建立」

    Data Insights 代理程式執行個體會顯示在「代理程式」清單中。
    如要開始使用代理程式,請等到執行個體的「Agent state」(代理程式狀態) 欄顯示「Enabled」(已啟用)

使用 REST API 設定代理程式

本節說明如何使用 REST API 授權、建立及部署 Data Insights 代理程式例項。

授權代理程式

管理員可以在 Gemini Enterprise 中建立授權資源。這樣一來,資料洞察代理程式就能存取 BigQuery 資料。

  1. 建立授權資源。

    REST

    下列範例說明如何使用 authorizations.create 方法建立授權資源。

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -H "X-Goog-User-Project: PROJECT_NUMBER" \
     "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/LOCATION/authorizations?authorizationId=AUTHORIZATION_ID" \
     -d '{
       "name": projects/PROJECT_NUMBER/locations/LOCATION/authorizations/AUTHORIZATION_ID",
       "serverSideOauth2": {
         "clientId": "CLIENT_ID",
         "clientSecret": "CLIENT_SECRET",
         "authorizationUri": "AUTHORIZATION_URI",
         "tokenUri": "https://oauth2.googleapis.com/token"
    }
    }'
    

    更改下列內容:

    • PROJECT_NUMBER: Google Cloud 專案的編號。
    • LOCATION:您 Google Cloud 專案的位置。
    • AUTHORIZATION_ID:您必須提供的 ID,用於識別授權資源。
    • CLIENT_ID:您在上一個步驟中取得的用戶端 ID。
    • CLIENT_SECRET:您在上一個步驟中取得的用戶端密鑰。
    • AUTHORIZATION_URI:您在上一個步驟中取得的授權 URI。

建立代理程式執行個體

Google Cloud 專案管理員可以建立 Data Insights 代理程式例項。這需要您想透過代理程式查詢的 BigQuery 資料的專案 ID 和資料集 ID。

REST

以下範例說明如何使用 agents.create 方法建立 Data Insights 代理程式執行個體。如要瞭解可新增至這個範例的進階欄位,請參閱「為代理程式新增進階設定」。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_NUMBER" \
  "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents" \
  -d '{
    "displayName": "AGENT_DISPLAY_NAME",
    "description": "AGENT_DESCRIPTION",
    "icon": {
       "uri": "AGENT_ICON_URI"
     },
    "managed_agent_definition": {
      "tool_settings": {
        "tool_description": "AGENT_DESCRIPTION"
      },
      "data_science_agent_config": {
        "bq_project_id": "BIGQUERY_PROJECT_ID",
        "bq_dataset_id": "BIGQUERY_DATASET_ID"
      }
    },
    "authorization_config": {
      "tool_authorizations" : [
        "AUTHORIZATION_RESOURCE_NAME"
      ]
    }
  }'

更改下列內容:

  • PROJECT_NUMBER: Google Cloud 專案的編號。
  • LOCATION:Gemini Enterprise 應用程式的位置。
  • APP_ID:應用程式 ID。
  • AGENT_DISPLAY_NAME:Data Insights 代理程式執行個體的名稱。
  • AGENT_ICON_URI:選用欄位,可提供代理程式圖示的 URI。
  • AGENT_DESCRIPTION:Data Insights 代理程式例項的說明,指出代理程式的用途或 BigQuery 資料來源詳細資料。請注意,這個欄位僅供人類使用,不會用於向基礎代理程式提供指令。如要為 Agent 提供系統指令,請使用 nlQueryConfig 物件,特別是 schemaDescriptionnl2sqlPrompt
  • BIGQUERY_PROJECT_ID:包含 BigQuery 資料集的專案的專案 ID。Google Cloud
  • BIGQUERY_DATASET_ID:包含要查詢資料的 BigQuery 資料集 ID。
  • AUTHORIZATION_RESOURCE_NAME:您在上一個章節中取得的授權資源名稱。

為代理程式新增進階設定

您可以選擇定義 nlQueryConfig 欄位,提供自然語言翻譯為 SQL 的專屬自訂項目。您也可以使用自然語言查詢、預期的 SQL 輸出內容和預期的回應,提供 SQL 範例。這有助於提升代理程式的輸出內容品質。「nl2sqlExample」欄位是重複欄位,提供的範例數量沒有限制。下列程式碼片段顯示如何設定這些進階欄位:

"dataScienceAgentConfig": {
  "nlQueryConfig": {
    "nl2sqlPrompt": "NL_TO_SQL_INSTRUCTIONS",
    "nl2sqlExample": [{
      "query": "EXAMPLE_NL_QUERY",
      "expectedSql": "EXPECTED_SQL_QUERY",
      "expectedResponse": "EXPECTED_SQL_RESPONSE"
    }],
    "schemaDescription": "NL_DESCRIPTION_OF_BQ_DATASET"
  }
}

更改下列內容:

  • NL_TO_SQL_INSTRUCTIONS:以自然語言表示的查詢, 轉換為 SQL 指令。

  • EXAMPLE_NL_QUERY:自然語言查詢範例,必須轉換為 SQL 查詢。例如:「位於加州的顧客姓名和電子郵件地址為何?」

  • EXPECTED_SQL_QUERY:字串,說明與自然查詢對應的範例 SQL 查詢。舉例來說,假設您有名為 customers 的 BigQuery 資料表。接著,預期的 SQL 查詢可以是「SELECT customer_name, email FROM customers WHERE state = 'California'」。

  • EXPECTED_SQL_RESPONSE:字串,提供查詢的預期答案和預期 SQL 查詢。例如:

    
    Here are the names and email addresses of your customers in California: \
    * Customer name: Lara B, Email address: 222larabrown@gmail.com \
    * Customer name: Alex A, Email address: baklavainthebalkans@gmail.com \
    * Customer name: Bola C, Email address: cloudysanfrancisco@gmail.com \
    
    
  • NL_DESCRIPTION_OF_BQ_DATASET:以自然語言描述 BigQuery 資料集結構定義的字串。

部署執行個體

建立 Data Insights 代理程式執行個體後,管理員可以部署該執行個體,供使用者使用。

REST

  1. 部署代理程式。 以下範例說明如何使用 agents.deploy 方法部署建立的代理程式。部署代理程式是長時間執行的作業 (LRO)。

    curl -X POST \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -H "X-Goog-User-Project: PROJECT_NUMBER" \
     "https://discoveryengine.googleapis.com/v1alpha/AGENT_RESOURCE_NAME:deploy" \
     -d '{
       "name":"AGENT_RESOURCE_NAME"
     }'
    

    更改下列內容:

    • PROJECT_NUMBER: Google Cloud 專案的編號。
    • AGENT_RESOURCE_NAME:您在上一個步驟中建立代理程式時取得的代理程式資源名稱。
  2. 取得部署作業的狀態。 以下範例說明如何使用 operations.get 方法取得部署作業的狀態。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://discoveryengine.googleapis.com/v1alpha/DEPLOY_OPERATION_NAME"
    

    DEPLOY_OPERATION_NAME 替換為您在上一個步驟部署代理程式時取得的 LRO 名稱。

    在回應中,如果 done 欄位的值為 true,則表示部署作業已完成。如果 done 欄位的值為 false,表示部署作業正在進行中。

取得代理程式規格

您可以使用 API 擷取 Data Insights 代理程式的設定和規格,例如 BigQuery 資料表允許清單和封鎖清單。如要取得代理程式的規格,請傳送 GET 要求:

REST

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents/AGENT_ID"

更改下列內容:

  • PROJECT_ID:專案 ID。
  • APP_ID:應用程式 ID。
  • LOCATION:Gemini Enterprise 應用程式的位置。
  • AGENT_ID:代理程式的 ID。

回覆範例

如果要求成功,系統會傳回類似以下的 JSON 回應:

{
  "name": "projects/12345/locations/global/collections/default_collection/engines/my-app/assistants/default_assistant/agents/my-agent",
  "displayName": "Data Science Agent",
  "description": "An agent that helps query BigQuery data.",
  "managedAgentDefinition": {
    "dataScienceAgentConfig": {
      "bqProjectId": "my-bq-project",
      "bqDatasetId": "my-bq-dataset",
      "allowlistTables": [
        "sales_data_2024",
        "inventory_levels"
      ],
      "blocklistTables": [
        "employee_salaries",
        "pii_users"
      ]
    }
  },
  "authorizationConfig": {
    "toolAuthorizations": [
      "projects/12345/locations/global/authorizations/test-authorization"
    ]
  },
  "state": "ENABLED",
  "createTime": "2024-05-20T10:00:00Z",
  "updateTime": "2024-05-20T10:05:00Z"
}

新增或修改使用者及其權限

按照下列步驟,在 Data Insights 代理程式執行個體中新增或修改主體,並指派特定 Identity and Access Management (IAM) 角色:

控制台

  1. 前往 Google Cloud 控制台的「Gemini Enterprise」

    前往 Gemini Enterprise

  2. 選取含有 Data Insights 代理程式執行個體的應用程式。

  3. 按一下選單中的「代理程式」

    「代理程式」頁面會顯示現有代理程式。

  4. 按一下要新增或修改使用者的代理程式。舉例來說,按一下「Data insights agent」(資料洞察代理程式) 執行個體。

    根據預設,新建立的代理程式沒有任何使用者。

    data-insights-agent
    按一下「資料洞察代理程式」執行個體
  5. 按一下「使用者權限」

  6. 在「Permissioned users」(已授權使用者) 表格中,按一下「Add user」(新增使用者)

    add-user
    前往新增使用者
  7. 從可用清單中選取「成員類型」

    • 如要新增「使用者」或「群組」,請輸入電子郵件地址做為成員字串,然後選取角色。

    • 如果是工作團隊身分集區,請輸入有效主體做為成員字串,然後選取角色。

    • 為「所有使用者」選取角色。

    member-type
    選取成員類型
  8. 按一下 [儲存]

    IAM 政策會更新,使用者也會新增至授權使用者清單。

  9. 如要刪除指派的權限,請按一下「動作」欄下方的 ,然後按一下「刪除」

    刪除
    移除角色

變更執行個體的工作狀態

建立 Data Insights 代理程式執行個體後,系統預設會啟用代理程式。您可以按照下列步驟,將工作狀態變更為「預覽」、「停用」、「暫停」或「刪除」

控制台

  1. 前往 Google Cloud 控制台的「Gemini Enterprise」

    前往 Gemini Enterprise

  2. 選取含有 Data Insights 代理程式執行個體的應用程式。

  3. 按一下選單中的「代理程式」

    「代理程式」頁面會顯示現有代理程式。

    add-user
    前往新增使用者
  4. 在代理程式的「動作」欄下方,按一下 ,然後選取下列任一選項:

    • 「預覽」:在新分頁中開啟代理程式。
    • 停用:只有建立者能存取代理程式。
    • 暫停:暫時停用代理程式。不過,只要使用者有權存取代理程式,無論權限程度為何,都能看到代理程式。
    • 刪除:刪除代理程式執行個體。
    作業
    選取代理程式的其中一項動作。

使用代理程式

本節說明使用者如何與資料洞察代理程式互動,從 BigQuery 資料取得洞察資訊。您可以透過 Gemini Enterprise 應用程式使用代理程式,也可以透過 API 以程式輔助方式使用。

透過應用程式使用代理

請按照下列步驟,使用虛擬服務專員取得資料洞察:

應用程式

  1. 在應用程式導覽選單中,按一下「代理程式」

  2. 按一下「查看所有代理人」

    view-all-agent
    查看所有代理程式
  3. 從顯示的服務專員清單或最近清單中選取服務專員。

    data-insights-agent
    選擇代理程式執行個體

  4. 如果服務專員需要額外授權,請點選「授權」,並提供授權詳細資料

  5. 在搜尋框中執行下列操作:

    • 按一下 圖示,將檔案新增為代理程式可使用的額外資料來源。

    • 按一下 圖示即可管理資料。

  6. 輸入問題或提示,然後按下 Enter 鍵。

您也可以使用 API,以程式輔助方式與資料洞察代理程式互動。

使用 API 存取資料洞察代理程式

授權使用者可透過 API 使用資料洞察代理程式。如要以程式輔助方式與代理程式互動,請向 streamAssist 方法發出 POST 要求。

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant:streamAssist" \
  -d '{
    "query": {
      "text": "QUERY"
    },
    "agentsSpec": {
      "agentSpecs": {
        "agentId": "AGENT_ID"
      }
    }
  }'

更改下列內容:

  • PROJECT_ID:專案 ID。
  • LOCATION:Gemini Enterprise 應用程式的位置 (例如 global)。
  • APP_ID:應用程式 ID。
  • QUERY:自然語言查詢 (例如:「Generate a list of the top 10 customers by spending and generate a chart with their most purchased items」(依支出產生前 10 大顧客清單,並產生圖表顯示他們最常購買的項目))。
  • AGENT_ID:代理程式的 ID。

回覆範例

streamAssist 方法會傳回 AssistAnswer 物件清單。以下範例顯示回應串流,其中包含代理程式的內部推理和最終答案。如果要求成功,您會收到類似下列截斷回應的 JSON 回應。

  [
    {
      "answer": {
        "state": "IN_PROGRESS",
        "replies": [
          {
            "groundedContent": {
              "content": {
                "role": "model",
                "text": "",
                "thought": true
              }
            }
          }
        ]
      },
      "assistToken": "M8gKCwiBkYrMBhDUqLFcEiQ2OTgyNWVlMS0wMDAwLTJjMzUtYjVmOS1mNDAzMDQzYmFjNmM"
    },
    {
      "answer": {
        "state": "IN_PROGRESS",
        "replies": [
          {
            "groundedContent": {
              "content": {
                "role": "model",
                "text": "I am an expert data analyst with access to the `spark-assistant-test.bikestores` dataset...",
                "thought": true
              }
            }
          }
        ]
      },
      "assistToken": "M8gKCwiBkYrMBhDUqLFcEiQ2OTgyNWVlMS0wMDAwLTJjMzUtYjVmOS1mNDAzMDQzYmFjNmM"
    },
    {
      "answer": {
        "name": "projects/12345/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID/assistAnswers/ANSWER_ID",
        "state": "SUCCEEDED",
            "groundedContent": {
              "content": {
                "role": "model",
                "text": "I am an expert data analyst with access to the `spark-assistant-test.bikestores` dataset..."
              }
            }
          }
        ]
      },
      "sessionInfo": {
        "session": "projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/sessions/SESSION_ID"
      }
    }
  ]

回應欄位定義

欄位 說明
answer.state 生成答案的狀態。代理程式生成內容時會傳回 IN_PROGRESS,完成時則傳回 SUCCEEDED
answer.replies 內含生成的內容元素的清單。
replies.groundedContent.content.text 專員生成的文字內容。
replies.groundedContent.content.thought 如果 true,表示文字是代理的內部推論過程 (例如 SQL 公式),而非最終回覆。
sessionInfo.session 工作階段的專屬 ID。您可以在後續的 API 呼叫中使用這個資源名稱,以保留對話記錄。