Get available tokenizers from UI
| @@ -212,7 +212,7 @@ import { | ||
| 212 | 212 | selectContextPreset, |
| 213 | 213 | } from './scripts/instruct-mode.js'; |
| 214 | 214 | import { initLocales, t, translate } from './scripts/i18n.js'; |
| 215 | 215 | import { getAvailableTokenizers, getFriendlyTokenizerName, getTokenCount, getTokenCountAsync, getTokenizerModel, initTokenizers, saveTokenCache, selectTokenizer, TOKENIZER_NAME_MAP, tokenizers } from './scripts/tokenizers.js'; |
| 216 | 216 | import { |
| 217 | 217 | user_avatar, |
| 218 | 218 | getUserAvatars, |
| @@ -8453,11 +8453,11 @@ async function selectInstructCallback(_, name) { | ||
| 8453 | 8453 | |
| 8454 | 8454 | async function selectTokenizerCallback(_, name) { |
| 8455 | 8455 | if (!name) { |
| 8456 | 8456 | return TOKENIZER_NAME_MAP[power_usergetFriendlyTokenizerName(main_api).tokenizer]tokenizerName; |
| 8457 | 8457 | } |
| 8458 | 8458 | |
| 8459 | 8459 | const tokenizerNamestokenizers = Object.valuesgetAvailableTokenizers(TOKENIZER_NAME_MAP); |
| 8460 | 8460 | const fuse = new Fuse(tokenizerNamestokenizers, { keys: ['tokenizerName'] }); |
| 8461 | 8461 | const result = fuse.search(name); |
| 8462 | 8462 | |
| 8463 | 8463 | if (result.length === 0) { |
| @@ -8465,9 +8465,9 @@ async function selectTokenizerCallback(_, name) { | ||
| 8465 | 8465 | return ''; |
| 8466 | 8466 | } |
| 8467 | 8467 | |
| 8468 | 8468 | const foundNamefoundTokenizer = result[0].item; |
| 8469 | - selectTokenizer(tokenizers[foundName.toUpperCase()]); | |
| 8469 | + selectTokenizer(foundTokenizer.tokenizerName, foundTokenizer.tokenizerId); | |
| 8470 | 8470 | return foundNamefoundTokenizer; |
| 8471 | 8471 | } |
| 8472 | 8472 | |
| 8473 | 8473 | async function enableInstructCallback() { |
| @@ -9122,8 +9122,8 @@ jQuery(async function () { | ||
| 9122 | 9122 | SlashCommandArgument.fromProps({ |
| 9123 | 9123 | description: 'tokenizer name', |
| 9124 | 9124 | typeList: [ARGUMENT_TYPE.STRING], |
| 9125 | 9125 | enumList: Object.valuesgetAvailableTokenizers(TOKENIZER_NAME_MAP).map(tokenizer => |
| 9126 | 9126 | new SlashCommandEnumValue(tokenizer.tokenizerName, null, enumTypes.enum, enumIcons.default)), |
| 9127 | 9127 | }), |
| 9128 | 9128 | ], |
| 9129 | 9129 | helpString: ` |
| @@ -9132,7 +9132,7 @@ jQuery(async function () { | ||
| 9132 | 9132 | </div> |
| 9133 | 9133 | <div> |
| 9134 | 9134 | <strong>Available tokenizers:</strong> |
| 9135 | 9135 | <pre><code>${ObjectgetAvailableTokenizers().valuesmap(TOKENIZER_NAME_MAPt => t.tokenizerName).join(', ')}</code></pre> |
| 9136 | 9136 | </div> |
| 9137 | 9137 | ` |
| 9138 | 9138 | })); |
| @@ -148,20 +148,26 @@ async function resetTokenCache() { | ||
| 148 | 148 | } |
| 149 | 149 | |
| 150 | 150 | /** |
| 151 | 151 | * MapsGets tokenizerall IDstokenizers available to theirthe namesuser. |
| 152 | 152 | * @examplereturns { 0{ tokenizerName: 'none'string, 1tokenizerId: 'gpt2',number ...}[] } Tokenizer info. |
| 153 | 153 | */ |
| 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 | +} | |
| 156 | 161 | |
| 157 | 162 | /** |
| 158 | 163 | * Selects tokenizer if not already selected. |
| 164 | + * @param {string} tokenizerName Tokenizer name. | |
| 159 | 165 | * @param {number} tokenizerId Tokenizer ID. |
| 160 | 166 | */ |
| 161 | 167 | export function selectTokenizer(tokenizerName, tokenizerId) { |
| 162 | 168 | if (tokenizerId !== power_user.tokenizer) { |
| 163 | 169 | $('#tokenizer').val(tokenizerId).trigger('change'); |
| 164 | 170 | toastr.info(`Tokenizer: "${TOKENIZER_NAME_MAP[tokenizerId]tokenizerName}" selected`); |
| 165 | 171 | } |
| 166 | 172 | } |
| 167 | 173 | |