fix: normalize prefixed gemini pro config ids · openclaw/openclaw@1542212
steipete
·
2026-05-11
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -30,6 +30,12 @@ describe("google model id helpers", () => {
|
30 | 30 | expect(normalizeGoogleModelId("gemini-3.1-pro-preview")).toBe("gemini-3.1-pro-preview"); |
31 | 31 | }); |
32 | 32 | |
| 33 | +it("normalizes provider-prefixed Gemini 3 Pro config ids", () => { |
| 34 | +expect(normalizeGoogleModelId("google/gemini-3-pro-preview")).toBe( |
| 35 | +"google/gemini-3.1-pro-preview", |
| 36 | +); |
| 37 | +}); |
| 38 | + |
33 | 39 | it("adds the preview suffix for gemini 3.1 flash-lite", () => { |
34 | 40 | expect(normalizeGoogleModelId("gemini-3.1-flash-lite")).toBe("gemini-3.1-flash-lite-preview"); |
35 | 41 | }); |
|
| Original file line number | Diff line number | Diff line change |
|---|
|
1 | 1 | const ANTIGRAVITY_BARE_PRO_IDS = new Set(["gemini-3-pro", "gemini-3.1-pro", "gemini-3-1-pro"]); |
| 2 | +const GOOGLE_PROVIDER_PREFIX = "google/"; |
2 | 3 | |
3 | 4 | export function normalizeGoogleModelId(id: string): string { |
| 5 | +if (id.startsWith(GOOGLE_PROVIDER_PREFIX)) { |
| 6 | +const modelId = id.slice(GOOGLE_PROVIDER_PREFIX.length); |
| 7 | +const normalizedModelId = normalizeGoogleModelId(modelId); |
| 8 | +return normalizedModelId === modelId ? id : `${GOOGLE_PROVIDER_PREFIX}${normalizedModelId}`; |
| 9 | +} |
4 | 10 | if (id === "gemini-3-pro" || id === "gemini-3-pro-preview") { |
5 | 11 | return "gemini-3.1-pro-preview"; |
6 | 12 | } |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -165,6 +165,35 @@ describe("applyModelDefaults", () => {
|
165 | 165 | }); |
166 | 166 | }); |
167 | 167 | |
| 168 | +it("normalizes provider-prefixed Gemini ids in configured Google provider rows", () => { |
| 169 | +const cfg = { |
| 170 | +models: { |
| 171 | +providers: { |
| 172 | +google: { |
| 173 | +baseUrl: "https://generativelanguage.googleapis.com/v1beta", |
| 174 | +api: "google-generative-ai", |
| 175 | +apiKey: "GOOGLE_API_KEY", |
| 176 | +models: [ |
| 177 | +{ |
| 178 | +id: "google/gemini-3-pro-preview", |
| 179 | +name: "Gemini 3 Pro", |
| 180 | +input: ["text", "image"], |
| 181 | +reasoning: true, |
| 182 | +cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, |
| 183 | +contextWindow: 1_048_576, |
| 184 | +maxTokens: 65_536, |
| 185 | +}, |
| 186 | +], |
| 187 | +}, |
| 188 | +}, |
| 189 | +}, |
| 190 | +} satisfies OpenClawConfig; |
| 191 | + |
| 192 | +const next = applyModelDefaults(cfg); |
| 193 | + |
| 194 | +expect(next.models?.providers?.google?.models?.[0]?.id).toBe("google/gemini-3.1-pro-preview"); |
| 195 | +}); |
| 196 | + |
168 | 197 | it("fills missing model provider defaults", () => { |
169 | 198 | const cfg = buildProxyProviderConfig(); |
170 | 199 | |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -8,6 +8,12 @@ describe("provider model id normalization", () => {
|
8 | 8 | expect(normalizeGooglePreviewModelId("gemini-3.1-pro")).toBe("gemini-3.1-pro-preview"); |
9 | 9 | }); |
10 | 10 | |
| 11 | +it("routes provider-prefixed Gemini 3 Pro to the current Gemini 3.1 Pro preview", () => { |
| 12 | +expect(normalizeGooglePreviewModelId("google/gemini-3-pro-preview")).toBe( |
| 13 | +"google/gemini-3.1-pro-preview", |
| 14 | +); |
| 15 | +}); |
| 16 | + |
11 | 17 | it("does not rewrite already-current Gemini replacement ids", () => { |
12 | 18 | expect(normalizeGooglePreviewModelId("gemini-3.1-pro-preview")).toBe("gemini-3.1-pro-preview"); |
13 | 19 | expect(normalizeGooglePreviewModelId("gemini-2.5-flash")).toBe("gemini-2.5-flash"); |
|
| Original file line number | Diff line number | Diff line change |
|---|
|
1 | 1 | const ANTIGRAVITY_BARE_PRO_IDS = new Set(["gemini-3-pro", "gemini-3.1-pro", "gemini-3-1-pro"]); |
| 2 | +const GOOGLE_PROVIDER_PREFIX = "google/"; |
2 | 3 | |
3 | 4 | export function normalizeGooglePreviewModelId(id: string): string { |
| 5 | +if (id.startsWith(GOOGLE_PROVIDER_PREFIX)) { |
| 6 | +const modelId = id.slice(GOOGLE_PROVIDER_PREFIX.length); |
| 7 | +const normalizedModelId = normalizeGooglePreviewModelId(modelId); |
| 8 | +return normalizedModelId === modelId ? id : `${GOOGLE_PROVIDER_PREFIX}${normalizedModelId}`; |
| 9 | +} |
4 | 10 | if (id === "gemini-3-pro" || id === "gemini-3-pro-preview") { |
5 | 11 | return "gemini-3.1-pro-preview"; |
6 | 12 | } |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。