Skip to content

Commit 7dcf6db

Browse files
committed
Hoist sorted model IDs out of guessModelInfoFromId method; Make model ID matching case insensitive in Anthropic
1 parent aaf2862 commit 7dcf6db

1 file changed

Lines changed: 18 additions & 4 deletions

File tree

src/api/providers/anthropic.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,16 @@ import {
2929
convertOpenAIToolChoiceToAnthropic,
3030
} from "../../core/prompts/tools/native-tools/converters"
3131

32+
// Pre-sorted list of known Anthropic model IDs (lowercased) by length (descending) for case-insensitive substring matching.
33+
const ANTHROPIC_MODEL_IDS_SORTED_LOWER = (Object.keys(anthropicModels) as AnthropicModelId[])
34+
.map((id) => id.toLowerCase())
35+
.sort((a, b) => b.length - a.length) as string[]
36+
37+
// Original-case mapping: lowercase key → original AnthropicModelId for lookup.
38+
const ANTHROPIC_MODEL_ID_LOWER_TO_ORIGINAL = Object.fromEntries(
39+
(Object.keys(anthropicModels) as AnthropicModelId[]).map((id) => [id.toLowerCase(), id]),
40+
)
41+
3242
export class AnthropicHandler extends BaseProvider implements SingleCompletionHandler {
3343
private options: ApiHandlerOptions
3444
private client: Anthropic
@@ -355,11 +365,15 @@ export class AnthropicHandler extends BaseProvider implements SingleCompletionHa
355365

356366
// Guesses capabilities for an unrecognized model ID via known-family substring match.
357367
private guessModelInfoFromId(modelId: string): ModelInfo {
358-
const matchedId = (Object.keys(anthropicModels) as AnthropicModelId[])
359-
.sort((a, b) => b.length - a.length)
360-
.find((knownId) => modelId.includes(knownId))
368+
const lowerModelId = modelId.toLowerCase()
369+
const matchedLower = ANTHROPIC_MODEL_IDS_SORTED_LOWER.find((knownId) => lowerModelId.includes(knownId))
370+
371+
if (!matchedLower) {
372+
return anthropicModels[anthropicDefaultModelId]
373+
}
361374

362-
return matchedId ? anthropicModels[matchedId] : anthropicModels[anthropicDefaultModelId]
375+
const originalId = ANTHROPIC_MODEL_ID_LOWER_TO_ORIGINAL[matchedLower] as AnthropicModelId
376+
return anthropicModels[originalId]
363377
}
364378

365379
getModel() {

0 commit comments

Comments
 (0)