透過 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) 角色授予代理程式的使用者:

工作流程

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

取得授權詳細資料

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

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

    前往「憑證」

  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 用戶端」面板中,按一下「下載 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 代理程式執行個體會顯示在「代理程式」清單中。
    如要開始使用代理程式,請等待執行個體的「代理程式狀態」欄顯示「已啟用」

使用 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 資料來源詳細資料。
  • BIGQUERY_PROJECT_ID:包含 BigQuery 資料集的專案 ID。Google Cloud
  • BIGQUERY_DATASET_ID:包含要查詢資料的 BigQuery 資料集 ID。
  • AUTHORIZATION_RESOURCE_NAME:您在前一節中取得的授權資源名稱。

為代理程式新增進階設定

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

"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 查詢。例如:「What are the names and email addresses of the customers based in California」(位於加州的顧客姓名和電子郵件地址為何?)

  • 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. 在代理商的「動作」欄下方,按一下 ,然後選取下列任一選項:

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

使用代理程式

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

透過應用程式使用代理

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

應用程式

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

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

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

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

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

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

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

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

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

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

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

授權使用者可透過 API 使用 Data Insights 代理程式。如要以程式輔助方式與代理程式互動,請向 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 呼叫可以使用這個資源名稱,以保留對話記錄。