mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-18 01:10:14 +01:00
🤖 feat: Support for new AWS Nova Models & Updated Anthropic Rates (#4852)
* updated Claude 3.5 Haiku pricing https://www.anthropic.com/pricing#anthropic-api Claude 3.5 Haiku $0.80 / MTok Input $1 / MTok Prompt caching write $0.08 / MTok Prompt caching read $4 / MTok Output * Update tx.js * refactor: fix tests for cache multiplier and add new AWS models --------- Co-authored-by: khfung <68192841+khfung@users.noreply.github.com>
This commit is contained in:
parent
d6f7279bce
commit
ebae494337
4 changed files with 43 additions and 11 deletions
|
|
@ -30,6 +30,9 @@ const bedrockValues = {
|
||||||
'amazon.titan-text-lite-v1': { prompt: 0.15, completion: 0.2 },
|
'amazon.titan-text-lite-v1': { prompt: 0.15, completion: 0.2 },
|
||||||
'amazon.titan-text-express-v1': { prompt: 0.2, completion: 0.6 },
|
'amazon.titan-text-express-v1': { prompt: 0.2, completion: 0.6 },
|
||||||
'amazon.titan-text-premier-v1:0': { prompt: 0.5, completion: 1.5 },
|
'amazon.titan-text-premier-v1:0': { prompt: 0.5, completion: 1.5 },
|
||||||
|
'amazon.nova-micro-v1:0': { prompt: 0.035, completion: 0.14 },
|
||||||
|
'amazon.nova-lite-v1:0': { prompt: 0.06, completion: 0.24 },
|
||||||
|
'amazon.nova-pro-v1:0': { prompt: 0.8, completion: 3.2 },
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -56,8 +59,8 @@ const tokenValues = Object.assign(
|
||||||
'claude-3-sonnet': { prompt: 3, completion: 15 },
|
'claude-3-sonnet': { prompt: 3, completion: 15 },
|
||||||
'claude-3-5-sonnet': { prompt: 3, completion: 15 },
|
'claude-3-5-sonnet': { prompt: 3, completion: 15 },
|
||||||
'claude-3.5-sonnet': { prompt: 3, completion: 15 },
|
'claude-3.5-sonnet': { prompt: 3, completion: 15 },
|
||||||
'claude-3-5-haiku': { prompt: 1, completion: 5 },
|
'claude-3-5-haiku': { prompt: 0.8, completion: 4 },
|
||||||
'claude-3.5-haiku': { prompt: 1, completion: 5 },
|
'claude-3.5-haiku': { prompt: 0.8, completion: 4 },
|
||||||
'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 },
|
||||||
|
|
@ -83,8 +86,8 @@ const tokenValues = Object.assign(
|
||||||
const cacheTokenValues = {
|
const cacheTokenValues = {
|
||||||
'claude-3.5-sonnet': { write: 3.75, read: 0.3 },
|
'claude-3.5-sonnet': { write: 3.75, read: 0.3 },
|
||||||
'claude-3-5-sonnet': { write: 3.75, read: 0.3 },
|
'claude-3-5-sonnet': { write: 3.75, read: 0.3 },
|
||||||
'claude-3.5-haiku': { write: 1.25, read: 0.1 },
|
'claude-3.5-haiku': { write: 1, read: 0.08 },
|
||||||
'claude-3-5-haiku': { write: 1.25, read: 0.1 },
|
'claude-3-5-haiku': { write: 1, read: 0.08 },
|
||||||
'claude-3-haiku': { write: 0.3, read: 0.03 },
|
'claude-3-haiku': { write: 0.3, read: 0.03 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -208,4 +211,11 @@ const getCacheMultiplier = ({ valueKey, cacheType, model, endpoint, endpointToke
|
||||||
return cacheTokenValues[valueKey]?.[cacheType] ?? null;
|
return cacheTokenValues[valueKey]?.[cacheType] ?? null;
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = { tokenValues, getValueKey, getMultiplier, getCacheMultiplier, defaultRate };
|
module.exports = {
|
||||||
|
tokenValues,
|
||||||
|
getValueKey,
|
||||||
|
getMultiplier,
|
||||||
|
getCacheMultiplier,
|
||||||
|
defaultRate,
|
||||||
|
cacheTokenValues,
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ const {
|
||||||
tokenValues,
|
tokenValues,
|
||||||
getValueKey,
|
getValueKey,
|
||||||
getMultiplier,
|
getMultiplier,
|
||||||
|
cacheTokenValues,
|
||||||
getCacheMultiplier,
|
getCacheMultiplier,
|
||||||
} = require('./tx');
|
} = require('./tx');
|
||||||
|
|
||||||
|
|
@ -211,6 +212,7 @@ describe('getMultiplier', () => {
|
||||||
|
|
||||||
describe('AWS Bedrock Model Tests', () => {
|
describe('AWS Bedrock Model Tests', () => {
|
||||||
const awsModels = [
|
const awsModels = [
|
||||||
|
'anthropic.claude-3-5-haiku-20241022-v1:0',
|
||||||
'anthropic.claude-3-haiku-20240307-v1:0',
|
'anthropic.claude-3-haiku-20240307-v1:0',
|
||||||
'anthropic.claude-3-sonnet-20240229-v1:0',
|
'anthropic.claude-3-sonnet-20240229-v1:0',
|
||||||
'anthropic.claude-3-opus-20240229-v1:0',
|
'anthropic.claude-3-opus-20240229-v1:0',
|
||||||
|
|
@ -237,6 +239,9 @@ describe('AWS Bedrock Model Tests', () => {
|
||||||
'ai21.j2-ultra-v1',
|
'ai21.j2-ultra-v1',
|
||||||
'amazon.titan-text-lite-v1',
|
'amazon.titan-text-lite-v1',
|
||||||
'amazon.titan-text-express-v1',
|
'amazon.titan-text-express-v1',
|
||||||
|
'amazon.nova-micro-v1:0',
|
||||||
|
'amazon.nova-lite-v1:0',
|
||||||
|
'amazon.nova-pro-v1:0',
|
||||||
];
|
];
|
||||||
|
|
||||||
it('should return the correct prompt multipliers for all models', () => {
|
it('should return the correct prompt multipliers for all models', () => {
|
||||||
|
|
@ -260,12 +265,24 @@ describe('AWS Bedrock Model Tests', () => {
|
||||||
|
|
||||||
describe('getCacheMultiplier', () => {
|
describe('getCacheMultiplier', () => {
|
||||||
it('should return the correct cache multiplier for a given valueKey and cacheType', () => {
|
it('should return the correct cache multiplier for a given valueKey and cacheType', () => {
|
||||||
expect(getCacheMultiplier({ valueKey: 'claude-3-5-sonnet', cacheType: 'write' })).toBe(3.75);
|
expect(getCacheMultiplier({ valueKey: 'claude-3-5-sonnet', cacheType: 'write' })).toBe(
|
||||||
expect(getCacheMultiplier({ valueKey: 'claude-3-5-sonnet', cacheType: 'read' })).toBe(0.3);
|
cacheTokenValues['claude-3-5-sonnet'].write,
|
||||||
expect(getCacheMultiplier({ valueKey: 'claude-3-5-haiku', cacheType: 'write' })).toBe(1.25);
|
);
|
||||||
expect(getCacheMultiplier({ valueKey: 'claude-3-5-haiku', cacheType: 'read' })).toBe(0.1);
|
expect(getCacheMultiplier({ valueKey: 'claude-3-5-sonnet', cacheType: 'read' })).toBe(
|
||||||
expect(getCacheMultiplier({ valueKey: 'claude-3-haiku', cacheType: 'write' })).toBe(0.3);
|
cacheTokenValues['claude-3-5-sonnet'].read,
|
||||||
expect(getCacheMultiplier({ valueKey: 'claude-3-haiku', cacheType: 'read' })).toBe(0.03);
|
);
|
||||||
|
expect(getCacheMultiplier({ valueKey: 'claude-3-5-haiku', cacheType: 'write' })).toBe(
|
||||||
|
cacheTokenValues['claude-3-5-haiku'].write,
|
||||||
|
);
|
||||||
|
expect(getCacheMultiplier({ valueKey: 'claude-3-5-haiku', cacheType: 'read' })).toBe(
|
||||||
|
cacheTokenValues['claude-3-5-haiku'].read,
|
||||||
|
);
|
||||||
|
expect(getCacheMultiplier({ valueKey: 'claude-3-haiku', cacheType: 'write' })).toBe(
|
||||||
|
cacheTokenValues['claude-3-haiku'].write,
|
||||||
|
);
|
||||||
|
expect(getCacheMultiplier({ valueKey: 'claude-3-haiku', cacheType: 'read' })).toBe(
|
||||||
|
cacheTokenValues['claude-3-haiku'].read,
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return null if cacheType is provided but not found in cacheTokenValues', () => {
|
it('should return null if cacheType is provided but not found in cacheTokenValues', () => {
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,10 @@ const amazonModels = {
|
||||||
'amazon.titan-text-lite-v1': 4000,
|
'amazon.titan-text-lite-v1': 4000,
|
||||||
'amazon.titan-text-express-v1': 8000,
|
'amazon.titan-text-express-v1': 8000,
|
||||||
'amazon.titan-text-premier-v1:0': 31500, // -500 from max
|
'amazon.titan-text-premier-v1:0': 31500, // -500 from max
|
||||||
|
// https://aws.amazon.com/ai/generative-ai/nova/
|
||||||
|
'amazon.nova-micro-v1:0': 127000, // -1000 from max,
|
||||||
|
'amazon.nova-lite-v1:0': 295000, // -5000 from max,
|
||||||
|
'amazon.nova-pro-v1:0': 295000, // -5000 from max,
|
||||||
};
|
};
|
||||||
|
|
||||||
const bedrockModels = {
|
const bedrockModels = {
|
||||||
|
|
|
||||||
|
|
@ -629,6 +629,7 @@ const sharedAnthropicModels = [
|
||||||
export const bedrockModels = [
|
export const bedrockModels = [
|
||||||
'anthropic.claude-3-5-sonnet-20241022-v2:0',
|
'anthropic.claude-3-5-sonnet-20241022-v2:0',
|
||||||
'anthropic.claude-3-5-sonnet-20240620-v1:0',
|
'anthropic.claude-3-5-sonnet-20240620-v1:0',
|
||||||
|
'anthropic.claude-3-5-haiku-20241022-v1:0',
|
||||||
'anthropic.claude-3-haiku-20240307-v1:0',
|
'anthropic.claude-3-haiku-20240307-v1:0',
|
||||||
'anthropic.claude-3-opus-20240229-v1:0',
|
'anthropic.claude-3-opus-20240229-v1:0',
|
||||||
'anthropic.claude-3-sonnet-20240229-v1:0',
|
'anthropic.claude-3-sonnet-20240229-v1:0',
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue