MCPcopy
hub / github.com/continuedev/continue / countTokensAsync

Function countTokensAsync

core/llm/countTokens.ts:94–110  ·  view source on GitHub ↗
(
  content: MessageContent,
  // defaults to llama2 because the tokenizer tends to produce more tokens
  modelName = "llama2",
)

Source from the content-addressed store, hash-verified

92}
93
94async function countTokensAsync(
95 content: MessageContent,
96 // defaults to llama2 because the tokenizer tends to produce more tokens
97 modelName = "llama2",
98): Promise<number> {
99 const encoding = asyncEncoderForModel(modelName);
100 if (Array.isArray(content)) {
101 const promises = content.map(async (part) => {
102 if (part.type === "imageUrl") {
103 return countImageTokens(part);
104 }
105 return (await encoding.encode(part.text ?? "")).length;
106 });
107 return (await Promise.all(promises)).reduce((sum, val) => sum + val, 0);
108 }
109 return (await encoding.encode(content ?? "")).length;
110}
111
112function countTokens(
113 content: MessageContent,

Callers 8

code.test.tsFile · 0.90
chunkDocumentFunction · 0.85
basicChunkerFunction · 0.85
collapseChildrenFunction · 0.85
maybeYieldChunkFunction · 0.85

Calls 3

asyncEncoderForModelFunction · 0.85
countImageTokensFunction · 0.85
encodeMethod · 0.65

Tested by

no test coverage detected