fix(core): refine small model defaults (#33926)

This commit is contained in:
Aiden Cline
2026-06-25 20:31:53 -05:00
committed by GitHub
parent f428755851
commit ded29f03f0
3 changed files with 125 additions and 24 deletions
+24 -24
View File
@@ -1868,44 +1868,43 @@ export const layer = Layer.effect(
}
}
const defaultPriority = [
"claude-haiku-4-5",
"claude-haiku-4.5",
"3-5-haiku",
"3.5-haiku",
"gemini-3-flash",
"gemini-2.5-flash",
"gpt-5-nano",
]
// TODO: Remove these provider-specific assumptions once model syncing reliably reports available deployments.
if (providerID === ProviderV2.ID.azure || providerID === ProviderV2.ID.make("azure-cognitive-services")) {
return undefined
}
const priority = providerID.startsWith("opencode")
? ["gpt-5-nano"]
? ["gpt-nano"]
: providerID.startsWith("github-copilot")
? ["gpt-5-mini", "claude-haiku-4.5", ...defaultPriority]
: defaultPriority
for (const item of priority) {
? ["gpt-mini", ...smallModelFamilyPriority]
: smallModelFamilyPriority
const models = sortBy(
Object.values(provider.models),
[(model) => model.release_date, "desc"],
[(model) => model.id, "desc"],
)
for (const family of priority) {
const candidates = models.filter((model) => model.family === family)
if (providerID === ProviderV2.ID.amazonBedrock) {
const crossRegionPrefixes = ["global.", "us.", "eu."]
const candidates = Object.keys(provider.models).filter((m) => m.includes(item))
const globalMatch = candidates.find((m) => m.startsWith("global."))
if (globalMatch) return provider.models[globalMatch]
const globalMatch = candidates.find((model) => model.id.startsWith("global."))
if (globalMatch) return globalMatch
const region = provider.options?.region
if (region) {
const regionPrefix = region.split("-")[0]
if (regionPrefix === "us" || regionPrefix === "eu") {
const regionalMatch = candidates.find((m) => m.startsWith(`${regionPrefix}.`))
if (regionalMatch) return provider.models[regionalMatch]
const regionalMatch = candidates.find((model) => model.id.startsWith(`${regionPrefix}.`))
if (regionalMatch) return regionalMatch
}
}
const unprefixed = candidates.find((m) => !crossRegionPrefixes.some((p) => m.startsWith(p)))
if (unprefixed) return provider.models[unprefixed]
} else {
for (const model of Object.keys(provider.models)) {
if (model.includes(item)) return provider.models[model]
}
const unprefixed = candidates.find((model) => !crossRegionPrefixes.some((p) => model.id.startsWith(p)))
if (unprefixed) return unprefixed
continue
}
if (candidates[0]) return candidates[0]
}
return undefined
@@ -1962,6 +1961,7 @@ export const defaultLayer = Layer.suspend(() =>
)
const priority = ["gpt-5", "claude-sonnet-4", "big-pickle", "gemini-3-pro"]
const smallModelFamilyPriority = ["gemini-flash", "gpt-nano", "claude-haiku"]
export function sort<T extends { id: string }>(models: T[]) {
return sortBy(
models,