mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Small update to enum display + consistency
This commit is contained in:
@ -8453,11 +8453,11 @@ async function selectInstructCallback(_, name) {
|
|||||||
|
|
||||||
async function selectTokenizerCallback(_, name) {
|
async function selectTokenizerCallback(_, name) {
|
||||||
if (!name) {
|
if (!name) {
|
||||||
return getFriendlyTokenizerName(main_api).tokenizerName;
|
return getAvailableTokenizers().find(tokenizer => tokenizer.tokenizerId === power_user.tokenizer)?.tokenizerKey ?? '';
|
||||||
}
|
}
|
||||||
|
|
||||||
const tokenizers = getAvailableTokenizers();
|
const tokenizers = getAvailableTokenizers();
|
||||||
const fuse = new Fuse(tokenizers, { keys: ['tokenizerName'] });
|
const fuse = new Fuse(tokenizers, { keys: ['tokenizerKey', 'tokenizerName'] });
|
||||||
const result = fuse.search(name);
|
const result = fuse.search(name);
|
||||||
|
|
||||||
if (result.length === 0) {
|
if (result.length === 0) {
|
||||||
@ -8465,9 +8465,11 @@ async function selectTokenizerCallback(_, name) {
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @type {import('./scripts/tokenizers.js').Tokenizer} */
|
||||||
const foundTokenizer = result[0].item;
|
const foundTokenizer = result[0].item;
|
||||||
selectTokenizer(foundTokenizer.tokenizerName, foundTokenizer.tokenizerId);
|
selectTokenizer(foundTokenizer.tokenizerId);
|
||||||
return foundTokenizer.tokenizerName;
|
|
||||||
|
return foundTokenizer.tokenizerKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function enableInstructCallback() {
|
async function enableInstructCallback() {
|
||||||
@ -9123,7 +9125,7 @@ jQuery(async function () {
|
|||||||
description: 'tokenizer name',
|
description: 'tokenizer name',
|
||||||
typeList: [ARGUMENT_TYPE.STRING],
|
typeList: [ARGUMENT_TYPE.STRING],
|
||||||
enumList: getAvailableTokenizers().map(tokenizer =>
|
enumList: getAvailableTokenizers().map(tokenizer =>
|
||||||
new SlashCommandEnumValue(tokenizer.tokenizerName, null, enumTypes.enum, enumIcons.default)),
|
new SlashCommandEnumValue(tokenizer.tokenizerKey, tokenizer.tokenizerName, enumTypes.enum, enumIcons.default)),
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
helpString: `
|
helpString: `
|
||||||
@ -9132,7 +9134,7 @@ jQuery(async function () {
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<strong>Available tokenizers:</strong>
|
<strong>Available tokenizers:</strong>
|
||||||
<pre><code>${getAvailableTokenizers().map(t => t.tokenizerName).join(', ')}</code></pre>
|
<pre><code>${getAvailableTokenizers().map(t => t.tokenizerKey).join(', ')}</code></pre>
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
}));
|
}));
|
||||||
|
@ -147,34 +147,46 @@ async function resetTokenCache() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {object} Tokenizer
|
||||||
|
* @property {number} tokenizerId - The id of the tokenizer option
|
||||||
|
* @property {string} tokenizerKey - Internal name/key of the tokenizer
|
||||||
|
* @property {string} tokenizerName - Human-readable detailed name of the tokenizer (as displayed in the UI)
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets all tokenizers available to the user.
|
* Gets all tokenizers available to the user.
|
||||||
* @returns { { tokenizerName: string, tokenizerId: number }[] } Tokenizer info.
|
* @returns {Tokenizer[]} Tokenizer info.
|
||||||
*/
|
*/
|
||||||
export function getAvailableTokenizers() {
|
export function getAvailableTokenizers() {
|
||||||
const tokenizerOptions = $('#tokenizer').find('option').toArray();
|
const tokenizerOptions = $('#tokenizer').find('option').toArray();
|
||||||
return tokenizerOptions.map(tokenizerOption => ({
|
return tokenizerOptions.map(tokenizerOption => ({
|
||||||
tokenizerName: tokenizerOption.text,
|
|
||||||
tokenizerId: Number(tokenizerOption.value),
|
tokenizerId: Number(tokenizerOption.value),
|
||||||
|
tokenizerKey: Object.entries(tokenizers).find(([_, value]) => value === Number(tokenizerOption.value))[0].toLocaleLowerCase(),
|
||||||
|
tokenizerName: tokenizerOption.text,
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Selects tokenizer if not already selected.
|
* Selects tokenizer if not already selected.
|
||||||
* @param {string} tokenizerName Tokenizer name.
|
|
||||||
* @param {number} tokenizerId Tokenizer ID.
|
* @param {number} tokenizerId Tokenizer ID.
|
||||||
*/
|
*/
|
||||||
export function selectTokenizer(tokenizerName, tokenizerId) {
|
export function selectTokenizer(tokenizerId) {
|
||||||
if (tokenizerId !== power_user.tokenizer) {
|
if (tokenizerId !== power_user.tokenizer) {
|
||||||
$('#tokenizer').val(tokenizerId).trigger('change');
|
const tokenizer = getAvailableTokenizers().find(tokenizer => tokenizer.tokenizerId === tokenizerId);
|
||||||
toastr.info(`Tokenizer: "${tokenizerName}" selected`);
|
if (!tokenizer) {
|
||||||
|
console.warn('Failed to find tokenizer with id', tokenizerId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$('#tokenizer').val(tokenizer.tokenizerId).trigger('change');
|
||||||
|
toastr.info(`Tokenizer: "${tokenizer.tokenizerName}" selected`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the friendly name of the current tokenizer.
|
* Gets the friendly name of the current tokenizer.
|
||||||
* @param {string} forApi API to get the tokenizer for. Defaults to the main API.
|
* @param {string} forApi API to get the tokenizer for. Defaults to the main API.
|
||||||
* @returns { { tokenizerName: string, tokenizerId: number } } Tokenizer info
|
* @returns {Tokenizer} Tokenizer info
|
||||||
*/
|
*/
|
||||||
export function getFriendlyTokenizerName(forApi) {
|
export function getFriendlyTokenizerName(forApi) {
|
||||||
if (!forApi) {
|
if (!forApi) {
|
||||||
@ -209,7 +221,9 @@ export function getFriendlyTokenizerName(forApi) {
|
|||||||
? tokenizers.OPENAI
|
? tokenizers.OPENAI
|
||||||
: tokenizerId;
|
: tokenizerId;
|
||||||
|
|
||||||
return { tokenizerName, tokenizerId };
|
const tokenizerKey = Object.entries(tokenizers).find(([_, value]) => value === tokenizerId)[0].toLocaleLowerCase();
|
||||||
|
|
||||||
|
return { tokenizerName, tokenizerKey, tokenizerId };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user