Support vicuna system message (#167)

* Support vicuna system message

* Change tags to USER and ASSISTANT
This commit is contained in:
arcticfly
2023-08-17 21:02:27 -07:00
committed by GitHub
parent 6a56250001
commit 980644f13c
2 changed files with 31 additions and 13 deletions

View File

@@ -7,7 +7,7 @@ import {
// templateSystemUserAssistantPrompt,
templateInstructionInputResponsePrompt,
templateAiroborosPrompt,
templateHumanAssistantPrompt,
templateVicunaPrompt,
} from "./templatePrompt";
const frontendModelProvider: FrontendModelProvider<SupportedModel, OpenpipeChatOutput> = {
@@ -67,7 +67,7 @@ const frontendModelProvider: FrontendModelProvider<SupportedModel, OpenpipeChatO
speed: "medium",
provider: "openpipe/Chat",
learnMoreUrl: "https://huggingface.co/lmsys/vicuna-13b-v1.5",
templatePrompt: templateHumanAssistantPrompt,
templatePrompt: templateVicunaPrompt,
},
"NousResearch/Nous-Hermes-llama-2-7b": {
name: "Nous-Hermes-llama-2-7b",

View File

@@ -178,23 +178,41 @@ export const templateAiroborosPrompt = (messages: OpenpipeChatInput["messages"])
return prompt;
};
// ### Human: your prompt here
// ### Assistant:
export const templateHumanAssistantPrompt = (messages: OpenpipeChatInput["messages"]) => {
// A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions.
// USER: {prompt}
// ASSISTANT:
export const templateVicunaPrompt = (messages: OpenpipeChatInput["messages"]) => {
const splitter = "\n";
const humanTag = "### Human: ";
const assistantTag = "### Assistant: ";
const humanTag = "USER: ";
const assistantTag = "ASSISTANT: ";
const formattedMessages = messages.map((message) => {
if (message.role === "system" || message.role === "user") {
return humanTag + message.content;
let combinedSystemMessage = "";
const conversationMessages = [];
for (const message of messages) {
if (message.role === "system") {
combinedSystemMessage += message.content;
} else if (message.role === "user") {
conversationMessages.push(humanTag + message.content);
} else {
return assistantTag + message.content;
conversationMessages.push(assistantTag + message.content);
}
}
});
let prompt = formattedMessages.join(splitter);
let systemMessage = "";
if (combinedSystemMessage) {
// If there is no user message, add a user tag to the system message
if (conversationMessages.find((message) => message.startsWith(humanTag))) {
systemMessage = `${combinedSystemMessage}\n\n`;
} else {
conversationMessages.unshift(humanTag + combinedSystemMessage);
}
}
let prompt = `${systemMessage}${conversationMessages.join(splitter)}`;
// Ensure that the prompt ends with an assistant message
const lastHumanIndex = prompt.lastIndexOf(humanTag);