Browse Source

Add the gemini 2.5 pro preview model with upper bound pricing (#2300)

Matt Rubens 10 months ago
parent
commit
e2a8ec8d0e

+ 5 - 0
.changeset/quiet-turkeys-wash.md

@@ -0,0 +1,5 @@
+---
+"roo-cline": patch
+---
+
+Add the gemini 2.5 pro preview model with upper bound pricing

+ 8 - 0
src/shared/api.ts

@@ -629,6 +629,14 @@ export const geminiModels = {
 		inputPrice: 0,
 		inputPrice: 0,
 		outputPrice: 0,
 		outputPrice: 0,
 	},
 	},
+	"gemini-2.5-pro-preview-03-25": {
+		maxTokens: 65_535,
+		contextWindow: 1_048_576,
+		supportsImages: true,
+		supportsPromptCache: false,
+		inputPrice: 2.5,
+		outputPrice: 15,
+	},
 	"gemini-2.0-flash-001": {
 	"gemini-2.0-flash-001": {
 		maxTokens: 8192,
 		maxTokens: 8192,
 		contextWindow: 1_048_576,
 		contextWindow: 1_048_576,

+ 5 - 3
webview-ui/src/components/settings/ModelInfoView.tsx

@@ -75,9 +75,11 @@ export const ModelInfoView = ({
 		),
 		),
 		isGemini && (
 		isGemini && (
 			<span className="italic">
 			<span className="italic">
-				{t("settings:modelInfo.gemini.freeRequests", {
-					count: selectedModelId && selectedModelId.includes("flash") ? 15 : 2,
-				})}{" "}
+				{selectedModelId === "gemini-2.5-pro-preview-03-25"
+					? t("settings:modelInfo.gemini.billingEstimate")
+					: t("settings:modelInfo.gemini.freeRequests", {
+							count: selectedModelId && selectedModelId.includes("flash") ? 15 : 2,
+						})}{" "}
 				<VSCodeLink href="https://ai.google.dev/pricing" className="text-sm">
 				<VSCodeLink href="https://ai.google.dev/pricing" className="text-sm">
 					{t("settings:modelInfo.gemini.pricingDetails")}
 					{t("settings:modelInfo.gemini.pricingDetails")}
 				</VSCodeLink>
 				</VSCodeLink>

+ 2 - 1
webview-ui/src/i18n/locales/ca/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "Establir versió de l'API d'Azure",
 		"azureApiVersion": "Establir versió de l'API d'Azure",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* Gratuït fins a {{count}} sol·licituds per minut. Després d'això, la facturació depèn de la mida del prompt.",
 			"freeRequests": "* Gratuït fins a {{count}} sol·licituds per minut. Després d'això, la facturació depèn de la mida del prompt.",
-			"pricingDetails": "Per a més informació, consulteu els detalls de preus."
+			"pricingDetails": "Per a més informació, consulteu els detalls de preus.",
+			"billingEstimate": "* La facturació és una estimació - el cost exacte depèn de la mida del prompt."
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {

+ 2 - 1
webview-ui/src/i18n/locales/de/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "Azure API-Version festlegen",
 		"azureApiVersion": "Azure API-Version festlegen",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* Kostenlos bis zu {{count}} Anfragen pro Minute. Danach hängt die Abrechnung von der Prompt-Größe ab.",
 			"freeRequests": "* Kostenlos bis zu {{count}} Anfragen pro Minute. Danach hängt die Abrechnung von der Prompt-Größe ab.",
-			"pricingDetails": "Weitere Informationen finden Sie in den Preisdetails."
+			"pricingDetails": "Weitere Informationen finden Sie in den Preisdetails.",
+			"billingEstimate": "* Die Abrechnung ist eine Schätzung - die genauen Kosten hängen von der Prompt-Größe ab."
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {

+ 2 - 1
webview-ui/src/i18n/locales/en/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "Set Azure API version",
 		"azureApiVersion": "Set Azure API version",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* Free up to {{count}} requests per minute. After that, billing depends on prompt size.",
 			"freeRequests": "* Free up to {{count}} requests per minute. After that, billing depends on prompt size.",
-			"pricingDetails": "For more info, see pricing details."
+			"pricingDetails": "For more info, see pricing details.",
+			"billingEstimate": "* Billing is an estimate - exact cost depends on prompt size."
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {

+ 2 - 1
webview-ui/src/i18n/locales/es/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "Establecer versión de API de Azure",
 		"azureApiVersion": "Establecer versión de API de Azure",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* Gratis hasta {{count}} solicitudes por minuto. Después de eso, la facturación depende del tamaño del prompt.",
 			"freeRequests": "* Gratis hasta {{count}} solicitudes por minuto. Después de eso, la facturación depende del tamaño del prompt.",
-			"pricingDetails": "Para más información, consulte los detalles de precios."
+			"pricingDetails": "Para más información, consulte los detalles de precios.",
+			"billingEstimate": "* La facturación es una estimación - el costo exacto depende del tamaño del prompt."
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {

+ 2 - 1
webview-ui/src/i18n/locales/fr/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "Définir la version de l'API Azure",
 		"azureApiVersion": "Définir la version de l'API Azure",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* Gratuit jusqu'à {{count}} requêtes par minute. Après cela, la facturation dépend de la taille du prompt.",
 			"freeRequests": "* Gratuit jusqu'à {{count}} requêtes par minute. Après cela, la facturation dépend de la taille du prompt.",
-			"pricingDetails": "Pour plus d'informations, voir les détails de tarification."
+			"pricingDetails": "Pour plus d'informations, voir les détails de tarification.",
+			"billingEstimate": "* La facturation est une estimation - le coût exact dépend de la taille du prompt."
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {

+ 2 - 1
webview-ui/src/i18n/locales/hi/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "Azure API संस्करण सेट करें",
 		"azureApiVersion": "Azure API संस्करण सेट करें",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* प्रति मिनट {{count}} अनुरोधों तक मुफ्त। उसके बाद, बिलिंग प्रॉम्प्ट आकार पर निर्भर करती है।",
 			"freeRequests": "* प्रति मिनट {{count}} अनुरोधों तक मुफ्त। उसके बाद, बिलिंग प्रॉम्प्ट आकार पर निर्भर करती है।",
-			"pricingDetails": "अधिक जानकारी के लिए, मूल्य निर्धारण विवरण देखें।"
+			"pricingDetails": "अधिक जानकारी के लिए, मूल्य निर्धारण विवरण देखें।",
+			"billingEstimate": "* बिलिंग एक अनुमान है - सटीक लागत प्रॉम्प्ट आकार पर निर्भर करती है।"
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {

+ 2 - 1
webview-ui/src/i18n/locales/it/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "Imposta versione API Azure",
 		"azureApiVersion": "Imposta versione API Azure",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* Gratuito fino a {{count}} richieste al minuto. Dopo, la fatturazione dipende dalla dimensione del prompt.",
 			"freeRequests": "* Gratuito fino a {{count}} richieste al minuto. Dopo, la fatturazione dipende dalla dimensione del prompt.",
-			"pricingDetails": "Per maggiori informazioni, vedi i dettagli sui prezzi."
+			"pricingDetails": "Per maggiori informazioni, vedi i dettagli sui prezzi.",
+			"billingEstimate": "* La fatturazione è una stima - il costo esatto dipende dalle dimensioni del prompt."
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {

+ 2 - 1
webview-ui/src/i18n/locales/ja/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "Azure APIバージョンを設定",
 		"azureApiVersion": "Azure APIバージョンを設定",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* 1分間あたり{{count}}リクエストまで無料。それ以降は、プロンプトサイズに応じて課金されます。",
 			"freeRequests": "* 1分間あたり{{count}}リクエストまで無料。それ以降は、プロンプトサイズに応じて課金されます。",
-			"pricingDetails": "詳細は価格情報をご覧ください。"
+			"pricingDetails": "詳細は価格情報をご覧ください。",
+			"billingEstimate": "* 課金は見積もりです - 正確な費用はプロンプトのサイズによって異なります。"
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {

+ 2 - 1
webview-ui/src/i18n/locales/ko/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "Azure API 버전 설정",
 		"azureApiVersion": "Azure API 버전 설정",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* 분당 {{count}}개의 요청까지 무료. 이후에는 프롬프트 크기에 따라 요금이 부과됩니다.",
 			"freeRequests": "* 분당 {{count}}개의 요청까지 무료. 이후에는 프롬프트 크기에 따라 요금이 부과됩니다.",
-			"pricingDetails": "자세한 내용은 가격 정보를 참조하세요."
+			"pricingDetails": "자세한 내용은 가격 정보를 참조하세요.",
+			"billingEstimate": "* 요금은 추정치입니다 - 정확한 비용은 프롬프트 크기에 따라 달라집니다."
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {

+ 2 - 1
webview-ui/src/i18n/locales/pl/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "Ustaw wersję API Azure",
 		"azureApiVersion": "Ustaw wersję API Azure",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* Darmowe do {{count}} zapytań na minutę. Po tym, rozliczanie zależy od rozmiaru podpowiedzi.",
 			"freeRequests": "* Darmowe do {{count}} zapytań na minutę. Po tym, rozliczanie zależy od rozmiaru podpowiedzi.",
-			"pricingDetails": "Więcej informacji znajdziesz w szczegółach cennika."
+			"pricingDetails": "Więcej informacji znajdziesz w szczegółach cennika.",
+			"billingEstimate": "* Rozliczenie jest szacunkowe - dokładny koszt zależy od rozmiaru podpowiedzi."
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {

+ 2 - 1
webview-ui/src/i18n/locales/pt-BR/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "Definir versão da API Azure",
 		"azureApiVersion": "Definir versão da API Azure",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* Gratuito até {{count}} requisições por minuto. Depois disso, a cobrança depende do tamanho do prompt.",
 			"freeRequests": "* Gratuito até {{count}} requisições por minuto. Depois disso, a cobrança depende do tamanho do prompt.",
-			"pricingDetails": "Para mais informações, consulte os detalhes de preços."
+			"pricingDetails": "Para mais informações, consulte os detalhes de preços.",
+			"billingEstimate": "* A cobrança é uma estimativa - o custo exato depende do tamanho do prompt."
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {

+ 2 - 1
webview-ui/src/i18n/locales/tr/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "Azure API sürümünü ayarla",
 		"azureApiVersion": "Azure API sürümünü ayarla",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* Dakikada {{count}} isteğe kadar ücretsiz. Bundan sonra, ücretlendirme istem boyutuna bağlıdır.",
 			"freeRequests": "* Dakikada {{count}} isteğe kadar ücretsiz. Bundan sonra, ücretlendirme istem boyutuna bağlıdır.",
-			"pricingDetails": "Daha fazla bilgi için fiyatlandırma ayrıntılarına bakın."
+			"pricingDetails": "Daha fazla bilgi için fiyatlandırma ayrıntılarına bakın.",
+			"billingEstimate": "* Ücretlendirme bir tahmindir - kesin maliyet istem boyutuna bağlıdır."
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {

+ 2 - 1
webview-ui/src/i18n/locales/vi/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "Đặt phiên bản API Azure",
 		"azureApiVersion": "Đặt phiên bản API Azure",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* Miễn phí đến {{count}} yêu cầu mỗi phút. Sau đó, thanh toán phụ thuộc vào kích thước lời nhắc.",
 			"freeRequests": "* Miễn phí đến {{count}} yêu cầu mỗi phút. Sau đó, thanh toán phụ thuộc vào kích thước lời nhắc.",
-			"pricingDetails": "Để biết thêm thông tin, xem chi tiết giá."
+			"pricingDetails": "Để biết thêm thông tin, xem chi tiết giá.",
+			"billingEstimate": "* Thanh toán là ước tính - chi phí chính xác phụ thuộc vào kích thước lời nhắc."
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {

+ 2 - 1
webview-ui/src/i18n/locales/zh-CN/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "设置 Azure API 版本",
 		"azureApiVersion": "设置 Azure API 版本",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* 每分钟免费 {{count}} 个请求。之后,计费取决于提示大小。",
 			"freeRequests": "* 每分钟免费 {{count}} 个请求。之后,计费取决于提示大小。",
-			"pricingDetails": "有关更多信息,请参阅定价详情。"
+			"pricingDetails": "有关更多信息,请参阅定价详情。",
+			"billingEstimate": "* 计费为估计值 - 具体费用取决于提示大小。"
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {

+ 2 - 1
webview-ui/src/i18n/locales/zh-TW/settings.json

@@ -369,7 +369,8 @@
 		"azureApiVersion": "設定 Azure API 版本",
 		"azureApiVersion": "設定 Azure API 版本",
 		"gemini": {
 		"gemini": {
 			"freeRequests": "* 每分鐘可免費使用 {{count}} 次請求,超過後將依提示大小計費。",
 			"freeRequests": "* 每分鐘可免費使用 {{count}} 次請求,超過後將依提示大小計費。",
-			"pricingDetails": "詳細資訊請參閱定價說明。"
+			"pricingDetails": "詳細資訊請參閱定價說明。",
+			"billingEstimate": "* 費用為估算值 - 實際費用取決於提示大小。"
 		}
 		}
 	},
 	},
 	"modelPicker": {
 	"modelPicker": {