2023-04-03 21:18:19 -04:00
|
|
|
const express = require('express');
|
|
|
|
|
const router = express.Router();
|
2023-04-04 10:04:21 -04:00
|
|
|
const { Tiktoken } = require('@dqbd/tiktoken/lite');
|
|
|
|
|
const { load } = require('@dqbd/tiktoken/load');
|
|
|
|
|
const registry = require('@dqbd/tiktoken/registry.json');
|
|
|
|
|
const models = require('@dqbd/tiktoken/model_to_encoding.json');
|
2023-04-03 21:18:19 -04:00
|
|
|
|
|
|
|
|
router.post('/', async (req, res) => {
|
2023-04-11 10:28:11 -04:00
|
|
|
try {
|
|
|
|
|
const { arg } = req.body;
|
|
|
|
|
|
2023-04-11 10:29:55 -04:00
|
|
|
// console.log('context:', arg, req.body);
|
2023-04-11 10:28:11 -04:00
|
|
|
// console.log(typeof req.body === 'object' ? { ...req.body, ...req.query } : req.query);
|
|
|
|
|
const model = await load(registry[models['gpt-3.5-turbo']]);
|
|
|
|
|
const encoder = new Tiktoken(model.bpe_ranks, model.special_tokens, model.pat_str);
|
|
|
|
|
const tokens = encoder.encode(arg.text);
|
|
|
|
|
encoder.free();
|
|
|
|
|
res.send({ count: tokens.length });
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.error(e);
|
|
|
|
|
res.status(500).send(e.message);
|
|
|
|
|
}
|
2023-04-03 21:18:19 -04:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
module.exports = router;
|