fix(model-settings): support family reasoning aliases
This commit is contained in:
@@ -6,6 +6,7 @@ export type HeuristicModelFamilyDefinition = {
|
|||||||
pattern?: RegExp
|
pattern?: RegExp
|
||||||
variants?: string[]
|
variants?: string[]
|
||||||
reasoningEfforts?: string[]
|
reasoningEfforts?: string[]
|
||||||
|
reasoningEffortAliases?: Record<string, string>
|
||||||
supportsThinking?: boolean
|
supportsThinking?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ function resolveField(
|
|||||||
ladder: string[],
|
ladder: string[],
|
||||||
familyKnown: boolean,
|
familyKnown: boolean,
|
||||||
metadataOverride?: string[],
|
metadataOverride?: string[],
|
||||||
|
familyAliases?: Record<string, string>,
|
||||||
): FieldResolution {
|
): FieldResolution {
|
||||||
if (metadataOverride) {
|
if (metadataOverride) {
|
||||||
if (metadataOverride.includes(normalized)) return { value: normalized }
|
if (metadataOverride.includes(normalized)) return { value: normalized }
|
||||||
@@ -97,6 +98,10 @@ function resolveField(
|
|||||||
|
|
||||||
if (familyCaps) {
|
if (familyCaps) {
|
||||||
if (familyCaps.includes(normalized)) return { value: normalized }
|
if (familyCaps.includes(normalized)) return { value: normalized }
|
||||||
|
const aliased = familyAliases?.[normalized]
|
||||||
|
if (aliased && familyCaps.includes(aliased)) {
|
||||||
|
return { value: aliased, reason: "unsupported-by-model-family" }
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
value: downgradeWithinLadder(normalized, familyCaps, ladder),
|
value: downgradeWithinLadder(normalized, familyCaps, ladder),
|
||||||
reason: "unsupported-by-model-family",
|
reason: "unsupported-by-model-family",
|
||||||
@@ -132,7 +137,14 @@ export function resolveCompatibleModelSettings(
|
|||||||
let reasoningEffort = input.desired.reasoningEffort
|
let reasoningEffort = input.desired.reasoningEffort
|
||||||
if (reasoningEffort !== undefined) {
|
if (reasoningEffort !== undefined) {
|
||||||
const normalized = reasoningEffort.toLowerCase()
|
const normalized = reasoningEffort.toLowerCase()
|
||||||
const resolved = resolveField(normalized, family?.reasoningEfforts, REASONING_LADDER, familyKnown, metadataReasoningEfforts)
|
const resolved = resolveField(
|
||||||
|
normalized,
|
||||||
|
family?.reasoningEfforts,
|
||||||
|
REASONING_LADDER,
|
||||||
|
familyKnown,
|
||||||
|
metadataReasoningEfforts,
|
||||||
|
family?.reasoningEffortAliases,
|
||||||
|
)
|
||||||
if (resolved.value !== normalized && resolved.reason) {
|
if (resolved.value !== normalized && resolved.reason) {
|
||||||
changes.push({ field: "reasoningEffort", from: reasoningEffort, to: resolved.value, reason: resolved.reason })
|
changes.push({ field: "reasoningEffort", from: reasoningEffort, to: resolved.value, reason: resolved.reason })
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user