feat(core): Plumbing for late resolution of model configs. (#14597)

This commit is contained in:
joshualitt
2025-12-10 09:36:27 -08:00
committed by GitHub
parent 68ebf5d655
commit c8b688655c
10 changed files with 493 additions and 9 deletions
+24
View File
@@ -1344,6 +1344,30 @@ describe('Generation Config Merging (HACK)', () => {
expect(serviceConfig.overrides).toEqual(userOverrides);
});
it('should merge default overrides when user provides only aliases', () => {
const userAliases = {
'my-alias': {
modelConfig: { model: 'my-model' },
},
};
const params: ConfigParameters = {
...baseParams,
modelConfigServiceConfig: {
aliases: userAliases,
},
};
const config = new Config(params);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const serviceConfig = (config.modelConfigService as any).config;
// Assert that the user's aliases are present
expect(serviceConfig.aliases).toEqual(userAliases);
// Assert that the default overrides are present
expect(serviceConfig.overrides).toEqual(DEFAULT_MODEL_CONFIGS.overrides);
});
it('should use user-provided aliases if they exist', () => {
const userAliases = {
'my-alias': {
+13 -5
View File
@@ -629,11 +629,19 @@ export class Config {
// TODO(12593): Fix the settings loading logic to properly merge defaults and
// remove this hack.
let modelConfigServiceConfig = params.modelConfigServiceConfig;
if (modelConfigServiceConfig && !modelConfigServiceConfig.aliases) {
modelConfigServiceConfig = {
...modelConfigServiceConfig,
aliases: DEFAULT_MODEL_CONFIGS.aliases,
};
if (modelConfigServiceConfig) {
if (!modelConfigServiceConfig.aliases) {
modelConfigServiceConfig = {
...modelConfigServiceConfig,
aliases: DEFAULT_MODEL_CONFIGS.aliases,
};
}
if (!modelConfigServiceConfig.overrides) {
modelConfigServiceConfig = {
...modelConfigServiceConfig,
overrides: DEFAULT_MODEL_CONFIGS.overrides,
};
}
}
this.modelConfigService = new ModelConfigService(
@@ -209,4 +209,14 @@ export const DEFAULT_MODEL_CONFIGS: ModelConfigServiceConfig = {
},
},
},
overrides: [
{
match: { model: 'chat-base', isRetry: true },
modelConfig: {
generateContentConfig: {
temperature: 1,
},
},
},
],
};