跳至主要內容

未管理的 Vertex AI 批次

企業版功能

此功能需要 LiteLLM 企業版授權。立即開始 30 天免費試用或預約展示。 查看企業版完整功能。

LiteLLM 支援 Vertex AI 批次工作的兩種路徑。受管理路徑會自動處理檔案上傳與格式轉換。未管理路徑則讓您直接以上傳批次檔案到 GCS,並使用 Vertex AI 的原生格式;LiteLLM 會略過轉換,但在啟用時會追蹤成本。

運作方式​

設定​

在您的 proxy 設定中啟用成本追蹤:

general_settings:
track_unmanaged_batch_cost: true # Default: false

為您要批次處理的模型設定 vertex_ai 部署。poller 會使用此部署的憑證來輪詢 Vertex 並計算成本:

model_list:
- model_name: gemini-3.8-flash
litellm_params:
model: vertex_ai/gemini-3.8-flash
vertex_project: my-gcp-project
vertex_location: us-central1
vertex_credentials: /path/to/service-account.json

GCS 路徑需求​

GCS 路徑必須包含 publishers/google/models/<model-name>/,如此 LiteLLM 才能推導出用於憑證查找的模型名稱。

gs://my-bucket/<any-prefix>/publishers/google/models/gemini-3.8-flash/<filename>.jsonl

儲存桶名稱以及 publishers/ 之前的任何前綴都可以是任意值。

批次檔案格式​

未管理批次必須使用 Vertex AI 原生 JSONL 格式。受管理路徑接受 OpenAI 格式並加以轉換;未管理路徑則完全略過轉換,因此您必須直接提供 Vertex AI 格式:

{"custom_id": "1", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gemini-3.8-flash", "messages": [{"role": "user", "content": "What is 2+2?"}]}}
{"custom_id": "2", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gemini-3.8-flash", "messages": [{"role": "user", "content": "What is 3+3?"}]}}

用法​

1. 上傳到 GCS​

gsutil cp batch.jsonl gs://my-bucket/batches/publishers/google/models/gemini-3.8-flash/batch.jsonl

2. 建立批次​

將 GCS URI 作為 input_file_id 傳入:

curl -X POST http://localhost:4000/v1/batches \
-H "Authorization: Bearer $LITELLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input_file_id": "gs://my-bucket/batches/publishers/google/models/gemini-3.8-flash/batch.jsonl",
"endpoint": "/v1/chat/completions",
"completion_window": "24h",
"custom_llm_provider": "vertex_ai"
}'

回應會包含原始的 Vertex 數字工作 ID(例如,8823717160934178816)。

3. 監控狀態​

傳入 custom_llm_provider=vertex_ai,讓 proxy 路由到 Vertex 而非 OpenAI:

curl -X GET "http://localhost:4000/v1/batches/8823717160934178816?custom_llm_provider=vertex_ai" \
-H "Authorization: Bearer $LITELLM_API_KEY"

4. 取得結果​

當 status 為 completed 時,輸出檔案位置會在 output_file_id 中。從 GCS 下載:

gsutil cp gs://my-bucket/output/batch-results.jsonl .

每一行都是一個 Vertex AI 回應物件:

{"custom_id": "1", "response": {"status_code": 200, "body": {"choices": [{"message": {"content": "2 + 2 = 4"}}]}}}

成本追蹤​

啟用 track_unmanaged_batch_cost: true 後,CheckBatchCost poller 會自動處理成本追蹤。它會從 GCS 路徑擷取模型,使用已設定的 vertex_ai 部署來輪詢 Vertex 取得結果,計算 token 成本,並將批次標記為已處理。成本會顯示在 proxy 記錄 UI 的 http://localhost:4000/ui/?page=logs。

輪詢間隔由 proxy_batch_polling_interval 在 general_settings 中控制(基礎秒數;poller 會加入 0-30 秒抖動)。在測試期間可將其設為 10 以獲得更快的回饋。

輪詢器寫入的支出記錄列,與受管理批次取得的列格式相同,因此請參閱 可觀測性,了解每個欄位的意義,以及如何讀取部分失敗的批次

疑難排解​

未計成本。 請檢查 track_unmanaged_batch_cost: true 是否已設定、您的 GCS 路徑是否包含 publishers/google/models/<model>/,以及您是否已設定 vertex_ai 部署。請留意如下記錄行:

Skipping unmanaged vertex batch 8823717160934178816: no vertex_ai deployment configured for model gemini-3.8-flash

成本為零。 只有在批次完全完成後,Vertex AI 才會在回應本文中包含 token 使用量。如果狀態是 completed 但成本為零,請手動下載輸出檔案以確認其中包含帶有 usage 欄位的回應資料。

受管理 vs 未管理​

受管理未管理
輸入格式OpenAI 聊天完成Vertex AI 原生
檔案上傳透過 proxy直接到 GCS
格式轉換自動無
批次 ID 格式Base64 編碼的統一 ID原始 Vertex 數字 ID
成本追蹤預設啟用opt-in 標記

受管理批次也可以採用 Vertex 原生輸入:在上傳時設定 passthrough=true,LiteLLM 會逐位元組儲存檔案,並回傳原生輸出。請參閱 Native Vertex JSONL passthrough。

另請參閱​