mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
System prompt for Claude 2
This commit is contained in:
@@ -3043,7 +3043,8 @@ async function sendClaudeRequest(request, response) {
|
|||||||
controller.abort();
|
controller.abort();
|
||||||
});
|
});
|
||||||
|
|
||||||
let requestPrompt = convertClaudePrompt(request.body.messages, true, !request.body.exclude_assistant);
|
let doSystemPrompt = request.body.model === 'claude-2' || request.body.model === 'claude-2.1';
|
||||||
|
let requestPrompt = convertClaudePrompt(request.body.messages, true, !request.body.exclude_assistant, doSystemPrompt);
|
||||||
|
|
||||||
if (request.body.assistant_prefill && !request.body.exclude_assistant) {
|
if (request.body.assistant_prefill && !request.body.exclude_assistant) {
|
||||||
requestPrompt += request.body.assistant_prefill;
|
requestPrompt += request.body.assistant_prefill;
|
||||||
|
@@ -3,10 +3,11 @@
|
|||||||
* @param {object[]} messages Array of messages
|
* @param {object[]} messages Array of messages
|
||||||
* @param {boolean} addHumanPrefix Add Human prefix
|
* @param {boolean} addHumanPrefix Add Human prefix
|
||||||
* @param {boolean} addAssistantPostfix Add Assistant postfix
|
* @param {boolean} addAssistantPostfix Add Assistant postfix
|
||||||
|
* @param {boolean} withSystemPrompt Build system prompt before "\n\nHuman: "
|
||||||
* @returns {string} Prompt for Claude
|
* @returns {string} Prompt for Claude
|
||||||
* @copyright Prompt Conversion script taken from RisuAI by kwaroran (GPLv3).
|
* @copyright Prompt Conversion script taken from RisuAI by kwaroran (GPLv3).
|
||||||
*/
|
*/
|
||||||
function convertClaudePrompt(messages, addHumanPrefix, addAssistantPostfix) {
|
function convertClaudePrompt(messages, addHumanPrefix, addAssistantPostfix, withSystemPrompt) {
|
||||||
// Claude doesn't support message names, so we'll just add them to the message content.
|
// Claude doesn't support message names, so we'll just add them to the message content.
|
||||||
for (const message of messages) {
|
for (const message of messages) {
|
||||||
if (message.name && message.role !== "system") {
|
if (message.name && message.role !== "system") {
|
||||||
@@ -15,6 +16,18 @@ function convertClaudePrompt(messages, addHumanPrefix, addAssistantPostfix) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let systemPrompt = '';
|
||||||
|
if (withSystemPrompt) {
|
||||||
|
for (const message of messages) {
|
||||||
|
if (message.role === "system" && !message.name) {
|
||||||
|
systemPrompt += message.content + '\n\n';
|
||||||
|
messages.splice(messages.indexOf(message), 1);
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let requestPrompt = messages.map((v) => {
|
let requestPrompt = messages.map((v) => {
|
||||||
let prefix = '';
|
let prefix = '';
|
||||||
switch (v.role) {
|
switch (v.role) {
|
||||||
@@ -46,6 +59,10 @@ function convertClaudePrompt(messages, addHumanPrefix, addAssistantPostfix) {
|
|||||||
requestPrompt = requestPrompt + '\n\nAssistant: ';
|
requestPrompt = requestPrompt + '\n\nAssistant: ';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (withSystemPrompt) {
|
||||||
|
requestPrompt = systemPrompt + requestPrompt;
|
||||||
|
}
|
||||||
|
|
||||||
return requestPrompt;
|
return requestPrompt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user