MCPcopy Index your code
hub / github.com/OpenPipe/OpenPipe / countOpenAIChatTokens

Function countOpenAIChatTokens

app/src/utils/countTokens.ts:15–33  ·  view source on GitHub ↗
(
  model: SupportedModel,
  messages: ChatCompletionMessageParam[],
)

Source from the content-addressed store, hash-verified

13}
14
15export const countOpenAIChatTokens = (
16 model: SupportedModel,
17 messages: ChatCompletionMessageParam[],
18) => {
19 const reformattedMessages = messages.map((message) => ({
20 role: message.role,
21 // Not completely accurate, but gives a rough idea of the token count
22 content:
23 message.content ||
24 JSON.stringify("function_call" in message ? message.function_call : "") ||
25 JSON.stringify("tool_calls" in message ? message.tool_calls : "") ||
26 "",
27 }));
28
29 return new GPTTokens({
30 model: getSupportedModel(model),
31 messages: reformattedMessages as unknown as GPTTokensMessageItem[],
32 }).usedTokens;
33};
34
35// "gpt-tokens" does not support new models. This is a temporary workaround.
36function getSupportedModel(model: string): supportModelType {

Callers 4

calculateUsageFunction · 0.90
index.tsFile · 0.90
constructJudgementInputFunction · 0.90
trainOpenaiFineTuneFunction · 0.90

Calls 1

getSupportedModelFunction · 0.85

Tested by

no test coverage detected