Emotions: Use the full context for main API To prevent prompt reprocessing per turn, use the full context when prompting with the main API. Doing so keeps the preserved prefix while adding an extra sentence rather than providing two different prompts for each turn. In addition, JSON schemas might need a prompt to coerce a proper schema return from the model. Signed-off-by: kingbri <8082010+kingbri1@users.noreply.github.com>

e43e771cc534092e04edf30289066f9fef138147

kingbri <8082010+kingbri1@users.noreply.github.com>

1 files changed, +9 -6Ignore whitespace
public/scripts/extensions/expressions/index.js+9 -6
@@ -1,6 +1,6 @@
11import { Fuse } from '../../../lib.js';
22
33import { characters, eventSource, event_types, generateQuietPrompt, generateRaw, getRequestHeaders, main_api, online_status, saveSettingsDebounced, substituteParams, substituteParamsExtended, system_message_types, this_chid } from '../../../script.js';
44import { dragElement, isMobile } from '../../RossAscends-mods.js';
55import { getContext, getApiUrl, modules, extension_settings, ModuleWorkerWrapper, doExtrasFetch, renderExtensionTemplateAsync } from '../../extensions.js';
66import { loadMovingUIState, performFuzzySearch, power_user } from '../../power-user.js';
@@ -909,10 +909,6 @@ function sampleClassifyText(text) {
909909 * @returns {Promise<string>} Prompt for the LLM API.
910910 */
911911async function getLlmPrompt(labels) {
912- if (isJsonSchemaSupported()) {
913- return '';
914- }
915-
916912 const labelsString = labels.map(x => `"${x}"`).join(', ');
917913 const prompt = substituteParamsExtended(String(extension_settings.expressions.llmPrompt), { labels: labelsString });
918914 return prompt;
@@ -1047,7 +1043,14 @@ export async function getExpressionLabel(text, expressionsApi = extension_settin
10471043 const expressionsList = await getExpressionsList({ filterAvailable: filterAvailable });
10481044 const prompt = substituteParamsExtended(customPrompt, { labels: expressionsList }) || await getLlmPrompt(expressionsList);
10491045 eventSource.once(event_types.TEXT_COMPLETION_SETTINGS_READY, onTextGenSettingsReady);
1050- const emotionResponse = await generateRaw(text, main_api, false, false, prompt);
1046+
1047+ let emotionResponse;
1048+ try {
1049+ inApiCall = true;
1050+ emotionResponse = await generateQuietPrompt(prompt, false, false);
1051+ } finally {
1052+ inApiCall = false;
1053+ }
10511054 return parseLlmResponse(emotionResponse, expressionsList);
10521055 }
10531056 // Using WebLLM