🧠 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 }, 'gpt-3.5-turbo-0125': { prompt: 0.5, completion: 1.5 },
'claude-3-opus': { prompt: 15, completion: 75 }, 'claude-3-opus': { prompt: 15, completion: 75 },
'claude-3-sonnet': { prompt: 3, completion: 15 }, '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-3-haiku': { prompt: 0.25, completion: 1.25 },
'claude-2.1': { prompt: 8, completion: 24 }, 'claude-2.1': { prompt: 8, completion: 24 },
'claude-2': { 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-turbo')).toBe('gpt-4o');
expect(getValueKey('gpt-4o-0125')).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', () => { describe('getMultiplier', () => {

View file

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

View file

@ -124,12 +124,29 @@ describe('getModelMaxTokens', () => {
'claude-1-100k', 'claude-1-100k',
'claude-instant-1', 'claude-instant-1',
'claude-instant-1-100k', 'claude-instant-1-100k',
'claude-3-haiku',
'claude-3-sonnet',
'claude-3-opus',
'claude-3-5-sonnet',
]; ];
const claudeMaxTokens = maxTokensMap[EModelEndpoint.anthropic]['claude-']; const maxTokens = {
const claude21MaxTokens = maxTokensMap[EModelEndpoint.anthropic]['claude-2.1']; '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) => { 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); expect(getModelMaxTokens(model, EModelEndpoint.anthropic)).toEqual(expectedTokens);
}); });
}); });

2
package-lock.json generated
View file

@ -29348,7 +29348,7 @@
}, },
"packages/data-provider": { "packages/data-provider": {
"name": "librechat-data-provider", "name": "librechat-data-provider",
"version": "0.6.9", "version": "0.7.0",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@types/js-yaml": "^4.0.9", "@types/js-yaml": "^4.0.9",

View file

@ -1,6 +1,6 @@
{ {
"name": "librechat-data-provider", "name": "librechat-data-provider",
"version": "0.6.9", "version": "0.7.0",
"description": "data services for librechat apps", "description": "data services for librechat apps",
"main": "dist/index.js", "main": "dist/index.js",
"module": "dist/index.es.js", "module": "dist/index.es.js",

View file

@ -473,6 +473,7 @@ export const defaultModels = {
'code-bison-32k', 'code-bison-32k',
], ],
[EModelEndpoint.anthropic]: [ [EModelEndpoint.anthropic]: [
'claude-3-5-sonnet-20240620',
'claude-3-opus-20240229', 'claude-3-opus-20240229',
'claude-3-sonnet-20240229', 'claude-3-sonnet-20240229',
'claude-3-haiku-20240307', 'claude-3-haiku-20240307',