New tokenizer option.

If you're running an ooba-like api, you can use the token-count endpoint.
Exact and fast!
This commit is contained in:
50h100a
2023-07-12 04:18:55 -04:00
parent 4f11b38110
commit 49ae2cbad6
3 changed files with 24 additions and 0 deletions

View File

@@ -581,6 +581,8 @@ function getTokenCount(str, padding = undefined) {
return countTokensRemote('/tokenize_nerdstash', str, padding);
case tokenizers.NERD2:
return countTokensRemote('/tokenize_nerdstash_v2', str, padding);
case tokenizers.API:
return countTokensRemote('/tokenize_via_api', str, padding);
default:
console.warn("Unknown tokenizer type", tokenizerType);
return Math.ceil(str.length / CHARACTERS_PER_TOKEN_RATIO) + padding;

View File

@@ -75,6 +75,7 @@ const tokenizers = {
LLAMA: 3,
NERD: 4,
NERD2: 5,
API: 6,
}
const send_on_enter_options = {

View File

@@ -3401,6 +3401,27 @@ function createTokenizationHandler(getTokenizerFn) {
app.post("/tokenize_llama", jsonParser, createTokenizationHandler(() => spp_llama));
app.post("/tokenize_nerdstash", jsonParser, createTokenizationHandler(() => spp_nerd));
app.post("/tokenize_nerdstash_v2", jsonParser, createTokenizationHandler(() => spp_nerd_v2));
app.post("/tokenize_via_api", jsonParser, async function(request, response) {
if (!request.body) {
return response.sendStatus(400);
}
const text = request.body.text || '';
try {
const args = {
body: JSON.stringify({"prompt": text}),
headers: { "Content-Type": "application/json" }
};
const data = await postAsync(api_server + "/v1/token-count", args);
console.log(data);
return response.send({ count: data['results'][0]['tokens'] });
} catch (error) {
console.log(error);
return response.send({ error: true });
}
});
// ** REST CLIENT ASYNC WRAPPERS **