(CC) Move continue nudge at the end of completion (#3611) * Move continue nudge at the end of completion Closes #3607 * Move continue message together with nudge
Signed| @@ -32,7 +32,7 @@ | ||
| 32 | 32 | "new_chat_prompt": "[Start a new Chat]", |
| 33 | 33 | "new_group_chat_prompt": "[Start a new group chat. Group members: {{group}}]", |
| 34 | 34 | "new_example_chat_prompt": "[Example Chat]", |
| 35 | - "continue_nudge_prompt": "[Continue the following message. Do not include ANY parts of the original message. Use capitalization and punctuation as if your reply is a part of the original message: {{lastChatMessage}}]", | |
| 35 | + "continue_nudge_prompt": "[Continue your last message without repeating its original content.]", | |
| 36 | 36 | "bias_preset_selected": "Default (none)", |
| 37 | 37 | "reverse_proxy": "", |
| 38 | 38 | "proxy_password": "", |
| @@ -593,7 +593,7 @@ | ||
| 593 | 593 | "new_chat_prompt": "[Start a new Chat]", |
| 594 | 594 | "new_group_chat_prompt": "[Start a new group chat. Group members: {{group}}]", |
| 595 | 595 | "new_example_chat_prompt": "[Example Chat]", |
| 596 | - "continue_nudge_prompt": "[Continue the following message. Do not include ANY parts of the original message. Use capitalization and punctuation as if your reply is a part of the original message: {{lastChatMessage}}]", | |
| 596 | + "continue_nudge_prompt": "[Continue your last message without repeating its original content.]", | |
| 597 | 597 | "bias_preset_selected": "Default (none)", |
| 598 | 598 | "bias_presets": { |
| 599 | 599 | "Default (none)": [], |
| @@ -100,7 +100,7 @@ const default_wi_format = '{0}'; | ||
| 100 | 100 | const default_new_chat_prompt = '[Start a new Chat]'; |
| 101 | 101 | const default_new_group_chat_prompt = '[Start a new group chat. Group members: {{group}}]'; |
| 102 | 102 | const default_new_example_chat_prompt = '[Example Chat]'; |
| 103 | -const default_continue_nudge_prompt = '[Continue the following message. Do not include ANY parts of the original message. Use capitalization and punctuation as if your reply is a part of the original message: {{lastChatMessage}}]'; | |
| 103 | +const default_continue_nudge_prompt = '[Continue your last message without repeating its original content.]'; | |
| 104 | 104 | const default_bias = 'Default (none)'; |
| 105 | 105 | const default_personality_format = '{{personality}}'; |
| 106 | 106 | const default_scenario_format = '{{scenario}}'; |
| @@ -792,7 +792,7 @@ async function populateChatHistory(messages, prompts, chatCompletion, type = nul | ||
| 792 | 792 | } |
| 793 | 793 | |
| 794 | 794 | // Reserve budget for continue nudge |
| 795 | 795 | let continueMessagecontinueMessageCollection = null; |
| 796 | 796 | if (type === 'continue' && cyclePrompt && !oai_settings.continue_prefill) { |
| 797 | 797 | const promptObject = { |
| 798 | 798 | identifier: 'continueNudge', |
| @@ -800,10 +800,19 @@ async function populateChatHistory(messages, prompts, chatCompletion, type = nul | ||
| 800 | 800 | content: substituteParamsExtended(oai_settings.continue_nudge_prompt, { lastChatMessage: String(cyclePrompt).trim() }), |
| 801 | 801 | system_prompt: true, |
| 802 | 802 | }; |
| 803 | 803 | const continuePromptcontinueMessageCollection = new PromptMessageCollection(promptObject'continueNudge'); |
| 804 | 804 | const preparedPromptcontinueMessageIndex = promptManagermessages.preparePromptfindLastIndex(continuePromptx => !x.injected); |
| 805 | - continueMessage = await Message.fromPromptAsync(preparedPrompt); | |
| 805 | + if (continueMessageIndex >= 0) { | |
| 806 | - chatCompletion.reserveBudget(continueMessage); | |
| 806 | + const continueMessage = messages.splice(continueMessageIndex, 1)[0]; | |
| 807 | + const prompt = new Prompt(continueMessage); | |
| 808 | + const chatMessage = await Message.fromPromptAsync(promptManager.preparePrompt(prompt)); | |
| 809 | + continueMessageCollection.add(chatMessage); | |
| 810 | + } | |
| 811 | + const continueNudgePrompt = new Prompt(promptObject); | |
| 812 | + const preparedNudgePrompt = promptManager.preparePrompt(continueNudgePrompt); | |
| 813 | + const continueNudgeMessage = await Message.fromPromptAsync(preparedNudgePrompt); | |
| 814 | + continueMessageCollection.add(continueNudgeMessage); | |
| 815 | + chatCompletion.reserveBudget(continueMessageCollection); | |
| 807 | 816 | } |
| 808 | 817 | |
| 809 | 818 | const lastChatPrompt = messages[messages.length - 1]; |
| @@ -887,9 +896,9 @@ async function populateChatHistory(messages, prompts, chatCompletion, type = nul | ||
| 887 | 896 | } |
| 888 | 897 | |
| 889 | 898 | // Insert and free continue nudge |
| 890 | 899 | if (type === 'continue' && continueMessagecontinueMessageCollection) { |
| 891 | 900 | chatCompletion.freeBudget(continueMessagecontinueMessageCollection); |
| 892 | 901 | chatCompletion.insertAtEndadd(continueMessagecontinueMessageCollection, 'chatHistory'-1); |
| 893 | 902 | } |
| 894 | 903 | } |
| 895 | 904 | |
| @@ -2970,7 +2979,7 @@ export class ChatCompletion { | ||
| 2970 | 2979 | /** |
| 2971 | 2980 | * Checks if the token budget can afford the tokens of the specified message. |
| 2972 | 2981 | * |
| 2973 | 2982 | * @param {Message|MessageCollection} message - The message to check for affordability. |
| 2974 | 2983 | * @returns {boolean} True if the budget can afford the message, false otherwise. |
| 2975 | 2984 | */ |
| 2976 | 2985 | canAfford(message) { |
| @@ -3058,7 +3067,7 @@ export class ChatCompletion { | ||
| 3058 | 3067 | * Validates if the given argument is an instance of MessageCollection. |
| 3059 | 3068 | * Throws an error if the validation fails. |
| 3060 | 3069 | * |
| 3061 | 3070 | * @param {MessageCollection|Message} collection - The collection to validate. |
| 3062 | 3071 | */ |
| 3063 | 3072 | validateMessageCollection(collection) { |
| 3064 | 3073 | if (!(collection instanceof MessageCollection)) { |
| @@ -3084,7 +3093,7 @@ export class ChatCompletion { | ||
| 3084 | 3093 | * Checks if the token budget can afford the tokens of the given message. |
| 3085 | 3094 | * Throws an error if the budget can't afford the message. |
| 3086 | 3095 | * |
| 3087 | 3096 | * @param {Message|MessageCollection} message - The message to check. |
| 3088 | 3097 | * @param {string} identifier - The identifier of the message. |
| 3089 | 3098 | */ |
| 3090 | 3099 | checkTokenBudget(message, identifier) { |