Refactor role mapping logic

This commit is contained in:
Animesh Gosain 2025-05-19 13:34:01 +05:30
parent db771c4f33
commit 05e27a0885

View file

@ -374,19 +374,29 @@ const extensiveModelOptionsFallback: VoidStaticProviderInfo['modelOptionsFallbac
const lower = modelName.toLowerCase()
const toFallback = <T extends { [s: string]: Omit<VoidStaticModelInfo, 'cost' | 'downloadable'> },>(obj: T, recognizedModelName: string & keyof T)
: VoidStaticModelInfo & { modelName: string, recognizedModelName: string } => {
: VoidStaticModelInfo & { modelName: string, recognizedModelName: string, roleMode: 'system' | 'developer' | false } => {
const opts = obj[recognizedModelName];
const roleMode =
recognizedModelName === 'system' || recognizedModelName === 'gemini'
? 'system'
: recognizedModelName === 'developer'
? 'developer'
: false;
const opts = obj[recognizedModelName]
return {
recognizedModelName,
modelName,
...opts,
supportsSystemMessage: opts.supportsSystemMessage ?? false,
supportsSystemMessage: roleMode !== false,
roleMode,
cost: { input: 0, output: 0 },
downloadable: false,
...fallbackKnownValues
}
};
}
if (lower.includes('gemini') && (lower.includes('2.5') || lower.includes('2-5'))) return toFallback(geminiModelOptions, 'gemini-2.5-pro-exp-03-25')
if (lower.includes('claude-3-5') || lower.includes('claude-3.5')) return toFallback(anthropicModelOptions, 'claude-3-5-sonnet-20241022')