Merge pull request #2428 from sasha0552/vllm-tc Add a token counting endpoint for vLLM
Signed| @@ -7,7 +7,7 @@ import { kai_flags } from './kai-settings.js'; | ||
| 7 | 7 | import { textgen_types, textgenerationwebui_settings as textgen_settings, getTextGenServer, getTextGenModel } from './textgen-settings.js'; |
| 8 | 8 | import { getCurrentDreamGenModelTokenizer, getCurrentOpenRouterModelTokenizer, openRouterModels } from './textgen-models.js'; |
| 9 | 9 | |
| 10 | 10 | const { OOBA, TABBY, KOBOLDCPP, VLLM, APHRODITE, LLAMACPP, OPENROUTER, DREAMGEN } = textgen_types; |
| 11 | 11 | |
| 12 | 12 | export const CHARACTERS_PER_TOKEN_RATIO = 3.35; |
| 13 | 13 | const TOKENIZER_WARNING_KEY = 'tokenizationWarningShown'; |
| @@ -39,7 +39,7 @@ export const SENTENCEPIECE_TOKENIZERS = [ | ||
| 39 | 39 | //tokenizers.NERD2, |
| 40 | 40 | ]; |
| 41 | 41 | |
| 42 | 42 | export const TEXTGEN_TOKENIZERS = [OOBA, TABBY, KOBOLDCPP, LLAMACPP, VLLM, APHRODITE]; |
| 43 | 43 | |
| 44 | 44 | const TOKENIZER_URLS = { |
| 45 | 45 | [tokenizers.GPT2]: { |
| @@ -769,6 +769,7 @@ function getTextgenAPITokenizationParams(str) { | ||
| 769 | 769 | api_type: textgen_settings.type, |
| 770 | 770 | url: getTextGenServer(), |
| 771 | 771 | legacy_api: textgen_settings.legacy_api && (textgen_settings.type === OOBA || textgen_settings.type === APHRODITE), |
| 772 | + vllm_model: textgen_settings.vllm_model, | |
| 772 | 773 | }; |
| 773 | 774 | } |
| 774 | 775 | |
| @@ -784,6 +784,7 @@ router.post('/remote/textgenerationwebui/encode', jsonParser, async function (re | ||
| 784 | 784 | const text = String(request.body.text) || ''; |
| 785 | 785 | const baseUrl = String(request.body.url); |
| 786 | 786 | const legacyApi = Boolean(request.body.legacy_api); |
| 787 | + const vllmModel = String(request.body.vllm_model) || ''; | |
| 787 | 788 | |
| 788 | 789 | try { |
| 789 | 790 | const args = { |
| @@ -814,7 +815,9 @@ router.post('/remote/textgenerationwebui/encode', jsonParser, async function (re | ||
| 814 | 815 | args.body = JSON.stringify({ 'content': text }); |
| 815 | 816 | break; |
| 816 | 817 | case TEXTGEN_TYPES.VLLM: |
| 817 | - return response.send({ error: true }); | |
| 818 | + url += '/tokenize'; | |
| 819 | + args.body = JSON.stringify({ 'model': vllmModel, 'prompt': text }); | |
| 820 | + break; | |
| 818 | 821 | case TEXTGEN_TYPES.APHRODITE: |
| 819 | 822 | url += '/v1/tokenize'; |
| 820 | 823 | args.body = JSON.stringify({ 'prompt': text }); |
| @@ -834,7 +837,7 @@ router.post('/remote/textgenerationwebui/encode', jsonParser, async function (re | ||
| 834 | 837 | } |
| 835 | 838 | |
| 836 | 839 | const data = await result.json(); |
| 837 | 840 | const count = legacyApi ? data?.results[0]?.tokens : (data?.length ?? data?.count ?? data?.value ?? data?.tokens?.length); |
| 838 | 841 | const ids = legacyApi ? [] : (data?.tokens ?? data?.ids ?? []); |
| 839 | 842 | |
| 840 | 843 | return response.send({ count, ids }); |