您可以使用標籤,在 generateContent 和 rawPredict 等 API 呼叫中新增自訂中繼資料。本頁面說明標籤的定義,以及如何使用標籤細分帳單費用。
什麼是標籤?
標籤是一種鍵/值組合,可指派給 generateContent 和 rawPredict 等 API 呼叫。有助於在大規模環境下整理呼叫,並依所需精細程度管理用量和成本。您可以為每項呼叫加上標籤,並根據標籤篩選呼叫。標籤相關資訊會轉送到記錄和結帳系統,方便依照標籤詳細分析用量和帳單費用。使用內建的帳單報表,可依標籤篩選費用並加以分組。此外,亦可使用標籤查詢帳單資料匯出檔。如要瞭解如何在建立標籤後使用標籤,請參閱標籤總覽中的範例。
Agent Platform 支援兩種標籤:要求主體標籤 (會傳送至 Cloud Billing) 和標頭標籤 (會顯示在推論要求中繼資料記錄中)。下一節將比較這兩者。
根據用途選擇標籤
Agent Platform 提供兩種標籤機制。兩者的設定方式不同、目的地不同,且會顯示在推論要求中繼資料記錄的不同欄位中。您可以擇一使用,也可以在支援的情況下,在同一要求中同時使用兩者。
要求主體標籤的運作方式如下:
- 您可以在要求主體的
labels欄位中設定這些值。 - 他們會存取 Cloud Billing 和推論要求中繼資料記錄。
- 這些標籤會顯示在記錄項目的
labels欄位中。 - 支援即付即用流量。
- 如果是 Claude 等合作夥伴模型,要求標籤會透過
X-Vertex-AI-Labels標頭傳送,而非要求主體。這些要求會傳送至 Cloud Billing,但不會寫入推論要求中繼資料記錄。
標頭標籤的運作方式如下:
- 您可以在
x-goog-agent-platform-observability-label-KEY要求標頭中設定這些值。 - 只會存取推論要求中繼資料記錄。
- 這些標籤會顯示在記錄項目的
jsonPayload.httpHeaders欄位中。 - 支援的 API 方法:Gemini 模型的
generateContent和streamGenerateContent,以及 Claude 模型的rawPredict和streamRawPredict。支援的用量選項:佈建輸送量,以及模型提供的所有即付即用選項。
找出記錄項目中的每個標籤
單一要求可以同時包含這兩者。下列要求會分別設定一個:
POST https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.5-pro:generateContent
x-goog-agent-platform-observability-label-team: payments
{
"labels": {"cost_center": "cc-1234"},
"contents": [{"role": "user", "parts": [{"text": "..."}]}]
}
這兩個標籤會落在同一記錄項目的不同欄位中:
{
"labels": {
"gen_ai.operation.name": "generate_content",
"cost_center": "cc-1234"
},
"jsonPayload": {
"httpHeaders": {
"x-goog-agent-platform-observability-label-team": {
"values": ["payments"]
}
}
}
}
這兩種標籤類型會佔用不同的欄位,因此查詢方式也不同。在 Logs Explorer 中:
labels.cost_center="cc-1234"
jsonPayload.httpHeaders."x-goog-agent-platform-observability-label-team".values="payments"
在 Observability Analytics 中:
JSON_VALUE(labels.cost_center) AS cost_center,
JSON_VALUE(json_payload.httpHeaders
["x-goog-agent-platform-observability-label-team"].values[0]) AS team
標頭標籤的運作方式
標頭標籤是推論要求中繼資料記錄的一部分。如要擷取這些資料,請啟用專案的推論要求中繼資料記錄。
請使用保留前置字元,為每個標籤傳送一個標頭。前置字串不區分大小寫:
x-goog-agent-platform-observability-label-KEY: VALUE
例如:
x-goog-agent-platform-observability-label-team: payments
x-goog-agent-platform-observability-label-application: invoice-ocr
每個標頭都會顯示在 jsonPayload.httpHeaders 下方的記錄項目中,並以小寫標頭名稱做為索引鍵,值則位於 values 陣列中,如「在記錄項目中尋找各個標籤」所示。
Agent Platform 也會擷取一小組專屬標頭:x-vertex-ai-llm-request-type 和 x-vertex-ai-llm-shared-request-type。不會擷取其他標頭。
標頭標籤在 Gemini 和 Claude 的運作方式相同,您可以在推論要求中繼資料記錄中,使用標頭標籤標示 Claude 要求。
標頭標籤限制
- 單一要求最多可寫入 32 個標頭。如果符合條件的工具超過上限,Agent Platform 會依字母順序遞增排列,並捨棄其餘工具。水滴無聲。
- 超過 1,024 個位元組的標頭值會遭到截斷,並在儲存的值中標示截斷。
- 名稱相同的重複標頭會合併為單一項目,其中包含多個值。
如要查詢標頭標籤,請參閱「依自訂標頭標籤查看用量」。
標籤需求
套用至 API 呼叫的標籤必須符合下列規定:
- Google 模型的每個 API 呼叫最多可有 64 個標籤,合作夥伴模型則最多可有 32 個標籤。
- 每個標籤都必須是鍵/值組合。
- 鍵的長度必須至少為 1 個字元,最多 63 個字元,且不能空白。值可以空白,長度上限為 63 個字元。
- 鍵和值只能使用小寫字母、數字字元、底線和連字號。所有字元都必須使用 UTF-8 編碼,允許國際字元。鍵的開頭必須是小寫字母或國際字元。
- 標籤中的鍵部分在單一 API 呼叫中不得重複。但可讓多個呼叫使用相同的鍵。
上述限制適用於各個標籤的鍵和值,以及帶有標籤的個別 API 呼叫。不過,在專案內的所有 API 呼叫中,可建立的標籤鍵數量並無上限。在相關帳單帳戶的生命週期內,每個標籤鍵在所有要求中最多可有 1000 個不重複的值。如果標籤鍵與超過 1,000 個不重複的值相關聯,系統可能會在不另行通知的情況下捨棄該標籤鍵。
標籤的常見用法
以下是一些常見的標籤用途:
團隊或成本中心標籤:依據團隊或成本中心來新增標籤,藉此區別不同團隊 (例如
team:research和team:analytics) 擁有的 API 呼叫,這類標籤可用於成本會計或預算編列作業。元件標籤:例如
component:redis、component:frontend、component:ingest和component:dashboard。環境或階段標籤:例如
environment:production和environment:test。擁有權標籤:用於識別各項作業的責任團隊,例如:
team:shopping-cart。
我們不建議建立大量的不重複標籤,例如幫時間戳記或每個 API 呼叫的個別值建立標籤。這種做法的問題在於,標籤鍵會使目錄變得雜亂,大幅增加查詢時的載入時間,並難以有效篩選 API 呼叫及製作報表。
要求標籤支援的模型
不同模型支援的要求標籤和標頭標籤也不同。Google 模型和部分合作夥伴模型支援在要求中新增要求標籤。如果對不支援的模型新增要求標籤,要求會導致錯誤。Google 模型會採用要求主體 labels 欄位中的要求標籤。合作夥伴模型則會透過 X-Vertex-AI-Labels 標頭接收。
Google 模型
Google 模型支援下列 API 方法的標籤。
generateContentstreamGenerateContent
合作夥伴模型
合作夥伴模型支援下列 API 方法的標籤。
rawPredictstreamRawPredict
下列合作夥伴模型支援標籤。
只有在要求使用 PayGo 用量選項時,標籤才會轉送至 Cloud Billing。如果要求使用佈建輸送量消耗選項,系統會忽略要求中傳送的標籤,且不會顯示任何訊息。
支援標頭標籤的模型
標頭標籤只會寫入推論要求中繼資料記錄,因此適用於記錄中的模型和方法。
- Gemini 模型:
generateContent和streamGenerateContent。 - Claude 模型:
rawPredict和streamRawPredict。 - 用量選項:佈建輸送量和模型提供的所有即付即用選項。
- 不支援其他合作夥伴模型,包括 Mistral AI。向這些端點傳送含有標頭標籤的要求仍會成功,但不會寫入記錄項目,因此標籤不會記錄在任何地方。
- 標頭標籤不會傳送至 Cloud Billing。如要細分已結算費用,請使用要求標籤。
在 Google 模型 API 呼叫中加入要求標籤
如要為 generateContent 或 streamGenerateContent API 呼叫新增標籤,請按照下列步驟操作:
REST
使用任何要求資料之前,請先修改下列項目的值:
GENERATE_RESPONSE_METHOD:您希望模型生成的回覆類型。選擇方法,生成模型回覆:streamGenerateContent:回覆生成時會以串流方式傳送,減少使用者感受到的延遲。generateContent:系統會在完整生成回覆後傳回。
LOCATION:處理要求的區域。PROJECT_ID:您的專案 ID。。MODEL_ID:要使用的模型 ID。ROLE:與內容相關聯的對話角色。即使是單輪對話,也必須指定角色。可接受的值包括:USER:指定由您傳送的內容。MODEL:指定模型的回覆。
提示詞中要包含的文字指示。JSONPROMPT_TEXT
LABEL_KEY:要與這個 API 呼叫建立關聯的標籤中繼資料。LABEL_VALUE:標籤的值。
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json 的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
cat > request.json << 'EOF'
{
"contents": {
"role": "ROLE",
"parts": { "text": "PROMPT_TEXT" }
},
"labels": {
"LABEL_KEY": "LABEL_VALUE"
},
}
EOF接著,執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD"
PowerShell
將要求主體儲存在名為 request.json 的檔案中。
在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:
@'
{
"contents": {
"role": "ROLE",
"parts": { "text": "PROMPT_TEXT" }
},
"labels": {
"LABEL_KEY": "LABEL_VALUE"
},
}
'@ | Out-File -FilePath request.json -Encoding utf8接著,執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
您應該會收到如下的 JSON 回覆。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 Agent Platform 快速入門導覽課程」中的 Python 設定說明操作。
如要向 Agent Platform 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Google Cloud 產品會以不同頻率,將用量和費用資料回報給 Cloud Billing 程序。因此,您可能需要等待一段時間,才能在 Cloud Billing 查看Google Cloud 服務的用量和費用。費用通常會在一天內提供,但有時可能需要超過 24 小時。
在合作夥伴模型 API 呼叫中加入要求標籤
如要為 rawPredict 或 streamRawPredict API 呼叫新增標籤,請按照下列步驟操作:
REST
使用任何要求資料之前,請先替換下列項目:
PROJECT_ID:專案 ID。MODEL_ID:要使用的模型 ID。例如:claude-opus-4-6。
將要求主體儲存在名為 request.json 的檔案中。在終端機執行下列指令,在目前目錄建立或覆寫這個檔案:
cat > request.json << 'EOF'
{
"anthropic_version": "vertex-2023-10-16",
"messages": [
{
"role": "user",
"content": "What is Generative AI?"
}
],
"max_tokens": 1024,
"stream": false
}
EOF
接著執行下列指令,傳送 REST 要求:
REQUEST_LABELS=$(echo -n '{"team": "research", "component": "frontend"}' | base64 --wrap 0)
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Vertex-AI-Labels: ${REQUEST_LABELS}" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/anthropic/models/MODEL_ID:rawPredict"
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 Agent Platform 快速入門導覽課程」中的 Python 設定說明操作。
如要向 Agent Platform 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
使用任何要求資料之前,請先替換下列項目:
PROJECT_ID:專案 ID。MODEL_ID:要使用的模型 ID。例如:claude-opus-4-6。
import base64 import json from google.cloud.aiplatform import aiplatform_v1 from google.api import httpbody_pb2 project_id = "PROJECT_ID" model_id = "MODEL_ID" request_body = { "anthropic_version": "vertex-2023-10-16", "messages": [{ "role": "user", "content": [{"type": "text", "text": "What is Generative AI?"}] }], "max_tokens": 256, "stream": True, } # Encode labels to base64 for the X-Vertex-AI-Labels header labels = { "team": "research", "component": "frontend", "environment": "production", } labels_json = json.dumps(labels).encode("utf-8") vertex_header_value = base64.b64encode(labels_json) endpoint_id=f"projects/{project_id}/locations/global/publishers/anthropic/models/{model_id}" client = aiplatform_v1.PredictionServiceClient() responses = client.stream_raw_predict( request=aiplatform_v1.StreamRawPredictRequest( endpoint=endpoint_id, http_body=httpbody_pb2.HttpBody( data=json.dumps(request_body).encode("utf-8"), content_type="application/json", ), ), metadata=[("x-vertex-ai-labels", vertex_header_value)], ) for response in responses: print(response.data.decode("utf-8"))
在 API 呼叫中加入標頭標籤
標頭標籤不需要變更要求主體。請在任何支援的要求中,為每個標籤新增一個 x-goog-agent-platform-observability-label-KEY 標頭。以下範例顯示 2026 年 10 月 14 日測試要求中,推論要求中繼資料記錄項目的要求和結果欄位。
在 Gemini 模型 API 呼叫中新增標頭標籤
使用 generateContent 或 streamGenerateContent 傳送標頭標籤。並將 PROJECT_ID 替換成您的專案 ID。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "x-goog-agent-platform-observability-label-team: payments" \
-H "x-goog-agent-platform-observability-label-application: invoice-ocr" \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.5-flash:generateContent" \
-d '{"contents": [{"role": "user", "parts": [{"text": "What is Generative AI?"}]}]}'
記錄項目會記錄 jsonPayload.httpHeaders 下方的每個標籤。標頭標籤也會記錄在佈建輸送量流量中,但要求標籤不支援這項功能:
{
"method": "GENERATE_CONTENT",
"trafficType": "PROVISIONED_THROUGHPUT",
"httpHeaders": {
"x-goog-agent-platform-observability-label-application": {"values": ["invoice-ocr"]},
"x-goog-agent-platform-observability-label-team": {"values": ["payments"]}
},
"generateContentDetails": {"usageMetadata": {"promptTokenCount": 6, "candidatesTokenCount": 1, "totalTokenCount": 7}},
"provisionedThroughput": {"accountingResource": "projects/PROJECT_NUMBER", "ptChargedInputTokenCount": "6", "ptChargedOutputTokenCount": "9"}
}
在 Claude 模型 API 呼叫中新增標頭標籤
使用 rawPredict 或 streamRawPredict 傳送標頭標籤。替換 PROJECT_ID 和 MODEL_ID,例如 claude-opus-4-6。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "x-goog-agent-platform-observability-label-team: payments" \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/anthropic/models/MODEL_ID:rawPredict" \
-d '{"anthropic_version": "vertex-2023-10-16", "messages": [{"role": "user", "content": "What is Generative AI?"}], "max_tokens": 256}'
記錄項目會將標籤記錄在 jsonPayload.httpHeaders 下方,緊鄰 Claude 的權杖數量:
{
"method": "RAW_PREDICT",
"trafficType": "ON_DEMAND",
"httpHeaders": {
"x-goog-agent-platform-observability-label-team": {"values": ["payments"]}
},
"rawPredictDetails": {"usageMetadata": {"input_tokens": 17, "output_tokens": 16, "cache_read_input_tokens": 0, "cache_creation_input_tokens": 0}}
}
Claude 要求也可以在 X-Vertex-AI-Labels 標頭中攜帶要求標籤,如「在合作夥伴模型 API 呼叫中新增要求標籤」一節所示。這些資訊會傳送至 Cloud Billing,但不會寫入記錄項目。
查詢標頭標籤
在 Logs Explorer 中,依據一個標頭標籤值篩選:
jsonPayload.httpHeaders."x-goog-agent-platform-observability-label-team".values="payments"
在 Observability Analytics 中,前往「Log inference request metadata」(記錄推論要求中繼資料) 頁面,使用「Usage by custom header label」(依自訂標頭標籤區分用量) 查詢,依標頭標籤分組。