update token cost to prompt + completion

This commit is contained in:
Jing Hua 2023-04-30 21:29:47 +08:00
parent b7b3c0ec75
commit bd0f91f1a2
3 changed files with 36 additions and 12 deletions

View file

@ -17,9 +17,10 @@ const tokenCostToCost = (
model: ModelOptions model: ModelOptions
) => { ) => {
if (!tokenCost) return 0; if (!tokenCost) return 0;
const { price, unit } = modelCost[model as keyof typeof modelCost]; const { prompt, completion } = modelCost[model as keyof typeof modelCost];
const completionCost = (price / unit) * tokenCost.completionTokens; const completionCost =
const promptCost = (price / unit) * tokenCost.promptTokens; (completion.price / completion.unit) * tokenCost.completionTokens;
const promptCost = (prompt.price / prompt.unit) * tokenCost.promptTokens;
return completionCost + promptCost; return completionCost + promptCost;
}; };

View file

@ -21,7 +21,9 @@ const TokenCount = React.memo(() => {
); );
const cost = useMemo(() => { const cost = useMemo(() => {
const price = modelCost[model].price * (tokenCount / modelCost[model].unit); const price =
modelCost[model].prompt.price *
(tokenCount / modelCost[model].prompt.unit);
return price.toPrecision(3); return price.toPrecision(3);
}, [model, tokenCount]); }, [model, tokenCount]);

View file

@ -38,12 +38,30 @@ export const modelMaxToken = {
}; };
export const modelCost = { export const modelCost = {
'gpt-3.5-turbo': { price: 0.002, unit: 1000 }, 'gpt-3.5-turbo': {
'gpt-3.5-turbo-0301': { price: 0.002, unit: 1000 }, prompt: { price: 0.002, unit: 1000 },
'gpt-4': { price: 0.03, unit: 1000 }, completion: { price: 0.002, unit: 1000 },
'gpt-4-0314': { price: 0.03, unit: 1000 }, },
'gpt-4-32k': { price: 0.06, unit: 1000 }, 'gpt-3.5-turbo-0301': {
'gpt-4-32k-0314': { price: 0.06, unit: 1000 }, prompt: { price: 0.002, unit: 1000 },
completion: { price: 0.002, unit: 1000 },
},
'gpt-4': {
prompt: { price: 0.03, unit: 1000 },
completion: { price: 0.06, unit: 1000 },
},
'gpt-4-0314': {
prompt: { price: 0.03, unit: 1000 },
completion: { price: 0.06, unit: 1000 },
},
'gpt-4-32k': {
prompt: { price: 0.06, unit: 1000 },
completion: { price: 0.12, unit: 1000 },
},
'gpt-4-32k-0314': {
prompt: { price: 0.06, unit: 1000 },
completion: { price: 0.12, unit: 1000 },
},
}; };
export const defaultUserMaxToken = 4000; export const defaultUserMaxToken = 4000;
@ -57,7 +75,10 @@ export const _defaultChatConfig: ConfigInterface = {
frequency_penalty: 0, frequency_penalty: 0,
}; };
export const generateDefaultChat = (title?: string, folder?: string): ChatInterface => ({ export const generateDefaultChat = (
title?: string,
folder?: string
): ChatInterface => ({
id: uuidv4(), id: uuidv4(),
title: title ? title : 'New Chat', title: title ? title : 'New Chat',
messages: messages:
@ -66,7 +87,7 @@ export const generateDefaultChat = (title?: string, folder?: string): ChatInterf
: [], : [],
config: { ...useStore.getState().defaultChatConfig }, config: { ...useStore.getState().defaultChatConfig },
titleSet: false, titleSet: false,
folder folder,
}); });
export const codeLanguageSubset = [ export const codeLanguageSubset = [