diff --git a/packages/components/models.json b/packages/components/models.json index 6b8ce72d5b8..81a2b96aa75 100644 --- a/packages/components/models.json +++ b/packages/components/models.json @@ -700,6 +700,42 @@ { "name": "azureChatOpenAI", "models": [ + { + "label": "gpt-5.5", + "name": "gpt-5.5", + "input_cost": 0.000005, + "output_cost": 0.00003 + }, + { + "label": "gpt-5.5-pro", + "name": "gpt-5.5-pro", + "input_cost": 0.00003, + "output_cost": 0.00018 + }, + { + "label": "gpt-5.4", + "name": "gpt-5.4", + "input_cost": 0.0000025, + "output_cost": 0.000015 + }, + { + "label": "gpt-5.4-pro", + "name": "gpt-5.4-pro", + "input_cost": 0.00003, + "output_cost": 0.00018 + }, + { + "label": "gpt-5.4-mini", + "name": "gpt-5.4-mini", + "input_cost": 0.00000075, + "output_cost": 0.0000045 + }, + { + "label": "gpt-5.4-nano", + "name": "gpt-5.4-nano", + "input_cost": 0.0000002, + "output_cost": 0.00000125 + }, { "label": "gpt-5.2", "name": "gpt-5.2", diff --git a/packages/components/src/modelRegistry.test.ts b/packages/components/src/modelRegistry.test.ts new file mode 100644 index 00000000000..4296eaabcd2 --- /dev/null +++ b/packages/components/src/modelRegistry.test.ts @@ -0,0 +1,34 @@ +import models from '../models.json' + +type ModelEntry = { + label: string + name: string + input_cost: number + output_cost: number +} + +type ProviderEntry = { + name: string + models: ModelEntry[] +} + +const getChatProvider = (name: string): ProviderEntry => { + const provider = (models.chat as ProviderEntry[]).find((entry) => entry.name === name) + if (!provider) throw new Error(`Missing chat provider ${name}`) + return provider +} + +describe('models.json Azure ChatOpenAI registry', () => { + const newerGpt5Models = ['gpt-5.5', 'gpt-5.5-pro', 'gpt-5.4', 'gpt-5.4-pro', 'gpt-5.4-mini', 'gpt-5.4-nano'] + + it.each(newerGpt5Models)('keeps %s Azure ChatOpenAI aligned with ChatOpenAI', (modelName) => { + const chatOpenAI = getChatProvider('chatOpenAI') + const azureChatOpenAI = getChatProvider('azureChatOpenAI') + const openAIModel = chatOpenAI.models.find((model) => model.name === modelName) + const azureModel = azureChatOpenAI.models.find((model) => model.name === modelName) + + expect(openAIModel).toBeDefined() + expect(azureModel).toBeDefined() + expect(azureModel).toEqual(openAIModel) + }) +})