diff --git a/api/models/tx.js b/api/models/tx.js index 769492a643..062ebecf26 100644 --- a/api/models/tx.js +++ b/api/models/tx.js @@ -152,7 +152,10 @@ const tokenValues = Object.assign( 'ministral-8b': { prompt: 0.1, completion: 0.1 }, 'ministral-3b': { prompt: 0.04, completion: 0.04 }, // GPT-OSS models + 'gpt-oss': { prompt: 0.05, completion: 0.2 }, + 'gpt-oss:20b': { prompt: 0.05, completion: 0.2 }, 'gpt-oss-20b': { prompt: 0.05, completion: 0.2 }, + 'gpt-oss:120b': { prompt: 0.15, completion: 0.6 }, 'gpt-oss-120b': { prompt: 0.15, completion: 0.6 }, }, bedrockValues, diff --git a/api/models/tx.spec.js b/api/models/tx.spec.js index dd3c543417..7594ce3295 100644 --- a/api/models/tx.spec.js +++ b/api/models/tx.spec.js @@ -184,6 +184,16 @@ describe('getValueKey', () => { expect(getValueKey('claude-3.5-haiku-turbo')).toBe('claude-3.5-haiku'); expect(getValueKey('claude-3.5-haiku-0125')).toBe('claude-3.5-haiku'); }); + + it('should return expected value keys for "gpt-oss" models', () => { + expect(getValueKey('openai/gpt-oss-120b')).toBe('gpt-oss-120b'); + expect(getValueKey('openai/gpt-oss:120b')).toBe('gpt-oss:120b'); + expect(getValueKey('openai/gpt-oss-570b')).toBe('gpt-oss'); + expect(getValueKey('gpt-oss-570b')).toBe('gpt-oss'); + expect(getValueKey('groq/gpt-oss-1080b')).toBe('gpt-oss'); + expect(getValueKey('gpt-oss-20b')).toBe('gpt-oss-20b'); + expect(getValueKey('oai/gpt-oss:20b')).toBe('gpt-oss:20b'); + }); }); describe('getMultiplier', () => { diff --git a/api/utils/tokens.spec.js b/api/utils/tokens.spec.js index 527129ec8c..20dad79894 100644 --- a/api/utils/tokens.spec.js +++ b/api/utils/tokens.spec.js @@ -396,8 +396,15 @@ describe('getModelMaxTokens', () => { }); test('should return correct tokens for GPT-OSS models', () => { - const expected = maxTokensMap[EModelEndpoint.openAI]['gpt-oss-20b']; - ['gpt-oss-20b', 'gpt-oss-120b', 'openai/gpt-oss-20b', 'openai/gpt-oss-120b'].forEach((name) => { + const expected = maxTokensMap[EModelEndpoint.openAI]['gpt-oss']; + [ + 'gpt-oss:20b', + 'gpt-oss-20b', + 'gpt-oss-120b', + 'openai/gpt-oss-20b', + 'openai/gpt-oss-120b', + 'openai/gpt-oss:120b', + ].forEach((name) => { expect(getModelMaxTokens(name)).toBe(expected); }); }); diff --git a/packages/api/src/utils/tokens.ts b/packages/api/src/utils/tokens.ts index b53305278d..f75a5b9de2 100644 --- a/packages/api/src/utils/tokens.ts +++ b/packages/api/src/utils/tokens.ts @@ -257,7 +257,10 @@ const aggregateModels = { // misc. kimi: 131000, // GPT-OSS + 'gpt-oss': 131000, + 'gpt-oss:20b': 131000, 'gpt-oss-20b': 131000, + 'gpt-oss:120b': 131000, 'gpt-oss-120b': 131000, };