diff --git a/public/script.js b/public/script.js
index 8252c0b79..3078d8a88 100644
--- a/public/script.js
+++ b/public/script.js
@@ -4836,7 +4836,7 @@ function extractMessageFromData(data) {
case 'novel':
return data.output;
case 'openai':
- return data?.choices?.[0]?.message?.content ?? data?.choices?.[0]?.text ?? '';
+ return data?.choices?.[0]?.message?.content ?? data?.choices?.[0]?.text ?? data?.text ?? '';
default:
return '';
}
@@ -8187,6 +8187,11 @@ const CONNECT_API_MAP = {
button: '#api_button_openai',
source: chat_completion_sources.CUSTOM,
},
+ 'cohere': {
+ selected: 'cohere',
+ button: '#api_button_openai',
+ source: chat_completion_sources.COHERE,
+ },
'infermaticai': {
selected: 'textgenerationwebui',
button: '#api_button_textgenerationwebui',
@@ -8587,7 +8592,7 @@ jQuery(async function () {
$('#groupCurrentMemberListToggle .inline-drawer-icon').trigger('click');
}, 200);
- $('#chat').on('mousewheel touchstart', () => {
+ $('#chat').on('wheel touchstart', () => {
scrollLock = true;
});
diff --git a/public/scripts/RossAscends-mods.js b/public/scripts/RossAscends-mods.js
index 054641268..87cbbff2c 100644
--- a/public/scripts/RossAscends-mods.js
+++ b/public/scripts/RossAscends-mods.js
@@ -350,6 +350,7 @@ function RA_autoconnect(PrevApi) {
|| (secret_state[SECRET_KEYS.AI21] && oai_settings.chat_completion_source == chat_completion_sources.AI21)
|| (secret_state[SECRET_KEYS.MAKERSUITE] && oai_settings.chat_completion_source == chat_completion_sources.MAKERSUITE)
|| (secret_state[SECRET_KEYS.MISTRALAI] && oai_settings.chat_completion_source == chat_completion_sources.MISTRALAI)
+ || (secret_state[SECRET_KEYS.COHERE] && oai_settings.chat_completion_source == chat_completion_sources.COHERE)
|| (isValidUrl(oai_settings.custom_url) && oai_settings.chat_completion_source == chat_completion_sources.CUSTOM)
) {
$('#api_button_openai').trigger('click');
diff --git a/public/scripts/extensions/memory/index.js b/public/scripts/extensions/memory/index.js
index 00c6de443..7071eb8a3 100644
--- a/public/scripts/extensions/memory/index.js
+++ b/public/scripts/extensions/memory/index.js
@@ -122,6 +122,44 @@ function loadSettings() {
switchSourceControls(extension_settings.memory.source);
}
+async function onPromptForceWordsAutoClick() {
+ const context = getContext();
+ const maxPromptLength = getMaxContextSize(extension_settings.memory.overrideResponseLength);
+ const chat = context.chat;
+ const allMessages = chat.filter(m => !m.is_system && m.mes).map(m => m.mes);
+ const messagesWordCount = allMessages.map(m => extractAllWords(m)).flat().length;
+ const averageMessageWordCount = messagesWordCount / allMessages.length;
+ const tokensPerWord = getTokenCount(allMessages.join('\n')) / messagesWordCount;
+ const wordsPerToken = 1 / tokensPerWord;
+ const maxPromptLengthWords = Math.round(maxPromptLength * wordsPerToken);
+ // How many words should pass so that messages will start be dropped out of context;
+ const wordsPerPrompt = Math.floor(maxPromptLength / tokensPerWord);
+ // How many words will be needed to fit the allowance buffer
+ const summaryPromptWords = extractAllWords(extension_settings.memory.prompt).length;
+ const promptAllowanceWords = maxPromptLengthWords - extension_settings.memory.promptWords - summaryPromptWords;
+ const averageMessagesPerPrompt = Math.floor(promptAllowanceWords / averageMessageWordCount);
+ const maxMessagesPerSummary = extension_settings.memory.maxMessagesPerRequest || 0;
+ const targetMessagesInPrompt = maxMessagesPerSummary > 0 ? maxMessagesPerSummary : Math.max(0, averageMessagesPerPrompt);
+ const targetSummaryWords = (targetMessagesInPrompt * averageMessageWordCount) + (promptAllowanceWords / 4);
+
+ console.table({
+ maxPromptLength,
+ maxPromptLengthWords,
+ promptAllowanceWords,
+ averageMessagesPerPrompt,
+ targetMessagesInPrompt,
+ targetSummaryWords,
+ wordsPerPrompt,
+ wordsPerToken,
+ tokensPerWord,
+ messagesWordCount,
+ });
+
+ const ROUNDING = 100;
+ extension_settings.memory.promptForceWords = Math.max(1, Math.floor(targetSummaryWords / ROUNDING) * ROUNDING);
+ $('#memory_prompt_words_force').val(extension_settings.memory.promptForceWords).trigger('input');
+}
+
async function onPromptIntervalAutoClick() {
const context = getContext();
const maxPromptLength = getMaxContextSize(extension_settings.memory.overrideResponseLength);
@@ -136,8 +174,8 @@ async function onPromptIntervalAutoClick() {
const promptAllowance = maxPromptLength - promptTokens - targetSummaryTokens;
const maxMessagesPerSummary = extension_settings.memory.maxMessagesPerRequest || 0;
const averageMessagesPerPrompt = Math.floor(promptAllowance / averageMessageTokenCount);
- const unfitMessages = maxMessagesPerSummary > 0 ? averageMessagesPerPrompt - maxMessagesPerSummary : 0;
- const adjustedAverageMessagesPerPrompt = Math.max(1, averageMessagesPerPrompt - (unfitMessages > 0 ? Math.ceil(unfitMessages / 2) : 0));
+ const targetMessagesInPrompt = maxMessagesPerSummary > 0 ? maxMessagesPerSummary : Math.max(0, averageMessagesPerPrompt);
+ const adjustedAverageMessagesPerPrompt = targetMessagesInPrompt + (averageMessagesPerPrompt - targetMessagesInPrompt) / 4;
console.table({
maxPromptLength,
@@ -149,9 +187,9 @@ async function onPromptIntervalAutoClick() {
tokensPerWord,
averageMessageTokenCount,
averageMessagesPerPrompt,
+ targetMessagesInPrompt,
adjustedAverageMessagesPerPrompt,
maxMessagesPerSummary,
- unfitMessages,
});
const ROUNDING = 5;
@@ -800,6 +838,7 @@ function setupListeners() {
$('#memory_prompt_builder_raw_non_blocking').off('click').on('input', onMemoryPromptBuilderInput);
$('#memory_prompt_restore').off('click').on('click', onMemoryPromptRestoreClick);
$('#memory_prompt_interval_auto').off('click').on('click', onPromptIntervalAutoClick);
+ $('#memory_prompt_words_auto').off('click').on('click', onPromptForceWordsAutoClick);
$('#memory_override_response_length').off('click').on('input', onOverrideResponseLengthInput);
$('#memory_max_messages_per_request').off('click').on('input', onMaxMessagesPerRequestInput);
$('#summarySettingsBlockToggle').off('click').on('click', function () {
diff --git a/public/scripts/extensions/memory/settings.html b/public/scripts/extensions/memory/settings.html
index 7bf3626e7..ed3b31ad7 100644
--- a/public/scripts/extensions/memory/settings.html
+++ b/public/scripts/extensions/memory/settings.html
@@ -17,7 +17,9 @@
Current summary:
-
+
@@ -27,7 +29,10 @@
Summarize now