Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 1,195 Bytes
ff934bb 144112e a0ed974 a1a6daf ff934bb a1a6daf ff934bb a1a6daf ff934bb a1a6daf ff934bb a1a6daf ff934bb a1a6daf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
<script lang="ts">
import type { Model } from "$lib/types/Model";
import { getTokenizer } from "$lib/utils/getTokenizer";
import type { PreTrainedTokenizer } from "@huggingface/transformers";
import { untrack } from "svelte";
interface Props {
classNames?: string;
prompt?: string;
modelTokenizer: Exclude<Model["tokenizer"], undefined>;
truncate?: number | undefined;
}
let { classNames = "", prompt = "", modelTokenizer, truncate = undefined }: Props = $props();
let tokenizer: Promise<PreTrainedTokenizer> = $derived(getTokenizer(modelTokenizer));
let nTokens = $state(0);
$effect(() => {
prompt &&
untrack(() => {
tokenizer.then((tokenizer) => {
const { input_ids } = tokenizer(prompt);
nTokens = input_ids.size;
});
});
});
let exceedLimit = $derived(nTokens > (truncate || Infinity));
</script>
<div class={classNames}>
<p
class="peer text-sm {exceedLimit ? 'text-red-500 opacity-100' : 'opacity-60 hover:opacity-90'}"
>
{nTokens}{truncate ? `/${truncate}` : ""}
</p>
<div
class="invisible absolute -top-6 right-0 whitespace-nowrap rounded bg-black px-1 text-sm text-white peer-hover:visible"
>
Tokens usage
</div>
</div>
|