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, // templateSystemUserAssistantPrompt,
templateInstructionInputResponsePrompt, templateInstructionInputResponsePrompt,
templateAiroborosPrompt, templateAiroborosPrompt,
templateHumanAssistantPrompt, templateVicunaPrompt,
} from "./templatePrompt"; } from "./templatePrompt";
const frontendModelProvider: FrontendModelProvider<SupportedModel, OpenpipeChatOutput> = { const frontendModelProvider: FrontendModelProvider<SupportedModel, OpenpipeChatOutput> = {
@@ -67,7 +67,7 @@ const frontendModelProvider: FrontendModelProvider<SupportedModel, OpenpipeChatO
speed: "medium", speed: "medium",
provider: "openpipe/Chat", provider: "openpipe/Chat",
learnMoreUrl: "https://huggingface.co/lmsys/vicuna-13b-v1.5", learnMoreUrl: "https://huggingface.co/lmsys/vicuna-13b-v1.5",
templatePrompt: templateHumanAssistantPrompt, templatePrompt: templateVicunaPrompt,
}, },
"NousResearch/Nous-Hermes-llama-2-7b": { "NousResearch/Nous-Hermes-llama-2-7b": {
name: "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; return prompt;
}; };
// ### Human: your prompt here // A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions.
// ### Assistant:
export const templateHumanAssistantPrompt = (messages: OpenpipeChatInput["messages"]) => { // USER: {prompt}
// ASSISTANT:
export const templateVicunaPrompt = (messages: OpenpipeChatInput["messages"]) => {
const splitter = "\n"; const splitter = "\n";
const humanTag = "### Human: "; const humanTag = "USER: ";
const assistantTag = "### Assistant: "; const assistantTag = "ASSISTANT: ";
const formattedMessages = messages.map((message) => { let combinedSystemMessage = "";
if (message.role === "system" || message.role === "user") { const conversationMessages = [];
return humanTag + message.content;
for (const message of messages) {
if (message.role === "system") {
combinedSystemMessage += message.content;
} else if (message.role === "user") {
conversationMessages.push(humanTag + message.content);
} else { } 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 // Ensure that the prompt ends with an assistant message
const lastHumanIndex = prompt.lastIndexOf(humanTag); const lastHumanIndex = prompt.lastIndexOf(humanTag);