資料洞察代理程式是由 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 代理程式,請按照下列步驟操作:
- 按照操作說明開始使用 Gemini Enterprise。
- 按照操作說明取得 Gemini Enterprise 授權。
- 如要存取資料洞察代理程式,請與 Google 帳戶管理員聯絡。
- 準備 BigQuery 資料。詳情請參閱 BigQuery 說明文件。
- 如要充分發揮代理程式的效用,請先瞭解 BigQuery 資料集中的資料。
授予 BigQuery 資料存取權
如要讓 Data Insights 代理程式查看及查詢 BigQuery 資料,請將身分與存取權管理 (IAM) 角色授予代理程式的使用者:
- BigQuery 資料檢視器 (
roles/bigquery.dataViewer) - BigQuery Job User (
roles/bigquery.jobUser) - BigQuery Metadata Viewer (
roles/bigquery.metadataViewer)
工作流程
設定及使用資料洞察代理程式的整體工作流程如下:
取得授權詳細資料
請按照下列步驟設定授權。您必須取得這些詳細資料,才能授權 Data Insights 代理程式連線至 BigQuery 資料。
在 Google Cloud 控制台中,前往「API 和服務」中的「憑證」頁面。
選取 Google Cloud 包含要讓代理程式查詢的 BigQuery 資料集的專案。
按一下「建立憑證」,然後選取「OAuth 用戶端 ID」。
在「應用程式類型」中,選取「網頁應用程式」。
在「已授權的重新導向 URI」部分,新增下列 URI:
https://vertexaisearch.cloud.google.com/oauth-redirecthttps://vertexaisearch.cloud.google.com/static/oauth/oauth.html
點選「建立」。
在「已建立 OAuth 用戶端」面板中,按一下「下載 JSON」。
下載的 JSON 檔案包含所選Google Cloud 專案的下列詳細資料:您需要下列詳細資料,才能建立授權資源:
- 用戶端 ID:CLIENT_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,確保系統一律會向使用者顯示同意畫面。- 權杖 URI:
https://oauth2.googleapis.com/token - 用戶端密鑰:CLIENT_SECRET
使用 Google Cloud 控制台設定代理程式
本節說明如何使用 Google Cloud 控制台授權、建立及部署 Data Insights 代理程式執行個體。您也可以新增使用者權限,決定哪些人可以存取建立的代理程式。
授權及建立代理程式執行個體
按照下列步驟授權及建立 Data Insights 代理程式執行個體:
前往 Google Cloud 控制台的「Gemini Enterprise」。
選取要建立代理程式的應用程式。
按一下選單中的「代理程式」。
「代理程式」頁面會顯示現有代理程式。
按一下代理程式 按一下「新增代理人」。
按一下「新增代理」 在「建立代理」窗格中,選擇「Google 代理」,然後按一下「新增」。
選擇 Google 代理商 按一下資料代理程式資訊卡中的「建立」。
建立資料代理程式 在「授權」中,按一下「新增授權」,然後輸入授權詳細資料。詳情請參閱「取得授權」。
輸入授權詳細資料 按一下 [完成]。
點選「下一步」。
請按以下方式設定代理程式:
輸入代理程式名稱和說明。
在「BigQuery 資料集」中,按一下「瀏覽」,然後執行下列其中一項操作:
- 選取可用的資料集,然後按一下「選取」。
- 輸入所需 BigQuery 資料集的路徑,按一下「搜尋」,選取該資料集,然後選取「選取」。
選用:按一下「顯示更多」,即可查看進階選項。
選取正確的資料表存取權選項。如要強制執行許可清單
或封鎖清單,請指定受限資料表的路徑。
選用:定義自然語言查詢設定,自訂自然語言到 SQL 的轉換。 如要提升代理的輸出內容品質,可以提供自然語言查詢、預期 SQL 輸出內容和預期回覆的範例。
- 結構定義說明:以自然語言描述 BigQuery 資料集結構定義的字串。
- 將自然語言查詢轉換為 SQL 程式碼的提示詞:以自然語言查詢,並轉換為 SQL 指令。
選用:新增轉換為 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 \
點選「建立」。
Data Insights 代理程式執行個體會顯示在「代理程式」清單中。
如要開始使用代理程式,請等待執行個體的「代理程式狀態」欄顯示「已啟用」。
使用 REST API 設定代理程式
本節說明如何使用 REST API 授權、建立及部署 Data Insights 代理程式例項。
授權代理程式
管理員可以在 Gemini Enterprise 中建立授權資源。這樣一來,資料洞察代理程式就能存取 BigQuery 資料。
建立授權資源。
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 CloudBIGQUERY_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
部署代理程式。 以下範例說明如何使用
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:您在上一個步驟中建立代理程式時取得的代理程式資源名稱。
取得部署作業的狀態。 下列範例說明如何使用
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) 角色:
控制台
前往 Google Cloud 控制台的「Gemini Enterprise」。
選取含有 Data Insights 代理程式執行個體的應用程式。
按一下選單中的「代理程式」。
「代理程式」頁面會顯示現有代理程式。
按一下要新增或修改使用者的代理程式。舉例來說,按一下「Data insights agent」(資料洞察代理程式) 執行個體。
根據預設,新建立的代理程式沒有任何使用者。
按一下「資料洞察代理程式」執行個體 按一下「使用者權限」。
在「Permissioned users」(已授權使用者) 表格中,按一下「Add user」(新增使用者)。
前往新增使用者 從可用清單中選取「成員類型」:
如要新增使用者或群組,請輸入電子郵件地址做為成員字串,然後選取角色。
如果是工作團隊身分集區,請輸入有效主體做為成員字串,然後選取角色。
為「所有使用者」選取角色。
選取成員類型 按一下 [儲存]。
IAM 政策會更新,使用者也會新增至授權使用者清單。
如要刪除指派的權限,請按一下「動作」欄下方的 ,然後按一下「刪除」。
移除角色
變更執行個體的工作狀態
建立 Data Insights 代理程式執行個體後,系統預設會啟用代理程式。您可以按照下列步驟,將工作狀態變更為「預覽」、「停用」、「暫停」或「刪除」:
控制台
前往 Google Cloud 控制台的「Gemini Enterprise」。
選取含有 Data Insights 代理程式執行個體的應用程式。
按一下選單中的「代理程式」。
「代理程式」頁面會顯示現有代理程式。
前往新增使用者 在代理商的「動作」欄下方,按一下 ,然後選取下列任一選項:
- 「預覽」:在新分頁中開啟代理程式。
- 停用:只有建立者能存取代理程式。
- 暫停:暫時停用代理程式。不過,只要使用者有權存取代理,無論權限程度為何,都能看到代理。
- 刪除:刪除代理程式執行個體。
選取代理程式的其中一個動作。
使用代理程式
本節說明終端使用者如何與 Data Insights 代理程式互動,從 BigQuery 資料取得洞察資訊。您可以透過 Gemini Enterprise 應用程式使用代理程式,也可以透過 API 以程式輔助方式使用。
透過應用程式使用代理
如要使用虛擬服務專員取得資料洞察,請按照下列步驟操作:
應用程式
在應用程式導覽選單中,按一下「代理程式」。
按一下「查看所有代理人」。
查看所有代理程式 從顯示的服務專員清單或最近清單中選取服務專員。
選擇代理程式執行個體 如果服務專員需要額外授權,請點選「授權」,並提供授權詳細資料。
在搜尋框中執行下列操作:
按一下 圖示,將檔案新增為代理程式可使用的額外資料來源。
按一下 圖示即可管理資料。
輸入問題或提示,然後按下 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 呼叫可以使用這個資源名稱,以保留對話記錄。 |