import type { ModelInfo } from "../model" // https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-claude export type VertexModelId = keyof typeof vertexModels export const vertexDefaultModelId: VertexModelId = "claude-sonnet-4@20250514" export const vertexModels = { "gemini-2.5-flash-preview-05-20:thinking": { maxTokens: 65_535, contextWindow: 1_048_576, supportsImages: true, supportsPromptCache: true, inputPrice: 0.15, outputPrice: 3.5, maxThinkingTokens: 24_576, supportsReasoningBudget: true, requiredReasoningBudget: true, }, "gemini-2.5-flash-preview-05-20": { maxTokens: 65_535, contextWindow: 1_048_576, supportsImages: true, supportsPromptCache: true, inputPrice: 0.15, outputPrice: 0.6, }, "gemini-2.5-flash": { maxTokens: 64_000, contextWindow: 1_048_576, supportsImages: true, supportsPromptCache: true, inputPrice: 0.3, outputPrice: 2.5, cacheReadsPrice: 0.075, cacheWritesPrice: 1.0, maxThinkingTokens: 24_576, supportsReasoningBudget: true, }, "gemini-2.5-flash-preview-04-17:thinking": { maxTokens: 65_535, contextWindow: 1_048_576, supportsImages: true, supportsPromptCache: false, inputPrice: 0.15, outputPrice: 3.5, maxThinkingTokens: 24_576, supportsReasoningBudget: true, requiredReasoningBudget: true, }, "gemini-2.5-flash-preview-04-17": { maxTokens: 65_535, contextWindow: 1_048_576, supportsImages: true, supportsPromptCache: false, inputPrice: 0.15, outputPrice: 0.6, }, "gemini-2.5-pro-preview-03-25": { maxTokens: 65_535, contextWindow: 1_048_576, supportsImages: true, supportsPromptCache: true, inputPrice: 2.5, outputPrice: 15, }, "gemini-2.5-pro-preview-05-06": { maxTokens: 65_535, contextWindow: 1_048_576, supportsImages: true, supportsPromptCache: true, inputPrice: 2.5, outputPrice: 15, }, "gemini-2.5-pro-preview-06-05": { maxTokens: 65_535, contextWindow: 1_048_576, supportsImages: true, supportsPromptCache: true, inputPrice: 2.5, outputPrice: 15, maxThinkingTokens: 32_768, supportsReasoningBudget: true, }, "gemini-2.5-pro": { maxTokens: 64_000, contextWindow: 1_048_576, supportsImages: true, supportsPromptCache: true, inputPrice: 2.5, outputPrice: 15, maxThinkingTokens: 32_768, supportsReasoningBudget: true, requiredReasoningBudget: true, tiers: [ { contextWindow: 200_000, inputPrice: 1.25, outputPrice: 10, cacheReadsPrice: 0.31, }, { contextWindow: Infinity, inputPrice: 2.5, outputPrice: 15, cacheReadsPrice: 0.625, }, ], }, "gemini-2.5-pro-exp-03-25": { maxTokens: 65_535, contextWindow: 1_048_576, supportsImages: true, supportsPromptCache: false, inputPrice: 0, outputPrice: 0, }, "gemini-2.0-pro-exp-02-05": { maxTokens: 8192, contextWindow: 2_097_152, supportsImages: true, supportsPromptCache: false, inputPrice: 0, outputPrice: 0, }, "gemini-2.0-flash-001": { maxTokens: 8192, contextWindow: 1_048_576, supportsImages: true, supportsPromptCache: true, inputPrice: 0.15, outputPrice: 0.6, }, "gemini-2.0-flash-lite-001": { maxTokens: 8192, contextWindow: 1_048_576, supportsImages: true, supportsPromptCache: false, inputPrice: 0.075, outputPrice: 0.3, }, "gemini-2.0-flash-thinking-exp-01-21": { maxTokens: 8192, contextWindow: 32_768, supportsImages: true, supportsPromptCache: false, inputPrice: 0, outputPrice: 0, }, "gemini-1.5-flash-002": { maxTokens: 8192, contextWindow: 1_048_576, supportsImages: true, supportsPromptCache: true, inputPrice: 0.075, outputPrice: 0.3, }, "gemini-1.5-pro-002": { maxTokens: 8192, contextWindow: 2_097_152, supportsImages: true, supportsPromptCache: false, inputPrice: 1.25, outputPrice: 5, }, "claude-sonnet-4@20250514": { maxTokens: 8192, contextWindow: 200_000, supportsImages: true, supportsComputerUse: true, supportsPromptCache: true, inputPrice: 3.0, outputPrice: 15.0, cacheWritesPrice: 3.75, cacheReadsPrice: 0.3, supportsReasoningBudget: true, }, "claude-opus-4@20250514": { maxTokens: 8192, contextWindow: 200_000, supportsImages: true, supportsComputerUse: true, supportsPromptCache: true, inputPrice: 15.0, outputPrice: 75.0, cacheWritesPrice: 18.75, cacheReadsPrice: 1.5, }, "claude-3-7-sonnet@20250219:thinking": { maxTokens: 64_000, contextWindow: 200_000, supportsImages: true, supportsComputerUse: true, supportsPromptCache: true, inputPrice: 3.0, outputPrice: 15.0, cacheWritesPrice: 3.75, cacheReadsPrice: 0.3, supportsReasoningBudget: true, requiredReasoningBudget: true, }, "claude-3-7-sonnet@20250219": { maxTokens: 8192, contextWindow: 200_000, supportsImages: true, supportsComputerUse: true, supportsPromptCache: true, inputPrice: 3.0, outputPrice: 15.0, cacheWritesPrice: 3.75, cacheReadsPrice: 0.3, }, "claude-3-5-sonnet-v2@20241022": { maxTokens: 8192, contextWindow: 200_000, supportsImages: true, supportsComputerUse: true, supportsPromptCache: true, inputPrice: 3.0, outputPrice: 15.0, cacheWritesPrice: 3.75, cacheReadsPrice: 0.3, }, "claude-3-5-sonnet@20240620": { maxTokens: 8192, contextWindow: 200_000, supportsImages: true, supportsPromptCache: true, inputPrice: 3.0, outputPrice: 15.0, cacheWritesPrice: 3.75, cacheReadsPrice: 0.3, }, "claude-3-5-haiku@20241022": { maxTokens: 8192, contextWindow: 200_000, supportsImages: false, supportsPromptCache: true, inputPrice: 1.0, outputPrice: 5.0, cacheWritesPrice: 1.25, cacheReadsPrice: 0.1, }, "claude-3-opus@20240229": { maxTokens: 4096, contextWindow: 200_000, supportsImages: true, supportsPromptCache: true, inputPrice: 15.0, outputPrice: 75.0, cacheWritesPrice: 18.75, cacheReadsPrice: 1.5, }, "claude-3-haiku@20240307": { maxTokens: 4096, contextWindow: 200_000, supportsImages: true, supportsPromptCache: true, inputPrice: 0.25, outputPrice: 1.25, cacheWritesPrice: 0.3, cacheReadsPrice: 0.03, }, "gemini-2.5-flash-lite-preview-06-17": { maxTokens: 64_000, contextWindow: 1_048_576, supportsImages: true, supportsPromptCache: true, inputPrice: 0.1, outputPrice: 0.4, cacheReadsPrice: 0.025, cacheWritesPrice: 1.0, maxThinkingTokens: 24_576, supportsReasoningBudget: true, }, "llama-4-maverick-17b-128e-instruct-maas": { maxTokens: 8192, contextWindow: 131072, supportsImages: false, supportsPromptCache: false, inputPrice: 0.35, outputPrice: 1.15, description: "Meta Llama 4 Maverick 17B Instruct model, 128K context.", }, } as const satisfies Record export const VERTEX_REGIONS = [ { value: "global", label: "global" }, { value: "us-central1", label: "us-central1" }, { value: "us-east1", label: "us-east1" }, { value: "us-east4", label: "us-east4" }, { value: "us-east5", label: "us-east5" }, { value: "us-west1", label: "us-west1" }, { value: "us-west2", label: "us-west2" }, { value: "us-west3", label: "us-west3" }, { value: "us-west4", label: "us-west4" }, { value: "northamerica-northeast1", label: "northamerica-northeast1" }, { value: "northamerica-northeast2", label: "northamerica-northeast2" }, { value: "southamerica-east1", label: "southamerica-east1" }, { value: "europe-west1", label: "europe-west1" }, { value: "europe-west2", label: "europe-west2" }, { value: "europe-west3", label: "europe-west3" }, { value: "europe-west4", label: "europe-west4" }, { value: "europe-west6", label: "europe-west6" }, { value: "europe-central2", label: "europe-central2" }, { value: "asia-east1", label: "asia-east1" }, { value: "asia-east2", label: "asia-east2" }, { value: "asia-northeast1", label: "asia-northeast1" }, { value: "asia-northeast2", label: "asia-northeast2" }, { value: "asia-northeast3", label: "asia-northeast3" }, { value: "asia-south1", label: "asia-south1" }, { value: "asia-south2", label: "asia-south2" }, { value: "asia-southeast1", label: "asia-southeast1" }, { value: "asia-southeast2", label: "asia-southeast2" }, { value: "australia-southeast1", label: "australia-southeast1" }, { value: "australia-southeast2", label: "australia-southeast2" }, { value: "me-west1", label: "me-west1" }, { value: "me-central1", label: "me-central1" }, { value: "africa-south1", label: "africa-south1" }, ]