CC: Only fit entire example dialogue blocks at once

a12051ee24804bd740048fbb7a9dac546e49a341

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +10 -10Ignore whitespace
public/scripts/openai.js+10 -10
@@ -798,9 +798,7 @@ async function populateDialogueExamples(prompts, chatCompletion, messageExamples
798798 const newExampleChat = await Message.createAsync('system', substituteParams(oai_settings.new_example_chat_prompt), 'newChat');
799799 for (const dialogue of [...messageExamples]) {
800800 const dialogueIndex = messageExamples.indexOf(dialogue);
801801 letconst examplesAddedchatMessages = 0[];
802-
803- if (chatCompletion.canAfford(newExampleChat)) chatCompletion.insert(newExampleChat, 'dialogueExamples');
804802
805803 for (let promptIndex = 0; promptIndex < dialogue.length; promptIndex++) {
806804 const prompt = dialogue[promptIndex];
@@ -810,15 +808,17 @@ async function populateDialogueExamples(prompts, chatCompletion, messageExamples
810808
811809 const chatMessage = await Message.createAsync(role, content, identifier);
812810 await chatMessage.setName(prompt.name);
813- if (!chatCompletion.canAfford(chatMessage)) {
811+ chatMessages.push(chatMessage);
814- break;
815- }
816- chatCompletion.insert(chatMessage, 'dialogueExamples');
817- examplesAdded++;
818812 }
819813
820- if (0 === examplesAdded) {
814+ const canAffordBlock = chatCompletion.canAfford(newExampleChat) && chatCompletion.canAffordAll(chatMessages);
821- chatCompletion.removeLastFrom('dialogueExamples');
815+ if (!canAffordBlock) {
816+ break;
817+ }
818+
819+ chatCompletion.insert(newExampleChat, 'dialogueExamples');
820+ for (const chatMessage of chatMessages) {
821+ chatCompletion.insert(chatMessage, 'dialogueExamples');
822822 }
823823 }
824824 }