detached 4d6e4be

Merge pull request #85 from ekoeppen/vertex-models

Update Google Gemini Vertex models
commit
4d6e4be641c17bd1972d7e8fbc9f7d6f08343c8b
author
Patric Eckhart · · 2026-07-18 08:19 UTC
committer
GitHub · · 2026-07-18 08:19 UTC
merge of
6a0d7ca + 197d598 · diff against the first parent
signature
GPG UnverifiedB5690EEEBB952194 The key is unknown
refs
tag: v0.2.91
2 files · +14 -7
M packages/provider/catalog_builtin.go +2 -7
@@ -173,19 +173,14 @@ var builtinCatalog = []Model{
173173 {Provider: "google", ID: "gemma-4-26b-a4b-it", DisplayName: "Gemma 4 26B A4B IT", ContextWindow: 262144, MaxOutput: 32768, Reasoning: true, PriceInput: 0, PriceOutput: 0, PriceCacheRead: 0, BaseURL: "https://generativelanguage.googleapis.com/v1beta"},
174174 {Provider: "google", ID: "gemma-4-31b-it", DisplayName: "Gemma 4 31B IT", ContextWindow: 262144, MaxOutput: 32768, Reasoning: true, PriceInput: 0, PriceOutput: 0, PriceCacheRead: 0, BaseURL: "https://generativelanguage.googleapis.com/v1beta"},
175175 // ----- google-vertex -----
176- {Provider: "google-vertex", ID: "gemini-1.5-flash", DisplayName: "Gemini 1.5 Flash (Vertex)", ContextWindow: 1000000, MaxOutput: 8192, Reasoning: false, PriceInput: 0.075, PriceOutput: 0.3, PriceCacheRead: 0.01875, BaseURL: "https://{location}-aiplatform.googleapis.com"},
177- {Provider: "google-vertex", ID: "gemini-1.5-flash-8b", DisplayName: "Gemini 1.5 Flash-8B (Vertex)", ContextWindow: 1000000, MaxOutput: 8192, Reasoning: false, PriceInput: 0.0375, PriceOutput: 0.15, PriceCacheRead: 0.01, BaseURL: "https://{location}-aiplatform.googleapis.com"},
178- {Provider: "google-vertex", ID: "gemini-1.5-pro", DisplayName: "Gemini 1.5 Pro (Vertex)", ContextWindow: 1000000, MaxOutput: 8192, Reasoning: false, PriceInput: 1.25, PriceOutput: 5, PriceCacheRead: 0.3125, BaseURL: "https://{location}-aiplatform.googleapis.com"},
179- {Provider: "google-vertex", ID: "gemini-2.0-flash", DisplayName: "Gemini 2.0 Flash (Vertex)", ContextWindow: 1048576, MaxOutput: 8192, Reasoning: false, PriceInput: 0.15, PriceOutput: 0.6, PriceCacheRead: 0.0375, BaseURL: "https://{location}-aiplatform.googleapis.com"},
180- {Provider: "google-vertex", ID: "gemini-2.0-flash-lite", DisplayName: "Gemini 2.0 Flash Lite (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 0.075, PriceOutput: 0.3, PriceCacheRead: 0.01875, BaseURL: "https://{location}-aiplatform.googleapis.com"},
181176 {Provider: "google-vertex", ID: "gemini-2.5-flash", DisplayName: "Gemini 2.5 Flash (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 0.3, PriceOutput: 2.5, PriceCacheRead: 0.03, BaseURL: "https://{location}-aiplatform.googleapis.com"},
182177 {Provider: "google-vertex", ID: "gemini-2.5-flash-lite", DisplayName: "Gemini 2.5 Flash Lite (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 0.1, PriceOutput: 0.4, PriceCacheRead: 0.01, BaseURL: "https://{location}-aiplatform.googleapis.com"},
183- {Provider: "google-vertex", ID: "gemini-2.5-flash-lite-preview-09-2025", DisplayName: "Gemini 2.5 Flash Lite Preview 09-25 (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 0.1, PriceOutput: 0.4, PriceCacheRead: 0.01, BaseURL: "https://{location}-aiplatform.googleapis.com"},
184178 {Provider: "google-vertex", ID: "gemini-2.5-pro", DisplayName: "Gemini 2.5 Pro (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 1.25, PriceOutput: 10, PriceCacheRead: 0.125, BaseURL: "https://{location}-aiplatform.googleapis.com"},
185179 {Provider: "google-vertex", ID: "gemini-3-flash-preview", DisplayName: "Gemini 3 Flash Preview (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 0.5, PriceOutput: 3, PriceCacheRead: 0.05, BaseURL: "https://{location}-aiplatform.googleapis.com"},
186180 {Provider: "google-vertex", ID: "gemini-3-pro-preview", DisplayName: "Gemini 3 Pro Preview (Vertex)", ContextWindow: 1000000, MaxOutput: 64000, Reasoning: true, PriceInput: 2, PriceOutput: 12, PriceCacheRead: 0.2, BaseURL: "https://{location}-aiplatform.googleapis.com"},
181+ {Provider: "google-vertex", ID: "gemini-3.1-flash-lite", DisplayName: "Gemini 3.1 Flash Lite (Vertex)", ContextWindow: 1048576, MaxOutput: 65535, Reasoning: true, PriceInput: 0.25, PriceOutput: 1.5, PriceCacheRead: 0.025, BaseURL: "https://{location}-aiplatform.googleapis.com"},
187182 {Provider: "google-vertex", ID: "gemini-3.1-pro-preview", DisplayName: "Gemini 3.1 Pro Preview (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 2, PriceOutput: 12, PriceCacheRead: 0.2, BaseURL: "https://{location}-aiplatform.googleapis.com"},
188- {Provider: "google-vertex", ID: "gemini-3.1-pro-preview-customtools", DisplayName: "Gemini 3.1 Pro Preview Custom Tools (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 2, PriceOutput: 12, PriceCacheRead: 0.2, BaseURL: "https://{location}-aiplatform.googleapis.com"},
183+ {Provider: "google-vertex", ID: "gemini-3.5-flash", DisplayName: "Gemini 3.5 Flash (Vertex)", ContextWindow: 1048576, MaxOutput: 65535, Reasoning: true, PriceInput: 1.5, PriceOutput: 9, PriceCacheRead: 0.15, BaseURL: "https://{location}-aiplatform.googleapis.com"},
189184 // ----- groq -----
190185 {Provider: "groq", ID: "deepseek-r1-distill-llama-70b", DisplayName: "DeepSeek R1 Distill Llama 70B", ContextWindow: 131072, MaxOutput: 8192, Reasoning: true, PriceInput: 0.75, PriceOutput: 0.99, PriceCacheRead: 0, BaseURL: "https://api.groq.com/openai/v1"},
191186 {Provider: "groq", ID: "gemma2-9b-it", DisplayName: "Gemma 2 9B", ContextWindow: 8192, MaxOutput: 8192, Reasoning: false, PriceInput: 0.2, PriceOutput: 0.2, PriceCacheRead: 0, BaseURL: "https://api.groq.com/openai/v1"},
@@ -173,19 +173,14 @@ var builtinCatalog = []Model{
173 {Provider: "google", ID: "gemma-4-26b-a4b-it", DisplayName: "Gemma 4 26B A4B IT", ContextWindow: 262144, MaxOutput: 32768, Reasoning: true, PriceInput: 0, PriceOutput: 0, PriceCacheRead: 0, BaseURL: "https://generativelanguage.googleapis.com/v1beta"},173 {Provider: "google", ID: "gemma-4-26b-a4b-it", DisplayName: "Gemma 4 26B A4B IT", ContextWindow: 262144, MaxOutput: 32768, Reasoning: true, PriceInput: 0, PriceOutput: 0, PriceCacheRead: 0, BaseURL: "https://generativelanguage.googleapis.com/v1beta"},
174 {Provider: "google", ID: "gemma-4-31b-it", DisplayName: "Gemma 4 31B IT", ContextWindow: 262144, MaxOutput: 32768, Reasoning: true, PriceInput: 0, PriceOutput: 0, PriceCacheRead: 0, BaseURL: "https://generativelanguage.googleapis.com/v1beta"},174 {Provider: "google", ID: "gemma-4-31b-it", DisplayName: "Gemma 4 31B IT", ContextWindow: 262144, MaxOutput: 32768, Reasoning: true, PriceInput: 0, PriceOutput: 0, PriceCacheRead: 0, BaseURL: "https://generativelanguage.googleapis.com/v1beta"},
175 // ----- google-vertex -----175 // ----- google-vertex -----
176- {Provider: "google-vertex", ID: "gemini-1.5-flash", DisplayName: "Gemini 1.5 Flash (Vertex)", ContextWindow: 1000000, MaxOutput: 8192, Reasoning: false, PriceInput: 0.075, PriceOutput: 0.3, PriceCacheRead: 0.01875, BaseURL: "https://{location}-aiplatform.googleapis.com"},
177- {Provider: "google-vertex", ID: "gemini-1.5-flash-8b", DisplayName: "Gemini 1.5 Flash-8B (Vertex)", ContextWindow: 1000000, MaxOutput: 8192, Reasoning: false, PriceInput: 0.0375, PriceOutput: 0.15, PriceCacheRead: 0.01, BaseURL: "https://{location}-aiplatform.googleapis.com"},
178- {Provider: "google-vertex", ID: "gemini-1.5-pro", DisplayName: "Gemini 1.5 Pro (Vertex)", ContextWindow: 1000000, MaxOutput: 8192, Reasoning: false, PriceInput: 1.25, PriceOutput: 5, PriceCacheRead: 0.3125, BaseURL: "https://{location}-aiplatform.googleapis.com"},
179- {Provider: "google-vertex", ID: "gemini-2.0-flash", DisplayName: "Gemini 2.0 Flash (Vertex)", ContextWindow: 1048576, MaxOutput: 8192, Reasoning: false, PriceInput: 0.15, PriceOutput: 0.6, PriceCacheRead: 0.0375, BaseURL: "https://{location}-aiplatform.googleapis.com"},
180- {Provider: "google-vertex", ID: "gemini-2.0-flash-lite", DisplayName: "Gemini 2.0 Flash Lite (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 0.075, PriceOutput: 0.3, PriceCacheRead: 0.01875, BaseURL: "https://{location}-aiplatform.googleapis.com"},
181 {Provider: "google-vertex", ID: "gemini-2.5-flash", DisplayName: "Gemini 2.5 Flash (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 0.3, PriceOutput: 2.5, PriceCacheRead: 0.03, BaseURL: "https://{location}-aiplatform.googleapis.com"},176 {Provider: "google-vertex", ID: "gemini-2.5-flash", DisplayName: "Gemini 2.5 Flash (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 0.3, PriceOutput: 2.5, PriceCacheRead: 0.03, BaseURL: "https://{location}-aiplatform.googleapis.com"},
182 {Provider: "google-vertex", ID: "gemini-2.5-flash-lite", DisplayName: "Gemini 2.5 Flash Lite (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 0.1, PriceOutput: 0.4, PriceCacheRead: 0.01, BaseURL: "https://{location}-aiplatform.googleapis.com"},177 {Provider: "google-vertex", ID: "gemini-2.5-flash-lite", DisplayName: "Gemini 2.5 Flash Lite (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 0.1, PriceOutput: 0.4, PriceCacheRead: 0.01, BaseURL: "https://{location}-aiplatform.googleapis.com"},
183- {Provider: "google-vertex", ID: "gemini-2.5-flash-lite-preview-09-2025", DisplayName: "Gemini 2.5 Flash Lite Preview 09-25 (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 0.1, PriceOutput: 0.4, PriceCacheRead: 0.01, BaseURL: "https://{location}-aiplatform.googleapis.com"},
184 {Provider: "google-vertex", ID: "gemini-2.5-pro", DisplayName: "Gemini 2.5 Pro (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 1.25, PriceOutput: 10, PriceCacheRead: 0.125, BaseURL: "https://{location}-aiplatform.googleapis.com"},178 {Provider: "google-vertex", ID: "gemini-2.5-pro", DisplayName: "Gemini 2.5 Pro (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 1.25, PriceOutput: 10, PriceCacheRead: 0.125, BaseURL: "https://{location}-aiplatform.googleapis.com"},
185 {Provider: "google-vertex", ID: "gemini-3-flash-preview", DisplayName: "Gemini 3 Flash Preview (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 0.5, PriceOutput: 3, PriceCacheRead: 0.05, BaseURL: "https://{location}-aiplatform.googleapis.com"},179 {Provider: "google-vertex", ID: "gemini-3-flash-preview", DisplayName: "Gemini 3 Flash Preview (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 0.5, PriceOutput: 3, PriceCacheRead: 0.05, BaseURL: "https://{location}-aiplatform.googleapis.com"},
186 {Provider: "google-vertex", ID: "gemini-3-pro-preview", DisplayName: "Gemini 3 Pro Preview (Vertex)", ContextWindow: 1000000, MaxOutput: 64000, Reasoning: true, PriceInput: 2, PriceOutput: 12, PriceCacheRead: 0.2, BaseURL: "https://{location}-aiplatform.googleapis.com"},180 {Provider: "google-vertex", ID: "gemini-3-pro-preview", DisplayName: "Gemini 3 Pro Preview (Vertex)", ContextWindow: 1000000, MaxOutput: 64000, Reasoning: true, PriceInput: 2, PriceOutput: 12, PriceCacheRead: 0.2, BaseURL: "https://{location}-aiplatform.googleapis.com"},
181+ {Provider: "google-vertex", ID: "gemini-3.1-flash-lite", DisplayName: "Gemini 3.1 Flash Lite (Vertex)", ContextWindow: 1048576, MaxOutput: 65535, Reasoning: true, PriceInput: 0.25, PriceOutput: 1.5, PriceCacheRead: 0.025, BaseURL: "https://{location}-aiplatform.googleapis.com"},
187 {Provider: "google-vertex", ID: "gemini-3.1-pro-preview", DisplayName: "Gemini 3.1 Pro Preview (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 2, PriceOutput: 12, PriceCacheRead: 0.2, BaseURL: "https://{location}-aiplatform.googleapis.com"},182 {Provider: "google-vertex", ID: "gemini-3.1-pro-preview", DisplayName: "Gemini 3.1 Pro Preview (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 2, PriceOutput: 12, PriceCacheRead: 0.2, BaseURL: "https://{location}-aiplatform.googleapis.com"},
188- {Provider: "google-vertex", ID: "gemini-3.1-pro-preview-customtools", DisplayName: "Gemini 3.1 Pro Preview Custom Tools (Vertex)", ContextWindow: 1048576, MaxOutput: 65536, Reasoning: true, PriceInput: 2, PriceOutput: 12, PriceCacheRead: 0.2, BaseURL: "https://{location}-aiplatform.googleapis.com"},183+ {Provider: "google-vertex", ID: "gemini-3.5-flash", DisplayName: "Gemini 3.5 Flash (Vertex)", ContextWindow: 1048576, MaxOutput: 65535, Reasoning: true, PriceInput: 1.5, PriceOutput: 9, PriceCacheRead: 0.15, BaseURL: "https://{location}-aiplatform.googleapis.com"},
189 // ----- groq -----184 // ----- groq -----
190 {Provider: "groq", ID: "deepseek-r1-distill-llama-70b", DisplayName: "DeepSeek R1 Distill Llama 70B", ContextWindow: 131072, MaxOutput: 8192, Reasoning: true, PriceInput: 0.75, PriceOutput: 0.99, PriceCacheRead: 0, BaseURL: "https://api.groq.com/openai/v1"},185 {Provider: "groq", ID: "deepseek-r1-distill-llama-70b", DisplayName: "DeepSeek R1 Distill Llama 70B", ContextWindow: 131072, MaxOutput: 8192, Reasoning: true, PriceInput: 0.75, PriceOutput: 0.99, PriceCacheRead: 0, BaseURL: "https://api.groq.com/openai/v1"},
191 {Provider: "groq", ID: "gemma2-9b-it", DisplayName: "Gemma 2 9B", ContextWindow: 8192, MaxOutput: 8192, Reasoning: false, PriceInput: 0.2, PriceOutput: 0.2, PriceCacheRead: 0, BaseURL: "https://api.groq.com/openai/v1"},186 {Provider: "groq", ID: "gemma2-9b-it", DisplayName: "Gemma 2 9B", ContextWindow: 8192, MaxOutput: 8192, Reasoning: false, PriceInput: 0.2, PriceOutput: 0.2, PriceCacheRead: 0, BaseURL: "https://api.groq.com/openai/v1"},
M packages/provider/provider_test.go +12 -0
@@ -41,6 +41,18 @@ func TestModelCatalog(t *testing.T) {
4141 }
4242 }
4343
44+func TestVertexGeminiFlashCatalogLimits(t *testing.T) {
45+ for _, id := range []string{"gemini-3.1-flash-lite", "gemini-3.5-flash"} {
46+ m, err := FindModel("google-vertex", id)
47+ if err != nil {
48+ t.Fatal(err)
49+ }
50+ if m.ContextWindow != 1048576 || m.MaxOutput != 65535 || !m.Reasoning {
51+ t.Errorf("%s metadata = %+v", id, m)
52+ }
53+ }
54+}
55+
4456 func TestComputeCost(t *testing.T) {
4557 m, _ := FindModel("anthropic", "claude-sonnet-4-5")
4658 cost := ComputeCost(m, Usage{InputTokens: 1_000_000, OutputTokens: 1_000_000})
@@ -41,6 +41,18 @@ func TestModelCatalog(t *testing.T) {
41 }41 }
42 }42 }
43 43
44+func TestVertexGeminiFlashCatalogLimits(t *testing.T) {
45+ for _, id := range []string{"gemini-3.1-flash-lite", "gemini-3.5-flash"} {
46+ m, err := FindModel("google-vertex", id)
47+ if err != nil {
48+ t.Fatal(err)
49+ }
50+ if m.ContextWindow != 1048576 || m.MaxOutput != 65535 || !m.Reasoning {
51+ t.Errorf("%s metadata = %+v", id, m)
52+ }
53+ }
54+}
55+
44 func TestComputeCost(t *testing.T) {56 func TestComputeCost(t *testing.T) {
45 m, _ := FindModel("anthropic", "claude-sonnet-4-5")57 m, _ := FindModel("anthropic", "claude-sonnet-4-5")
46 cost := ComputeCost(m, Usage{InputTokens: 1_000_000, OutputTokens: 1_000_000})58 cost := ComputeCost(m, Usage{InputTokens: 1_000_000, OutputTokens: 1_000_000})

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 476

↑↓ moveenter openesc close