Skip to content

Commit c45802b

Browse files
committed
fix: adding more migration changes and unit tests
1 parent 6c7f188 commit c45802b

File tree

6 files changed

+199
-86
lines changed

6 files changed

+199
-86
lines changed

packages/types/src/providers/gemini.ts

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,6 @@ export type GeminiModelId = keyof typeof geminiModels
66
export const geminiDefaultModelId: GeminiModelId = "gemini-2.0-flash-001"
77

88
export const geminiModels = {
9-
"gemini-2.5-flash-preview-04-17:thinking": {
10-
maxTokens: 65_535,
11-
contextWindow: 1_048_576,
12-
supportsImages: true,
13-
supportsPromptCache: false,
14-
inputPrice: 0.15,
15-
outputPrice: 3.5,
16-
maxThinkingTokens: 24_576,
17-
supportsReasoningBudget: true,
18-
requiredReasoningBudget: true,
19-
},
20-
"gemini-2.5-flash-preview-04-17": {
21-
maxTokens: 65_535,
22-
contextWindow: 1_048_576,
23-
supportsImages: true,
24-
supportsPromptCache: false,
25-
inputPrice: 0.15,
26-
outputPrice: 0.6,
27-
},
289
"gemini-2.5-flash-preview-05-20:thinking": {
2910
maxTokens: 65_535,
3011
contextWindow: 1_048_576,
@@ -105,38 +86,6 @@ export const geminiModels = {
10586
inputPrice: 0,
10687
outputPrice: 0,
10788
},
108-
"gemini-2.0-pro-exp-02-05": {
109-
maxTokens: 8192,
110-
contextWindow: 2_097_152,
111-
supportsImages: true,
112-
supportsPromptCache: false,
113-
inputPrice: 0,
114-
outputPrice: 0,
115-
},
116-
"gemini-2.0-flash-thinking-exp-01-21": {
117-
maxTokens: 65_536,
118-
contextWindow: 1_048_576,
119-
supportsImages: true,
120-
supportsPromptCache: false,
121-
inputPrice: 0,
122-
outputPrice: 0,
123-
},
124-
"gemini-2.0-flash-thinking-exp-1219": {
125-
maxTokens: 8192,
126-
contextWindow: 32_767,
127-
supportsImages: true,
128-
supportsPromptCache: false,
129-
inputPrice: 0,
130-
outputPrice: 0,
131-
},
132-
"gemini-2.0-flash-exp": {
133-
maxTokens: 8192,
134-
contextWindow: 1_048_576,
135-
supportsImages: true,
136-
supportsPromptCache: false,
137-
inputPrice: 0,
138-
outputPrice: 0,
139-
},
14089
"gemini-2.5-flash-lite-preview-06-17": {
14190
maxTokens: 64_000,
14291
contextWindow: 1_048_576,
@@ -298,4 +247,55 @@ export const legacyGeminiModels = {
298247
inputPrice: 0,
299248
outputPrice: 0,
300249
},
250+
"gemini-2.0-pro-exp-02-05": {
251+
maxTokens: 8192,
252+
contextWindow: 2_097_152,
253+
supportsImages: true,
254+
supportsPromptCache: false,
255+
inputPrice: 0,
256+
outputPrice: 0,
257+
},
258+
"gemini-2.0-flash-thinking-exp-1219": {
259+
maxTokens: 8192,
260+
contextWindow: 32_767,
261+
supportsImages: true,
262+
supportsPromptCache: false,
263+
inputPrice: 0,
264+
outputPrice: 0,
265+
},
266+
"gemini-2.0-flash-thinking-exp-01-21": {
267+
maxTokens: 65_536,
268+
contextWindow: 1_048_576,
269+
supportsImages: true,
270+
supportsPromptCache: false,
271+
inputPrice: 0,
272+
outputPrice: 0,
273+
},
274+
"gemini-2.5-flash-preview-04-17:thinking": {
275+
maxTokens: 65_535,
276+
contextWindow: 1_048_576,
277+
supportsImages: true,
278+
supportsPromptCache: false,
279+
inputPrice: 0.15,
280+
outputPrice: 3.5,
281+
maxThinkingTokens: 24_576,
282+
supportsReasoningBudget: true,
283+
requiredReasoningBudget: true,
284+
},
285+
"gemini-2.5-flash-preview-04-17": {
286+
maxTokens: 65_535,
287+
contextWindow: 1_048_576,
288+
supportsImages: true,
289+
supportsPromptCache: false,
290+
inputPrice: 0.15,
291+
outputPrice: 0.6,
292+
},
293+
"gemini-2.0-flash-exp": {
294+
maxTokens: 8192,
295+
contextWindow: 1_048_576,
296+
supportsImages: true,
297+
supportsPromptCache: false,
298+
inputPrice: 0,
299+
outputPrice: 0,
300+
},
301301
} as const satisfies Record<string, ModelInfo>

packages/types/src/providers/vertex.ts

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -37,25 +37,6 @@ export const vertexModels = {
3737
maxThinkingTokens: 24_576,
3838
supportsReasoningBudget: true,
3939
},
40-
"gemini-2.5-flash-preview-04-17:thinking": {
41-
maxTokens: 65_535,
42-
contextWindow: 1_048_576,
43-
supportsImages: true,
44-
supportsPromptCache: false,
45-
inputPrice: 0.15,
46-
outputPrice: 3.5,
47-
maxThinkingTokens: 24_576,
48-
supportsReasoningBudget: true,
49-
requiredReasoningBudget: true,
50-
},
51-
"gemini-2.5-flash-preview-04-17": {
52-
maxTokens: 65_535,
53-
contextWindow: 1_048_576,
54-
supportsImages: true,
55-
supportsPromptCache: false,
56-
inputPrice: 0.15,
57-
outputPrice: 0.6,
58-
},
5940
"gemini-2.5-pro": {
6041
maxTokens: 64_000,
6142
contextWindow: 1_048_576,
@@ -81,14 +62,6 @@ export const vertexModels = {
8162
},
8263
],
8364
},
84-
"gemini-2.0-pro-exp-02-05": {
85-
maxTokens: 8192,
86-
contextWindow: 2_097_152,
87-
supportsImages: true,
88-
supportsPromptCache: false,
89-
inputPrice: 0,
90-
outputPrice: 0,
91-
},
9265
"gemini-2.0-flash-001": {
9366
maxTokens: 8192,
9467
contextWindow: 1_048_576,
@@ -105,14 +78,6 @@ export const vertexModels = {
10578
inputPrice: 0.075,
10679
outputPrice: 0.3,
10780
},
108-
"gemini-2.0-flash-thinking-exp-01-21": {
109-
maxTokens: 8192,
110-
contextWindow: 32_768,
111-
supportsImages: true,
112-
supportsPromptCache: false,
113-
inputPrice: 0,
114-
outputPrice: 0,
115-
},
11681
"claude-sonnet-4@20250514": {
11782
maxTokens: 8192,
11883
contextWindow: 200_000,
@@ -311,4 +276,39 @@ export const legacyVertexModels = {
311276
maxThinkingTokens: 32_768,
312277
supportsReasoningBudget: true,
313278
},
279+
"gemini-2.0-pro-exp-02-05": {
280+
maxTokens: 8192,
281+
contextWindow: 2_097_152,
282+
supportsImages: true,
283+
supportsPromptCache: false,
284+
inputPrice: 0,
285+
outputPrice: 0,
286+
},
287+
"gemini-2.0-flash-thinking-exp-01-21": {
288+
maxTokens: 8192,
289+
contextWindow: 32_768,
290+
supportsImages: true,
291+
supportsPromptCache: false,
292+
inputPrice: 0,
293+
outputPrice: 0,
294+
},
295+
"gemini-2.5-flash-preview-04-17:thinking": {
296+
maxTokens: 65_535,
297+
contextWindow: 1_048_576,
298+
supportsImages: true,
299+
supportsPromptCache: false,
300+
inputPrice: 0.15,
301+
outputPrice: 3.5,
302+
maxThinkingTokens: 24_576,
303+
supportsReasoningBudget: true,
304+
requiredReasoningBudget: true,
305+
},
306+
"gemini-2.5-flash-preview-04-17": {
307+
maxTokens: 65_535,
308+
contextWindow: 1_048_576,
309+
supportsImages: true,
310+
supportsPromptCache: false,
311+
inputPrice: 0.15,
312+
outputPrice: 0.6,
313+
},
314314
} as const satisfies Record<string, ModelInfo>

src/api/providers/__tests__/gemini.spec.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,51 @@ describe("GeminiHandler", () => {
209209
expect(modelInfo.id).toBe("gemini-2.0-flash-001")
210210
})
211211

212+
it("should map gemini-2.0-pro-exp-02-05 to gemini-2.5-pro", () => {
213+
const legacyHandler = new GeminiHandler({
214+
apiModelId: "gemini-2.0-pro-exp-02-05",
215+
geminiApiKey: "test-key",
216+
})
217+
const modelInfo = legacyHandler.getModel()
218+
expect(modelInfo.id).toBe("gemini-2.5-pro")
219+
})
220+
221+
it("should map gemini-2.0-flash-thinking-exp-1219 to gemini-2.5-flash-preview-05-20", () => {
222+
const legacyHandler = new GeminiHandler({
223+
apiModelId: "gemini-2.0-flash-thinking-exp-1219",
224+
geminiApiKey: "test-key",
225+
})
226+
const modelInfo = legacyHandler.getModel()
227+
expect(modelInfo.id).toBe("gemini-2.5-flash-preview-05-20")
228+
})
229+
230+
it("should map gemini-2.0-flash-thinking-exp-01-21 to gemini-2.5-flash-preview-05-20", () => {
231+
const legacyHandler = new GeminiHandler({
232+
apiModelId: "gemini-2.0-flash-thinking-exp-01-21",
233+
geminiApiKey: "test-key",
234+
})
235+
const modelInfo = legacyHandler.getModel()
236+
expect(modelInfo.id).toBe("gemini-2.5-flash-preview-05-20")
237+
})
238+
239+
it("should map gemini-2.5-flash-preview-04-17 to gemini-2.5-flash-preview-05-20", () => {
240+
const legacyHandler = new GeminiHandler({
241+
apiModelId: "gemini-2.5-flash-preview-04-17",
242+
geminiApiKey: "test-key",
243+
})
244+
const modelInfo = legacyHandler.getModel()
245+
expect(modelInfo.id).toBe("gemini-2.5-flash-preview-05-20")
246+
})
247+
248+
it("should map gemini-2.0-flash-exp to gemini-2.0-flash-001", () => {
249+
const legacyHandler = new GeminiHandler({
250+
apiModelId: "gemini-2.0-flash-exp",
251+
geminiApiKey: "test-key",
252+
})
253+
const modelInfo = legacyHandler.getModel()
254+
expect(modelInfo.id).toBe("gemini-2.0-flash-001")
255+
})
256+
212257
it("should keep current models as-is", () => {
213258
const currentHandler = new GeminiHandler({
214259
apiModelId: "gemini-2.5-pro",

src/api/providers/__tests__/vertex.spec.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,46 @@ describe("VertexHandler", () => {
189189
expect(modelInfo.id).toBe("gemini-2.5-pro")
190190
})
191191

192+
it("should map gemini-2.0-pro-exp-02-05 to gemini-2.5-pro", () => {
193+
const legacyHandler = new VertexHandler({
194+
apiModelId: "gemini-2.0-pro-exp-02-05",
195+
vertexProjectId: "test-project",
196+
vertexRegion: "us-central1",
197+
})
198+
const modelInfo = legacyHandler.getModel()
199+
expect(modelInfo.id).toBe("gemini-2.5-pro")
200+
})
201+
202+
it("should map gemini-2.0-flash-thinking-exp-1219 to gemini-2.5-flash-preview-05-20", () => {
203+
const legacyHandler = new VertexHandler({
204+
apiModelId: "gemini-2.0-flash-thinking-exp-1219",
205+
vertexProjectId: "test-project",
206+
vertexRegion: "us-central1",
207+
})
208+
const modelInfo = legacyHandler.getModel()
209+
expect(modelInfo.id).toBe("gemini-2.5-flash-preview-05-20")
210+
})
211+
212+
it("should map gemini-2.0-flash-thinking-exp-01-21 to gemini-2.5-flash-preview-05-20", () => {
213+
const legacyHandler = new VertexHandler({
214+
apiModelId: "gemini-2.0-flash-thinking-exp-01-21",
215+
vertexProjectId: "test-project",
216+
vertexRegion: "us-central1",
217+
})
218+
const modelInfo = legacyHandler.getModel()
219+
expect(modelInfo.id).toBe("gemini-2.5-flash-preview-05-20")
220+
})
221+
222+
it("should map gemini-2.5-flash-preview-04-17 to gemini-2.5-flash-preview-05-20", () => {
223+
const legacyHandler = new VertexHandler({
224+
apiModelId: "gemini-2.5-flash-preview-04-17",
225+
vertexProjectId: "test-project",
226+
vertexRegion: "us-central1",
227+
})
228+
const modelInfo = legacyHandler.getModel()
229+
expect(modelInfo.id).toBe("gemini-2.5-flash-preview-05-20")
230+
})
231+
192232
it("should keep claude models as-is", () => {
193233
const claudeHandler = new VertexHandler({
194234
apiModelId: "claude-sonnet-4@20250514",

src/api/providers/gemini.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,22 @@ export class GeminiHandler extends BaseProvider implements SingleCompletionHandl
6262
if (modelId === "gemini-exp-1206") {
6363
return geminiDefaultModelId
6464
}
65+
66+
if (modelId === "gemini-2.0-pro-exp-02-05") {
67+
return "gemini-2.5-pro"
68+
}
69+
70+
if (
71+
modelId === "gemini-2.0-flash-thinking-exp-1219" ||
72+
modelId === "gemini-2.0-flash-thinking-exp-01-21" ||
73+
modelId === "gemini-2.5-flash-preview-04-17"
74+
) {
75+
return "gemini-2.5-flash-preview-05-20"
76+
}
77+
78+
if (modelId === "gemini-2.0-flash-exp") {
79+
return geminiDefaultModelId
80+
}
6581
}
6682

6783
return geminiDefaultModelId

src/api/providers/vertex.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,18 @@ export class VertexHandler extends GeminiHandler implements SingleCompletionHand
4242
if (modelId.startsWith("gemini-2.5-pro-exp-")) {
4343
return "gemini-2.5-pro"
4444
}
45+
46+
if (modelId === "gemini-2.0-pro-exp-02-05") {
47+
return "gemini-2.5-pro"
48+
}
49+
50+
if (
51+
modelId === "gemini-2.0-flash-thinking-exp-1219" ||
52+
modelId === "gemini-2.0-flash-thinking-exp-01-21" ||
53+
modelId === "gemini-2.5-flash-preview-04-17"
54+
) {
55+
return "gemini-2.5-flash-preview-05-20"
56+
}
4557
}
4658

4759
return vertexDefaultModelId

0 commit comments

Comments
 (0)