Pass chat message name to chatcompletion endpoint

This commit is contained in:
maver 2023-06-25 18:44:07 +02:00
parent aaa2c48e7d
commit 5c18abadac
2 changed files with 11 additions and 4 deletions

View File

@ -546,6 +546,8 @@ PromptManagerModule.prototype.preparePrompt = function (prompt, original = null)
else preparedPrompt.content = substituteParams(prompt.content);
}
if (prompt.name) preparedPrompt.name = prompt.name;
return preparedPrompt;
}

View File

@ -250,7 +250,8 @@ function setOpenAIMessages(chat) {
// Apply the "wrap in quotes" option
if (role == 'user' && oai_settings.wrap_in_quotes) content = `"${content}"`;
openai_msgs[i] = { "role": role, "content": content };
const name = chat[j]['name'];
openai_msgs[i] = { "role": role, "content": content, name: name};
j++;
}
@ -393,7 +394,7 @@ function populateChatHistory(prompts, chatCompletion) {
// Insert chat messages as long as there is budget available
[...openai_msgs].reverse().every((prompt, index) => {
const chatMessage = new Message(prompt.role, prompt.content, 'chatHistory-' + index);
const chatMessage = new Message(prompt.role, prompt.content, 'chatHistory-' + index, prompt.name);
if (chatCompletion.canAfford(chatMessage)) chatCompletion.insertAtStart(chatMessage, 'chatHistory');
else return false;
return true;
@ -615,6 +616,8 @@ function prepareOpenAIMessages({
}
} finally {
promptManager.populateTokenHandler(chatCompletion.getMessages());
// All information are up-to-date, render without dry-run.
promptManager.render(false);
}
@ -1186,10 +1189,11 @@ class TokenBudgetExceededError extends Error {
class Message {
tokens; identifier; role; content;
constructor(role, content, identifier) {
constructor(role, content, identifier, name = '') {
this.identifier = identifier;
this.role = role;
this.content = content;
this.name = name;
if (this.content) {
this.tokens = tokenHandler.count({role: this.role, content: this.content})
@ -1315,7 +1319,8 @@ class ChatCompletion {
for (let item of this.messages.collection) {
if (item instanceof MessageCollection) {
const messages = item.collection.reduce((acc, message) => {
if (message.content) acc.push({role: message.role, content: message.content});
const name = message.name;
if (message.content) acc.push({role: message.role, ...(name && { name }), content: message.content});
return acc;
}, []);
chat.push(...messages);