Add request cost to OutputStats (#12)
This commit is contained in:
39
src/utils/calculateTokenCost.ts
Normal file
39
src/utils/calculateTokenCost.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import { type SupportedModel, OpenAIChatModel } from "~/server/types";
|
||||
|
||||
const openAIPromptTokensToDollars: { [key in OpenAIChatModel]: number } = {
|
||||
"gpt-4": 0.00003,
|
||||
"gpt-4-0613": 0.00003,
|
||||
"gpt-4-32k": 0.00006,
|
||||
"gpt-4-32k-0613": 0.00006,
|
||||
"gpt-3.5-turbo": 0.0000015,
|
||||
"gpt-3.5-turbo-0613": 0.0000015,
|
||||
"gpt-3.5-turbo-16k": 0.000003,
|
||||
"gpt-3.5-turbo-16k-0613": 0.000003,
|
||||
};
|
||||
|
||||
const openAICompletionTokensToDollars: { [key in OpenAIChatModel]: number } = {
|
||||
"gpt-4": 0.00006,
|
||||
"gpt-4-0613": 0.00006,
|
||||
"gpt-4-32k": 0.00012,
|
||||
"gpt-4-32k-0613": 0.00012,
|
||||
"gpt-3.5-turbo": 0.000002,
|
||||
"gpt-3.5-turbo-0613": 0.000002,
|
||||
"gpt-3.5-turbo-16k": 0.000004,
|
||||
"gpt-3.5-turbo-16k-0613": 0.000004,
|
||||
};
|
||||
|
||||
export const calculateTokenCost = (model: SupportedModel, numTokens: number, isCompletion = false) => {
|
||||
if (model in OpenAIChatModel) {
|
||||
return calculateOpenAIChatTokenCost(model as OpenAIChatModel, numTokens, isCompletion);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
const calculateOpenAIChatTokenCost = (
|
||||
model: OpenAIChatModel,
|
||||
numTokens: number,
|
||||
isCompletion: boolean
|
||||
) => {
|
||||
const tokensToDollars = isCompletion ? openAICompletionTokensToDollars[model] : openAIPromptTokensToDollars[model];
|
||||
return tokensToDollars * numTokens;
|
||||
};
|
||||
Reference in New Issue
Block a user