CC: Only fit entire example dialogue blocks at once

a12051ee24804bd740048fbb7a9dac546e49a341

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

1 files changed, +9 -9Showing whitespace changes
public/scripts/openai.js+9 -9
@@ -798,9 +798,7 @@ async function populateDialogueExamples(prompts, chatCompletion, messageExamples
798 const newExampleChat = await Message.createAsync('system', substituteParams(oai_settings.new_example_chat_prompt), 'newChat');798 const newExampleChat = await Message.createAsync('system', substituteParams(oai_settings.new_example_chat_prompt), 'newChat');
799 for (const dialogue of [...messageExamples]) {799 for (const dialogue of [...messageExamples]) {
800 const dialogueIndex = messageExamples.indexOf(dialogue);800 const dialogueIndex = messageExamples.indexOf(dialogue);
801 let examplesAdded = 0;801 const chatMessages = [];
802
803 if (chatCompletion.canAfford(newExampleChat)) chatCompletion.insert(newExampleChat, 'dialogueExamples');
804802
805 for (let promptIndex = 0; promptIndex < dialogue.length; promptIndex++) {803 for (let promptIndex = 0; promptIndex < dialogue.length; promptIndex++) {
806 const prompt = dialogue[promptIndex];804 const prompt = dialogue[promptIndex];
@@ -810,15 +808,17 @@ async function populateDialogueExamples(prompts, chatCompletion, messageExamples
810808
811 const chatMessage = await Message.createAsync(role, content, identifier);809 const chatMessage = await Message.createAsync(role, content, identifier);
812 await chatMessage.setName(prompt.name);810 await chatMessage.setName(prompt.name);
813 if (!chatCompletion.canAfford(chatMessage)) {811 chatMessages.push(chatMessage);
814 break;
815 }812 }
816 chatCompletion.insert(chatMessage, 'dialogueExamples');813
817 examplesAdded++;814 const canAffordBlock = chatCompletion.canAfford(newExampleChat) && chatCompletion.canAffordAll(chatMessages);
815 if (!canAffordBlock) {
816 break;
818 }817 }
819818
820 if (0 === examplesAdded) {819 chatCompletion.insert(newExampleChat, 'dialogueExamples');
821 chatCompletion.removeLastFrom('dialogueExamples');820 for (const chatMessage of chatMessages) {
821 chatCompletion.insert(chatMessage, 'dialogueExamples');
822 }822 }
823 }823 }
824 }824 }