Skip to content

Commit 51475ab

Browse files
committed
Default to Sonnet 4
1 parent b655c0d commit 51475ab

File tree

5 files changed

+39
-29
lines changed

5 files changed

+39
-29
lines changed

src/api/providers/__tests__/openrouter.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jest.mock("delay", () => jest.fn(() => Promise.resolve()))
1212
jest.mock("../fetchers/modelCache", () => ({
1313
getModels: jest.fn().mockImplementation(() => {
1414
return Promise.resolve({
15-
"anthropic/claude-3.7-sonnet": {
15+
"anthropic/claude-sonnet-4": {
1616
maxTokens: 8192,
1717
contextWindow: 200000,
1818
supportsImages: true,
@@ -44,7 +44,7 @@ jest.mock("../fetchers/modelCache", () => ({
4444
describe("OpenRouterHandler", () => {
4545
const mockOptions: ApiHandlerOptions = {
4646
openRouterApiKey: "test-key",
47-
openRouterModelId: "anthropic/claude-3.7-sonnet",
47+
openRouterModelId: "anthropic/claude-sonnet-4",
4848
}
4949

5050
beforeEach(() => jest.clearAllMocks())
@@ -84,7 +84,7 @@ describe("OpenRouterHandler", () => {
8484
it("returns default model info when options are not provided", async () => {
8585
const handler = new OpenRouterHandler({})
8686
const result = await handler.fetchModel()
87-
expect(result.id).toBe("anthropic/claude-3.7-sonnet")
87+
expect(result.id).toBe("anthropic/claude-sonnet-4")
8888
expect(result.info.supportsPromptCache).toBe(true)
8989
})
9090

@@ -172,7 +172,7 @@ describe("OpenRouterHandler", () => {
172172
role: "user",
173173
},
174174
],
175-
model: "anthropic/claude-3.7-sonnet",
175+
model: "anthropic/claude-sonnet-4",
176176
stream: true,
177177
stream_options: { include_usage: true },
178178
temperature: 0,

src/api/providers/__tests__/requesty.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jest.mock("delay", () => jest.fn(() => Promise.resolve()))
1111
jest.mock("../fetchers/modelCache", () => ({
1212
getModels: jest.fn().mockImplementation(() => {
1313
return Promise.resolve({
14-
"coding/claude-3-7-sonnet": {
14+
"coding/claude-4-sonnet": {
1515
maxTokens: 8192,
1616
contextWindow: 200000,
1717
supportsImages: true,
@@ -21,7 +21,7 @@ jest.mock("../fetchers/modelCache", () => ({
2121
outputPrice: 15,
2222
cacheWritesPrice: 3.75,
2323
cacheReadsPrice: 0.3,
24-
description: "Claude 3.7 Sonnet",
24+
description: "Claude 4 Sonnet",
2525
},
2626
})
2727
}),
@@ -30,7 +30,7 @@ jest.mock("../fetchers/modelCache", () => ({
3030
describe("RequestyHandler", () => {
3131
const mockOptions: ApiHandlerOptions = {
3232
requestyApiKey: "test-key",
33-
requestyModelId: "coding/claude-3-7-sonnet",
33+
requestyModelId: "coding/claude-4-sonnet",
3434
}
3535

3636
beforeEach(() => jest.clearAllMocks())
@@ -66,7 +66,7 @@ describe("RequestyHandler", () => {
6666
outputPrice: 15,
6767
cacheWritesPrice: 3.75,
6868
cacheReadsPrice: 0.3,
69-
description: "Claude 3.7 Sonnet",
69+
description: "Claude 4 Sonnet",
7070
},
7171
})
7272
})
@@ -87,7 +87,7 @@ describe("RequestyHandler", () => {
8787
outputPrice: 15,
8888
cacheWritesPrice: 3.75,
8989
cacheReadsPrice: 0.3,
90-
description: "Claude 3.7 Sonnet",
90+
description: "Claude 4 Sonnet",
9191
},
9292
})
9393
})
@@ -161,7 +161,7 @@ describe("RequestyHandler", () => {
161161
content: "test message",
162162
},
163163
],
164-
model: "coding/claude-3-7-sonnet",
164+
model: "coding/claude-4-sonnet",
165165
stream: true,
166166
stream_options: { include_usage: true },
167167
temperature: undefined,

src/core/webview/__tests__/ClineProvider.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2114,7 +2114,7 @@ describe("getTelemetryProperties", () => {
21142114
mockCline = new Task(defaultTaskOptions)
21152115
mockCline.api = {
21162116
getModel: jest.fn().mockReturnValue({
2117-
id: "claude-3-7-sonnet-20250219",
2117+
id: "claude-sonnet-4-20250514",
21182118
info: { contextWindow: 200000 },
21192119
}),
21202120
}
@@ -2134,7 +2134,7 @@ describe("getTelemetryProperties", () => {
21342134

21352135
const properties = await provider.getTelemetryProperties()
21362136

2137-
expect(properties).toHaveProperty("modelId", "claude-3-7-sonnet-20250219")
2137+
expect(properties).toHaveProperty("modelId", "claude-sonnet-4-20250514")
21382138
})
21392139
})
21402140

src/shared/api.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export type ApiHandlerOptions = Omit<ProviderSettings, "apiProvider">
88
// Anthropic
99
// https://docs.anthropic.com/en/docs/about-claude/models
1010
export type AnthropicModelId = keyof typeof anthropicModels
11-
export const anthropicDefaultModelId: AnthropicModelId = "claude-3-7-sonnet-20250219"
11+
export const anthropicDefaultModelId: AnthropicModelId = "claude-sonnet-4-20250514"
1212
export const anthropicModels = {
1313
"claude-sonnet-4-20250514": {
1414
maxTokens: 64_000, // Overridden to 8k if `enableReasoningEffort` is false.
@@ -125,7 +125,7 @@ export interface MessageContent {
125125
}
126126

127127
export type BedrockModelId = keyof typeof bedrockModels
128-
export const bedrockDefaultModelId: BedrockModelId = "anthropic.claude-3-7-sonnet-20250219-v1:0"
128+
export const bedrockDefaultModelId: BedrockModelId = "anthropic.claude-sonnet-4-20250514-v1:0"
129129
export const bedrockDefaultPromptRouterModelId: BedrockModelId = "anthropic.claude-3-sonnet-20240229-v1:0"
130130

131131
// March, 12 2025 - updated prices to match US-West-2 list price shown at https://aws.amazon.com/bedrock/pricing/
@@ -488,7 +488,7 @@ export const glamaDefaultModelInfo: ModelInfo = {
488488

489489
// Requesty
490490
// https://requesty.ai/router-2
491-
export const requestyDefaultModelId = "coding/claude-3-7-sonnet"
491+
export const requestyDefaultModelId = "coding/claude-4-sonnet"
492492
export const requestyDefaultModelInfo: ModelInfo = {
493493
maxTokens: 8192,
494494
contextWindow: 200_000,
@@ -500,12 +500,12 @@ export const requestyDefaultModelInfo: ModelInfo = {
500500
cacheWritesPrice: 3.75,
501501
cacheReadsPrice: 0.3,
502502
description:
503-
"The best coding model, optimized by Requesty, and automatically routed to the fastest provider. Claude 3.7 Sonnet is an advanced large language model with improved reasoning, coding, and problem-solving capabilities. It introduces a hybrid reasoning approach, allowing users to choose between rapid responses and extended, step-by-step processing for complex tasks. The model demonstrates notable improvements in coding, particularly in front-end development and full-stack updates, and excels in agentic workflows, where it can autonomously navigate multi-step processes. Claude 3.7 Sonnet maintains performance parity with its predecessor in standard mode while offering an extended reasoning mode for enhanced accuracy in math, coding, and instruction-following tasks. Read more at the [blog post here](https://www.anthropic.com/news/claude-3-7-sonnet)",
503+
"The best coding model, optimized by Requesty, and automatically routed to the fastest provider. Claude 4 Sonnet is an advanced large language model with improved reasoning, coding, and problem-solving capabilities.",
504504
}
505505

506506
// OpenRouter
507507
// https://openrouter.ai/models?order=newest&supported_parameters=tools
508-
export const openRouterDefaultModelId = "anthropic/claude-3.7-sonnet"
508+
export const openRouterDefaultModelId = "anthropic/claude-sonnet-4"
509509
export const openRouterDefaultModelInfo: ModelInfo = {
510510
maxTokens: 8192,
511511
contextWindow: 200_000,
@@ -523,7 +523,7 @@ export const openRouterDefaultModelInfo: ModelInfo = {
523523
// Vertex AI
524524
// https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-claude
525525
export type VertexModelId = keyof typeof vertexModels
526-
export const vertexDefaultModelId: VertexModelId = "claude-3-7-sonnet@20250219"
526+
export const vertexDefaultModelId: VertexModelId = "claude-sonnet-4@20250514"
527527
export const vertexModels = {
528528
"gemini-2.5-flash-preview-05-20:thinking": {
529529
maxTokens: 65_535,

webview-ui/src/components/ui/hooks/__tests__/useSelectedModel.test.ts

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -247,12 +247,17 @@ describe("useSelectedModel", () => {
247247
mockUseRouterModels.mockReturnValue({
248248
data: {
249249
openrouter: {
250-
"anthropic/claude-3.7-sonnet": {
250+
"anthropic/claude-sonnet-4": {
251251
// Default model
252-
maxTokens: 4096,
253-
contextWindow: 8192,
254-
supportsImages: false,
255-
supportsPromptCache: false,
252+
maxTokens: 8192,
253+
contextWindow: 200_000,
254+
supportsImages: true,
255+
supportsComputerUse: true,
256+
supportsPromptCache: true,
257+
inputPrice: 3.0,
258+
outputPrice: 15.0,
259+
cacheWritesPrice: 3.75,
260+
cacheReadsPrice: 0.3,
256261
},
257262
},
258263
requesty: {},
@@ -279,12 +284,17 @@ describe("useSelectedModel", () => {
279284
const wrapper = createWrapper()
280285
const { result } = renderHook(() => useSelectedModel(apiConfiguration), { wrapper })
281286

282-
expect(result.current.id).toBe("anthropic/claude-3.7-sonnet")
287+
expect(result.current.id).toBe("anthropic/claude-sonnet-4")
283288
expect(result.current.info).toEqual({
284-
maxTokens: 4096,
285-
contextWindow: 8192,
286-
supportsImages: false,
287-
supportsPromptCache: false,
289+
maxTokens: 8192,
290+
contextWindow: 200_000,
291+
supportsImages: true,
292+
supportsComputerUse: true,
293+
supportsPromptCache: true,
294+
inputPrice: 3.0,
295+
outputPrice: 15.0,
296+
cacheWritesPrice: 3.75,
297+
cacheReadsPrice: 0.3,
288298
})
289299
})
290300
})
@@ -366,7 +376,7 @@ describe("useSelectedModel", () => {
366376
const { result } = renderHook(() => useSelectedModel(), { wrapper })
367377

368378
expect(result.current.provider).toBe("anthropic")
369-
expect(result.current.id).toBe("claude-3-7-sonnet-20250219")
379+
expect(result.current.id).toBe("claude-sonnet-4-20250514")
370380
expect(result.current.info).toBeUndefined()
371381
})
372382
})

0 commit comments

Comments
 (0)