設定呼叫 Vertex AI LLM 的生成式 AI 函式權限

本文說明如何設定權限,以執行生成式 AI 查詢。生成式 AI 查詢包含 AI.* 函式,可呼叫 Vertex AI 中的基礎模型,例如 AI.GENERATE

如要設定權限,以便執行使用 AI.* 函式的查詢,有兩種方法:

  • 使用使用者憑證執行查詢
  • 建立 BigQuery ML 連線,使用服務帳戶執行查詢

在多數情況下,您可以使用使用者憑證,並將 CONNECTION 引數留空。如果查詢工作預計會執行 48 小時以上,請使用 BigQuery 連線,並將其納入 CONNECTION 引數。

使用使用者憑證執行生成式 AI 查詢

如要使用使用者憑證執行生成式 AI 查詢,請使用 Google Cloud 控制台設定必要權限。請注意,如果您是專案擁有者,您已具備所有必要權限,因此無須採取任何行動。

必要的角色

如要取得執行查詢作業 (呼叫 Vertex AI 模型) 所需的權限,請要求管理員在專案中授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

將必要角色授予使用者或群組

您可以使用 Google Cloud 控制台,為主體授予必要角色。主體是執行查詢的使用者或群組,該查詢會使用 AI.* 函式呼叫 Vertex AI 基礎模型。

  1. 前往 Google Cloud 控制台的「IAM」(身分與存取權管理) 頁面。

    前往「IAM」頁面

  2. 選取專案。

  3. 如要將角色授予主體:

    1. 前往「IAM & Admin」(IAM 與管理) 頁面。

      前往「IAM & Admin」(IAM 與管理)

    2. 點按「 Grant access」(授予存取權)

      「新增主體」對話方塊隨即開啟。

    3. 在「New principals」(新增主體) 欄位中,輸入主體 ID,例如 my-user@example.com//iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com

    4. 在「指派角色」部分的「請選擇角色」,按一下下拉式箭頭。

    5. 搜尋並選取「Vertex AI 使用者」角色。

    6. 按一下 [Add another role] (新增其他角色)

    7. 在「指派角色」部分的「請選擇角色」,按一下下拉式箭頭。

    8. 搜尋或瀏覽「BigQuery Job User」角色並選取。

    9. 按一下 [儲存]

      按一下「儲存」,將角色授予主體

如要修改專案中已有角色的主體,請參閱為相同主體授予其他角色

如要瞭解將專案層級角色授予主體的其他方法,請參閱「以程式輔助方式授予或撤銷多個 IAM 角色」。

使用 BigQuery 連線執行生成式 AI 查詢

如要使用連線執行生成式 AI 查詢,請建立連線,然後授予連線建立的服務帳戶存取權。

建立連線

您可以設定 Cloud 資源連線,執行所有包含 AI.* 函式的生成式 AI 查詢。建立連線時,您會將執行查詢的權限授予服務帳戶。

選取下列選項之一:

控制台

  1. 前往「BigQuery」頁面

    前往「BigQuery」

  2. 點選左側窗格中的 「Explorer」

    醒目顯示的「Explorer」窗格按鈕。

    如果沒有看到左側窗格,請按一下「展開左側窗格」圖示 開啟窗格。

  3. 在「Explorer」窗格中展開專案名稱,然後按一下「Connections」

  4. 在「Connections」(連線) 頁面中,按一下「Create connection」(建立連線)

  5. 在「連線類型」中,選擇「Vertex AI 遠端模型、遠端函式、BigLake 和 Spanner (Cloud 資源)」

  6. 在「連線 ID」欄位中,輸入連線名稱。

  7. 在「位置類型」部分,選取連線位置。連線應與資料集等其他資源位於同一位置。

  8. 點選「建立連線」

  9. 點選「前往連線」

  10. 在「連線資訊」窗格中,複製服務帳戶 ID,以便在後續步驟中使用。

bq

  1. 在指令列環境中建立連線:

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID

    --project_id 參數會覆寫預設專案。

    更改下列內容:

    • REGION:您的連線區域
    • PROJECT_ID:您的 Google Cloud 專案 ID
    • CONNECTION_ID:連線的 ID

    建立連線資源時,BigQuery 會建立專屬的系統服務帳戶,並將其與連線建立關聯。

    疑難排解:如果收到下列連線錯誤訊息,請更新 Google Cloud SDK

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. 擷取並複製服務帳戶 ID,以供後續步驟使用:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID

    輸出結果會與下列內容相似:

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Terraform

使用 google_bigquery_connection 資源。

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。

下列範例會在 US 地區中建立名為 my_cloud_resource_connection 的 Cloud 資源連線:


# This queries the provider for project information.
data "google_project" "default" {}

# This creates a cloud resource connection in the US region named my_cloud_resource_connection.
# Note: The cloud resource nested object has only one output field - serviceAccountId.
resource "google_bigquery_connection" "default" {
  connection_id = "my_cloud_resource_connection"
  project       = data.google_project.default.project_id
  location      = "US"
  cloud_resource {}
}

如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。

準備 Cloud Shell

  1. 啟動 Cloud Shell
  2. 設定要套用 Terraform 設定的預設 Google Cloud 專案。

    每個專案只需要執行一次這個指令,而且可以在任何目錄中執行。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 設定檔中設定明確值,環境變數就會遭到覆寫。

準備目錄

每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。

  1. Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱的副檔名必須是 .tf,例如 main.tf。在本教學課程中,這個檔案稱為 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您正在學習教學課程,可以複製每個章節或步驟中的範例程式碼。

    將範例程式碼複製到新建立的 main.tf 中。

    視需要從 GitHub 複製程式碼。如果 Terraform 代码片段是端對端解決方案的一部分,建議您使用這個方法。

  3. 查看並修改範例參數,套用至您的環境。
  4. 儲存變更。
  5. 初始化 Terraform。每個目錄只需執行一次這項操作。
    terraform init

    如要使用最新版 Google 供應商,請加入 -upgrade 選項:

    terraform init -upgrade

套用變更

  1. 檢查設定,確認 Terraform 即將建立或更新的資源符合您的預期:
    terraform plan

    視需要修正設定。

  2. 執行下列指令,然後在提示中輸入 yes,套用 Terraform 設定:
    terraform apply

    等待 Terraform 顯示「Apply complete!」訊息。

  3. 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。

詳情請參閱「建立及設定 Cloud 資源連線」。

將存取權授予服務帳戶

如要執行使用生成式 AI.* 函式的查詢 (這類函式會呼叫 Vertex AI 模型),您必須授予適當權限給建立連線時建立的服務帳戶。如要執行呼叫 Vertex AI 基礎模型的函式,必須具備 Vertex AI 使用者角色 (roles/aiplatform.user)。

選取下列選項之一:

控制台

  1. 前往「IAM & Admin」(IAM 與管理) 頁面。

    前往「IAM & Admin」(IAM 與管理)

  2. 點按「 Grant access」(授予存取權)

    「新增主體」對話方塊隨即開啟。

  3. 在「新增主體」欄位,輸入先前複製的服務帳戶 ID。

  4. 在「指派角色」部分,按一下「新增角色」

  5. 搜尋「Vertex AI 使用者」角色,選取該角色,然後按一下「套用」

  6. 按一下 [儲存]

gcloud

使用 gcloud projects add-iam-policy-binding 指令

gcloud projects add-iam-policy-binding gs://PROJECT_ID \
--member="serviceAccount:$(bq show --format=prettyjson --connection $PROJECT_ID.$REGION.$CONNECTION_ID | jq -r .cloudResource.serviceAccountId)"
--role=roles/aiplatform.user

更改下列內容:

  • PROJECT_ID:專案名稱。
  • REGION:建立連線的位置。
  • CONNECTION_ID:您建立的連線名稱。

Terraform

使用 google_bigquery_connection 資源。

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。

以下範例會將 IAM 角色存取權授予 Cloud 資源連線的服務帳戶:


# This queries the provider for project information.
data "google_project" "default" {}

# This creates a cloud resource connection in the US region named my_cloud_resource_connection.
# Note: The cloud resource nested object has only one output field - serviceAccountId.
resource "google_bigquery_connection" "default" {
  connection_id = "my_cloud_resource_connection"
  project       = data.google_project.default.project_id
  location      = "US"
  cloud_resource {}
}

## This grants IAM role access to the service account of the connection created in the previous step.
resource "google_project_iam_member" "connectionPermissionGrant" {
  project = data.google_project.default.project_id
  role    = "roles/storage.objectViewer"
  member  = "serviceAccount:${google_bigquery_connection.default.cloud_resource[0].service_account_id}"
}

如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。

準備 Cloud Shell

  1. 啟動 Cloud Shell
  2. 設定要套用 Terraform 設定的預設 Google Cloud 專案。

    每個專案只需要執行一次這個指令,而且可以在任何目錄中執行。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 設定檔中設定明確值,環境變數就會遭到覆寫。

準備目錄

每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。

  1. Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱的副檔名必須是 .tf,例如 main.tf。在本教學課程中,這個檔案稱為 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您正在學習教學課程,可以複製每個章節或步驟中的範例程式碼。

    將範例程式碼複製到新建立的 main.tf 中。

    視需要從 GitHub 複製程式碼。如果 Terraform 代码片段是端對端解決方案的一部分,建議您使用這個方法。

  3. 查看並修改範例參數,套用至您的環境。
  4. 儲存變更。
  5. 初始化 Terraform。每個目錄只需執行一次這項操作。
    terraform init

    如要使用最新版 Google 供應商,請加入 -upgrade 選項:

    terraform init -upgrade

套用變更

  1. 檢查設定,確認 Terraform 即將建立或更新的資源符合您的預期:
    terraform plan

    視需要修正設定。

  2. 執行下列指令,然後在提示中輸入 yes,套用 Terraform 設定:
    terraform apply

    等待 Terraform 顯示「Apply complete!」訊息。

  3. 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。