建立及管理端點

本頁說明如何建立及管理 Google Distributed Cloud Connected API 端點上的 Gemini。

本文假設您已按照安裝需求所述,成功部署 Google 認證硬體。

必要條件

本節說明部署 Gemini on GDC 連線 API 端點前,必須完成的一次性步驟。

授予必要角色

您必須設定下列必要角色:

取得目標 Distributed Cloud connected 可用區的相關資訊

如要取得目標 Distributed Cloud connected 可用區的名稱,請按照下列步驟操作:

  1. 取得目標 Google Cloud 機構 ID 的名稱:

    gcloud organizations list
    
  2. 列出機構中的 Distributed Cloud connected 可用區: Google Cloud

    gcloud alpha zone-management zones list \
       --organization ORGANIZATION_ID \
       --location REGION
    

    更改下列內容:

    • ORGANIZATION_ID:目標 Google Cloud 機構的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。公開測試期間,系統僅支援 us-west2 區域。
  3. 取得目標區域的詳細資訊:

    gcloud alpha zone-management zones describe ZONE \
       --organization ORGANIZATION_ID \
       --location REGION
    

    更改下列內容:

    • ZONE:目標 Distributed Cloud connected 區域。
    • ORGANIZATION_ID:目標 Google Cloud 機構的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。公開測試期間,系統僅支援 us-west2 區域。

取得 Distributed Cloud connected 可用區中通過認證的機器相關資訊

如要取得 Distributed Cloud connected 可用區中目標認證機器的名稱,請按照下列步驟操作:

  1. 如「列出可用區中的機器」一文所述,列出目標 Distributed Cloud connected 可用區中的 Distributed Cloud connected 機器。

  2. 如「取得機器相關資訊」一文所述,取得目標機器的詳細資訊。

啟用本機 AI Platform API 和 Vertex AI API 服務

  1. 在目標 Distributed Cloud connected 可用區中啟用目標 Google Cloud 專案:

    gcloud alpha zone-management projects enable PROJECT_ID \
       --organization ORGANIZATION_ID \
       --location REGION \
       --zone ZONE
    

    更改下列內容:

    • PROJECT_ID:目標 Google Cloud 專案的 ID。
    • ORGANIZATION_ID:目標 Google Cloud 機構的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。
    • ZONE:目標 Distributed Cloud connected 區域。
  2. 在目標 Google Cloud 專案中啟用 AI Platform 服務:

    gcloud services enable aiplatform.googleapis.com --project PROJECT_ID
    

    PROJECT_ID 替換為目標專案的 ID。 Google Cloud

  3. 在 Distributed Cloud 連線區域啟用 Vertex AI API 服務:

    gcloud alpha zone-management services enable vertex --project PROJECT_ID \
       --location REGION \
       --zone ZONE
    

    更改下列內容:

    • PROJECT_ID:目標 Google Cloud 專案的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。
    • ZONE:目標 Distributed Cloud connected 區域。

設定端點以進行 DNS 解析

  1. 取得目標 Distributed Cloud 連線區域的代管 DNS 位址、頂層網域 (TLD) 和憑證授權單位 (CA) 憑證:

    gcloud alpha zone-management zones describe ZONE \
      --organization ORGANIZATION_ID \
      --location REGION
    

    更改下列內容:

    • ORGANIZATION_ID:目標 Google Cloud 機構的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。
    • ZONE:目標 Distributed Cloud connected 區域。

    以下範例說明這項指令的輸出內容:

    -----BEGIN CERTIFICATE-----
    MIIDATCCAemgAwIBAgIRAOsIG15loHwPBpjQe9FZYUAwDQYJKoZIhvcNAQELBQAw
    GjEYMBYGA1UEAxMPZ2RjZS1jbHVzdGVyLWNhMB4XDTI1MDcyOTEyMTAwNloXDTQ5
    MDcyMzEyMTAwNlowGjEYMBYGA1UEAxMPZ2RjZS1jbHVzdGVyLWNhMIIBIjANBgkq
    hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3YdoASubyzHdgZ0vIU5g1dxdFRT1T4wc
    o9FaRXftSTDfiNVNKj/vC+De9EZokpyLZkdZNep6p0TLJAsPZYq+yiTCiaJ6Ihwy
    3LBn8j2PessSIte2LUhkft1yCQqfkgpYfKcjM3IauIXETS961m0uJb4sntgLJ4nM
    Scb5vpW1f70D1V27bqnEsE7+rbxzeFTosHC+DGBcLqIE0ptdionm/4xoltH7yv2O
    qKfcc/46TyPwGRzxifEdNzjKZ1kRdTThESfW+L7TQNv6VF5TC4FPksYX/ID/X7Fz
    G9BRey0mikvc4J7qQIeyMRlpIKqRh/1FCdRDC9vVEQipT2Ls0MwwTwIDAQABo0Iw
    QDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUmES2
    pyMLOnnsKug8amFmenOaTr8wDQYJKoZIhvcNAQELBQADggEBADn71zo7cNFZ0kQE
    C2lS6b0DLz4Nd1yCz5fGDvxzcTRdOT60wyq/TAx1YlYse33cGk/cQ7RkVsM56UX1
    T8RMvi09UcEQG3wFrYuU62ZjXF1a3RrOnHxyvVdyvbUYAO5gvzBQrj4tMZYX9kL3
    6H/9FwXuHVyqWAm0xpWvZfszwJjY4C1VxoDwmRiZPYzTrWI6/rY0QmORgcZXLnPL
    OVufbAX30aRGdTRnVXxE0fKmXwzbtbSHilU5hJT7EQWMvV5hJfyNqdXG0gbrhrsk
    sB0yRjk5PHQd9pOMcXcYIgfNnUEcQl4qeSll3g5cZ+cRrcTO1USFLRo8dcbQpJ6Y
    6ykzvKs=
    -----END CERTIFICATE-----
    createTime: '2025-08-25T20:46:50.269384028Z'
    dnsServers:
    - ipAddress: 10.200.1.10
    tld: my-tld.google.private.goog
    name: organizations/my-organization/locations/my-region/zones/my-zone
    state: STATE_RUNNING
    

    將憑證儲存到名為 CA_CERTIFICATE_FILE 的檔案。您稍後會使用這個檔案產生服務帳戶金鑰。

  2. 為端點建立 DNS 設定,步驟如下:

    mkdir /etc/systemd/resolved.conf.d
    echo '[Resolve]
    DNS=DNS_SERVER_ADDRESS
    Domains=~TOP_LEVEL_DOMAIN' > /etc/systemd/resolved.conf.d/dns.conf
    sudo systemctl restart systemd-resolved
    

    更改下列內容:

    • DNS_SERVER_ADDRESS:DNS 伺服器的 IP 位址。
    • TOP_LEVEL_DOMAIN:端點的頂層網域。

部署 Gemini on GDC 連線 API 端點

如要部署 Gemini on GDC 連線 API 端點,請按照下列步驟操作:

  1. 建立端點:

    gcloud beta ai endpoints create \
       --project=PROJECT_ID \
       --region=REGION \
       --gdc-zone=ZONE \
       --display-name=ENDPOINT_NAME \
       --endpoint-id=ENDPOINT_ID
    

    更改下列內容:

    • PROJECT_ID:目標 Google Cloud 專案的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。
    • ZONE:目標 Distributed Cloud connected 區域。
    • ENDPOINT_NAME:這個端點的易記名稱。
    • ENDPOINT_ID:(選用) 這個端點的專屬 ID。 如省略此欄位,系統會產生隨機 ID。
  2. 部署模型:

    gcloud beta ai endpoints deploy-model ENDPOINT_ID \
      --display-name=ENDPOINT_NAME \
      --model=MODEL_PUBLIC_ID \
      --region=REGION
    

    更改下列內容:

    • ENDPOINT_ID:目標端點的 ID。
    • ENDPOINT_NAME:目標端點的名稱。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。
    • MODEL_PUBLIC_ID:模型的公開 ID。如需支援的型號清單,請參閱「支援的型號」。
  3. 列出已部署的端點:

    gcloud beta ai endpoints list \
      --project=PROJECT_ID \
      --region=REGION
    

    更改下列內容:

    • PROJECT_ID:目標 Google Cloud 專案的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。

    記下目標端點的 ID。

  4. 取得端點位址:

    gcloud beta ai endpoints describe ENDPOINT_ID \
      --project=PROJECT_ID \
      --region=REGION
    

    更改下列內容:

    • ENDPOINT_ID:目標端點的 ID。
    • PROJECT_ID:目標 Google Cloud 專案的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。
  5. 在目標 Distributed Cloud 連線區域中,為端點建立服務帳戶:

    gcloud alpha zone-management service-accounts create SERVICE_ACCOUNT \
      --project PROJECT_ID \
      --location REGION \
      --zone ZONE
    

    更改下列內容:

    • SERVICE_ACCOUNT:可唯一識別這個服務帳戶的有意義名稱。
    • PROJECT_ID:目標 Google Cloud 專案的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。
    • ZONE:目標 Distributed Cloud connected 區域。
  6. 取得目標 Distributed Cloud 連線區域的身分與存取權管理政策:

    gcloud alpha zone-management zones get-iam-policy ZONE \
      --project PROJECT_ID \
      --location REGION
    

    更改下列內容:

    • ZONE:目標 Distributed Cloud connected 區域。
    • PROJECT_ID:目標 Google Cloud 專案的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。
  7. AI Platform 開發人員角色指派給服務帳戶:

    gcloud alpha zone-management zones set-iam-policy POLICY_FILE \
      --project PROJECT_ID \
      --location REGION \
      --zone ZONE
    

    更改下列內容:

    • POLICY_FILE:包含角色指派政策的 JSON 或 YAML 檔案。
    • PROJECT_ID:目標 Google Cloud 專案的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。
    • ZONE:目標 Distributed Cloud connected 區域。

    以下是 JSON 格式的政策範例:

    "bindings": [
       {
          "role": "roles/aiplatform.geminiDeveloper",
          "members": [
          "serviceAccount": "projects/PROJECT_ID/locations/REGION/serviceAccounts/SERVICE_ACCOUNT"
          ]
       }
    ]
    "etag": ""
    

    以下是 YAML 格式的政策範例:

    bindings:
    - role: roles/aiplatform.geminiDeveloper
    members:
    - serviceAccount: projects/PROJECT_ID/locations/REGION/serviceAccounts/SERVICE_ACCOUNT
    etag: ""
    

    更改下列內容:

    • PROJECT_ID:目標 Google Cloud 專案的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。
    • SERVICE_ACCOUNT:可明確識別這個服務帳戶的名稱。
  8. 產生服務帳戶金鑰:

    gcloud alpha zone-management service-accounts keys create SA_KEY_FILE \
      --service-account SERVICE_ACCOUNT \
      --project PROJECT_ID \
      --location REGION \
      --ca-cert-path CA_CERTIFICATE_FILE
    

    更改下列內容:

    • SA_KEY_FILE:用於儲存產生的服務帳戶金鑰的檔案。
    • PROJECT_ID:目標 Google Cloud 專案的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。
    • CA_CERTIFICATE_FILE:您先前建立的 CA 憑證檔案。
  9. 取得端點的完整網址:

    gcloud beta ai endpoints describe ENDPOINT_ID \
      --project=PROJECT_ID \
      --region=REGION
    
  10. 列印服務帳戶的 ID 權杖:

    gcloud alpha zone-management auth print-identity-token \
      --cred-file=SA_KEY_FILE \
      --audience=ENDPOINT_URL
    

    更改下列內容:

    • SA_KEY_FILE:您先前建立的服務帳戶金鑰檔案。
    • ENDPOINT_URL:端點的完整網址,包括頂層網域尾碼。

列出 GDC 連線 API 端點上部署的 Gemini

如要列出 GDC 連線 API 端點上部署的 Gemini,請按照下列步驟操作:

gcloud beta ai endpoints list \
    --project=PROJECT_ID \
    --region=REGION \
    --gdc-zone=ZONE

更改下列內容:

  • PROJECT_ID:目標 Google Cloud 專案的 ID。
  • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。
  • ZONE:目標 Distributed Cloud connected 區域。

取得 Gemini on GDC connected API 端點的相關資訊

如要取得已部署的 Gemini on GDC 連線 API 端點相關資訊,請按照下列步驟操作:

gcloud beta ai endpoints describe ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION
   

更改下列內容:

  • ENDPOINT_ID:目標端點的 ID。
  • PROJECT_ID:目標 Google Cloud 專案的 ID。
  • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。

與 Google Distributed Cloud connected API 端點上的 Gemini 互動

Gemini on GDC 連線 API 端點支援透過 ChatCompletions API 和 ListAvailableModels API 互動。使用這些 API 以程式輔助方式與端點互動。

以下是透過 ChatCompletions API 提出的要求範例。這項要求產生的不記名權杖有效期限為 12 小時。

  1. 在 Shell 環境中設定下列變數:

    MODEL_NAME="gemini-2.0-flash-001"
    USER_CONTENT="Who invented the light bulb?"
    PROJECT="PROJECT_ID"
    LOCATION="REGION"
    IG_FQDN="inference-gateway.vai.$ZONE.google.private.goog"
    CRED_FILE="SA_KEY_FILE"
    API_ENDPOINT="https://${IG_FQDN}/v1/projects/${PROJECT}/locations/${LOCATION}/chat/completions"
    

    更改下列內容:

    • PROJECT_ID:目標 Google Cloud 專案的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。
    • SA_KEY_FILE:您先前建立的服務帳戶金鑰檔案。
  2. 列印不記名憑證:

    BEARER_TOKEN=$(gcloud alpha zone-management auth print-identity-token --cred-file="${CRED_FILE}" --audience="https://${IG_FQDN}")
    echo $BEARER_TOKEN
    
  3. 建構酬載:

    REQUEST_BODY=$(cat <<EOF
    {
    "model": "${MODEL_NAME}",
    "messages": [
       {
          "role": "system",
          "content": "Pizza for everyone!"
       },
       {
          "role": "user",
          "content": "${USER_CONTENT}"
       }
    ],
    "stream": false
    }
    EOF
    )
    
  4. 將要求傳送至端點:

    curl -X POST \
    "${API_ENDPOINT}" \
    -d "${REQUEST_BODY}" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer ${BEARER_TOKEN}" \
    -H "x-goog-user-project: projects/${PROJECT}"
    

多模態 ChatCompletions API 要求範例

以下是多模態 ChatCompletions API 要求酬載的範例,其中以文件做為輸入內容:

  1. 建構酬載:

    BASE64_IMAGE=$(base64 -w 0 JPEG_FILE)
    REQUEST_BODY=$(cat <<EOF
    {
    "model": "${MODEL_NAME}",
    "messages": [
       {
          "role": "user",
          "content": [
                {
                   "type": "text",
                   "text": "What is this image?"
                },
                {
                   "type": "image_url",
                   "image_url": {
                      "url": "data:image/jpeg;base64,${BASE64_IMAGE}"
                   }
                }
          ]
       }
    ]
    }
    EOF
    
    )
    
  2. 將要求傳送至端點:

    curl -X POST \
    "${API_ENDPOINT}" \
    -d "${REQUEST_BODY}" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer ${BEARER_TOKEN}" \
    -H "x-goog-user-project: projects/${PROJECT}"
    

ListAllAvailableModels API 要求範例

以下是 ListAllAvailableModels API 要求的範例:

BEARER_TOKEN=$(gcloud alpha zone-management auth print-identity-token --cred-file="${CRED_FILE}" --audience="https://${IG_FQDN}")
# The request body -d parameter is intentionally omitted.
grpcurl -insecure \
  -H "Authorization: Bearer ${BEARER_TOKEN}" \
  -H "x-goog-user-project: projects/${PROJECT}" \
  "${IG_FQDN}" \
  cloud.gdc.ai.inference.inferencegateway.GeminiMetadataService.ListAvailableModels

刪除 Gemini on Google Distributed Cloud connected API 端點

如要刪除 Gemini on GDC 連線 API 端點,請按照下列步驟操作:

  1. 取消部署模型:

    gcloud beta ai endpoints undeploy-model ENDPOINT_ID \
      --region=REGION \
      --gdc-zone=ZONE \
      --model=MODEL_PUBLIC_ID
    

    更改下列內容:

    • ENDPOINT_ID:目標端點的 ID。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。
    • ZONE:目標 Distributed Cloud connected 區域。
    • MODEL_PUBLIC_ID:模型的公開 ID。如需支援的型號清單,請參閱「支援的型號」。
  2. 刪除端點:

    gcloud beta ai endpoints delete ENDPOINT_ID \
       --project=PROJECT_ID \
       --region=REGION
    

    更改下列內容:

    • ENDPOINT_ID:目標端點的 ID。
    • PROJECT_ID:目標端點的名稱。
    • REGION:已建立目標 Distributed Cloud connected 區域的 Google Cloud 區域。

排解端點問題

如果 Gemini on GDC 連線的 API 端點發生故障,請與 Google 代表聯絡,以進行疑難排解。