Support vicuna system message (#167)
* Support vicuna system message * Change tags to USER and ASSISTANT
This commit is contained in:
@@ -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",
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user