From 3635d96a0375670af9ffafd7e42d4ffce1c81149 Mon Sep 17 00:00:00 2001 From: Michael Bianco Date: Sat, 8 Jul 2023 18:34:29 -0600 Subject: [PATCH] refactor: only fallback to approximate if tiktoken fails (#1898) --- langchain/src/base_language/count_tokens.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/langchain/src/base_language/count_tokens.ts b/langchain/src/base_language/count_tokens.ts index 80be94b0fed9..863c0297d564 100644 --- a/langchain/src/base_language/count_tokens.ts +++ b/langchain/src/base_language/count_tokens.ts @@ -68,8 +68,7 @@ export const calculateMaxTokens = async ({ prompt, modelName, }: CalculateMaxTokenProps) => { - // fallback to approximate calculation if tiktoken is not available - let numTokens = Math.ceil(prompt.length / 4); + let numTokens; try { numTokens = (await encodingForModel(modelName)).encode(prompt).length; @@ -77,6 +76,9 @@ export const calculateMaxTokens = async ({ console.warn( "Failed to calculate number of tokens, falling back to approximate count" ); + + // fallback to approximate calculation if tiktoken is not available + numTokens = Math.ceil(prompt.length / 4); } const maxTokens = getModelContextSize(modelName);