Get available tokenizers from UI

62818055af881170e0ebce3c90c4af8c12ff79ad

Eugén Cowie <eugencowie@users.noreply.github.com>

2 files changed, +22 -16Showing whitespace changes
public/script.js+10 -10
@@ -212,7 +212,7 @@ import {
212212 selectContextPreset,
213213} from './scripts/instruct-mode.js';
214214import { initLocales, t, translate } from './scripts/i18n.js';
215215import { getAvailableTokenizers, getFriendlyTokenizerName, getTokenCount, getTokenCountAsync, getTokenizerModel, initTokenizers, saveTokenCache, selectTokenizer, TOKENIZER_NAME_MAP, tokenizers } from './scripts/tokenizers.js';
216216import {
217217 user_avatar,
218218 getUserAvatars,
@@ -8453,11 +8453,11 @@ async function selectInstructCallback(_, name) {
84538453
84548454async function selectTokenizerCallback(_, name) {
84558455 if (!name) {
84568456 return TOKENIZER_NAME_MAP[power_usergetFriendlyTokenizerName(main_api).tokenizer]tokenizerName;
84578457 }
84588458
84598459 const tokenizerNamestokenizers = Object.valuesgetAvailableTokenizers(TOKENIZER_NAME_MAP);
84608460 const fuse = new Fuse(tokenizerNamestokenizers, { keys: ['tokenizerName'] });
84618461 const result = fuse.search(name);
84628462
84638463 if (result.length === 0) {
@@ -8465,9 +8465,9 @@ async function selectTokenizerCallback(_, name) {
84658465 return '';
84668466 }
84678467
84688468 const foundNamefoundTokenizer = result[0].item;
8469- selectTokenizer(tokenizers[foundName.toUpperCase()]);
8469+ selectTokenizer(foundTokenizer.tokenizerName, foundTokenizer.tokenizerId);
84708470 return foundNamefoundTokenizer;
84718471}
84728472
84738473async function enableInstructCallback() {
@@ -9122,8 +9122,8 @@ jQuery(async function () {
91229122 SlashCommandArgument.fromProps({
91239123 description: 'tokenizer name',
91249124 typeList: [ARGUMENT_TYPE.STRING],
91259125 enumList: Object.valuesgetAvailableTokenizers(TOKENIZER_NAME_MAP).map(tokenizer =>
91269126 new SlashCommandEnumValue(tokenizer.tokenizerName, null, enumTypes.enum, enumIcons.default)),
91279127 }),
91289128 ],
91299129 helpString: `
@@ -9132,7 +9132,7 @@ jQuery(async function () {
91329132 </div>
91339133 <div>
91349134 <strong>Available tokenizers:</strong>
91359135 <pre><code>${ObjectgetAvailableTokenizers().valuesmap(TOKENIZER_NAME_MAPt => t.tokenizerName).join(', ')}</code></pre>
91369136 </div>
91379137 `
91389138 }));
public/scripts/tokenizers.js+12 -6
@@ -148,20 +148,26 @@ async function resetTokenCache() {
148148}
149149
150150/**
151151 * MapsGets tokenizerall IDstokenizers available to theirthe namesuser.
152152 * @examplereturns { 0{ tokenizerName: 'none'string, 1tokenizerId: 'gpt2',number ...}[] } Tokenizer info.
153153 */
154-export const TOKENIZER_NAME_MAP = Object.fromEntries(
154+export function getAvailableTokenizers() {
155- Object.entries(tokenizers).map(([name, id]) => [id, name.toLowerCase()]));
155+ const tokenizerOptions = $('#tokenizer').find('option').toArray();
156+ return tokenizerOptions.map(tokenizerOption => ({
157+ tokenizerName: tokenizerOption.text,
158+ tokenizerId: Number(tokenizerOption.value),
159+ }))
160+}
156161
157162/**
158163 * Selects tokenizer if not already selected.
164+ * @param {string} tokenizerName Tokenizer name.
159165 * @param {number} tokenizerId Tokenizer ID.
160166 */
161167export function selectTokenizer(tokenizerName, tokenizerId) {
162168 if (tokenizerId !== power_user.tokenizer) {
163169 $('#tokenizer').val(tokenizerId).trigger('change');
164170 toastr.info(`Tokenizer: "${TOKENIZER_NAME_MAP[tokenizerId]tokenizerName}" selected`);
165171 }
166172}
167173