🧠 feat: claude-3-5-sonnet (#3135)

* 🧠 feat: claude-3-5-sonnet

* chore: bump data-provider
This commit is contained in:
Danny Avila 2024-06-20 20:48:15 -04:00 committed by GitHub
parent 0cd3c83328
commit 54db67449a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 32 additions and 5 deletions

View file

@ -17,6 +17,7 @@ const tokenValues = {
'gpt-3.5-turbo-0125': { prompt: 0.5, completion: 1.5 },
'claude-3-opus': { prompt: 15, completion: 75 },
'claude-3-sonnet': { prompt: 3, completion: 15 },
'claude-3-5-sonnet': { prompt: 3, completion: 15 },
'claude-3-haiku': { prompt: 0.25, completion: 1.25 },
'claude-2.1': { prompt: 8, completion: 24 },
'claude-2': { prompt: 8, completion: 24 },

View file

@ -48,6 +48,13 @@ describe('getValueKey', () => {
expect(getValueKey('gpt-4o-turbo')).toBe('gpt-4o');
expect(getValueKey('gpt-4o-0125')).toBe('gpt-4o');
});
it('should return "claude-3-5-sonnet" for model type of "claude-3-5-sonnet-"', () => {
expect(getValueKey('claude-3-5-sonnet-20240620')).toBe('claude-3-5-sonnet');
expect(getValueKey('anthropic/claude-3-5-sonnet')).toBe('claude-3-5-sonnet');
expect(getValueKey('claude-3-5-sonnet-turbo')).toBe('claude-3-5-sonnet');
expect(getValueKey('claude-3-5-sonnet-0125')).toBe('claude-3-5-sonnet');
});
});
describe('getMultiplier', () => {

View file

@ -96,6 +96,7 @@ const anthropicModels = {
'claude-3-haiku': 200000,
'claude-3-sonnet': 200000,
'claude-3-opus': 200000,
'claude-3-5-sonnet': 200000,
};
const aggregateModels = { ...openAIModels, ...googleModels, ...anthropicModels, ...cohereModels };

View file

@ -124,12 +124,29 @@ describe('getModelMaxTokens', () => {
'claude-1-100k',
'claude-instant-1',
'claude-instant-1-100k',
'claude-3-haiku',
'claude-3-sonnet',
'claude-3-opus',
'claude-3-5-sonnet',
];
const claudeMaxTokens = maxTokensMap[EModelEndpoint.anthropic]['claude-'];
const claude21MaxTokens = maxTokensMap[EModelEndpoint.anthropic]['claude-2.1'];
const maxTokens = {
'claude-': maxTokensMap[EModelEndpoint.anthropic]['claude-'],
'claude-2.1': maxTokensMap[EModelEndpoint.anthropic]['claude-2.1'],
'claude-3': maxTokensMap[EModelEndpoint.anthropic]['claude-3-sonnet'],
};
models.forEach((model) => {
const expectedTokens = model === 'claude-2.1' ? claude21MaxTokens : claudeMaxTokens;
let expectedTokens;
if (model === 'claude-2.1') {
expectedTokens = maxTokens['claude-2.1'];
} else if (model.startsWith('claude-3')) {
expectedTokens = maxTokens['claude-3'];
} else {
expectedTokens = maxTokens['claude-'];
}
expect(getModelMaxTokens(model, EModelEndpoint.anthropic)).toEqual(expectedTokens);
});
});