const { Tiktoken } = require('tiktoken/lite'); const { load } = require('tiktoken/load'); const registry = require('tiktoken/registry.json'); const models = require('tiktoken/model_to_encoding.json'); const countTokens = async (text = '', modelName = 'gpt-3.5-turbo') => { let encoder = null; try { const model = await load(registry[models[modelName]]); encoder = new Tiktoken(model.bpe_ranks, model.special_tokens, model.pat_str); const tokens = encoder.encode(text); encoder.free(); return tokens.length; } catch (e) { console.error(e); if (encoder) { encoder.free(); } return 0; } }; module.exports = countTokens;