Выпиливаем хуманов и ассистентов для Клода в таверне.

Не забудь сделать бекап!

TermAss

Лезем в public\scripts\openai.js чтобы найти и поменять

1
2
3
4
// for groups or sendas command - prepend a character's name
        if (selected_group || (chat[j].force_avatar && chat[j].name !== name1 && chat[j].extra?.type !== system_message_types.NARRATOR)) {
            content = `${chat[j].name}: ${content}`;
        }

на

// for groups or sendas command - prepend a character's name
        content = `${chat[j].name}: ${content}`;

Теперь у вас всегда добавляются имена персов и чат выглядит не как:

Human: Ah ah mistress
Assistant: На колени, червь

А как:

Human: {{user}}: Ah ah mistress
Assistant: {{char}}: На колени, червь

Обращаю внимание на то, что теперь у тебя и при игре через ГПТ отправляются имена персонажей.

После этого лезем в server.js в корне таверны и меняем функцию:

// Prompt Conversion script taken from RisuAI by @kwaroran (GPLv3).
function convertClaudePrompt(messages, addHumanPrefix, addAssistantPostfix) {
    // Claude doesn't support message names, so we'll just add them to the message content.
    for (const message of messages) {
        if (message.name && message.role !== "system") {
            message.content = message.name + ": " + message.content;
            delete message.name;
        }
    }

    let requestPrompt = messages.map((v) => {
        let prefix = '';
        switch (v.role) {
            case "assistant":
                prefix = "\n\nAssistant: ";
                break
            case "user":
                prefix = "\n\nHuman: ";
                break
            case "system":
                // According to the Claude docs, H: and A: should be used for example conversations.
                if (v.name === "example_assistant") {
                    prefix = "\n\nA: ";
                } else if (v.name === "example_user") {
                    prefix = "\n\nH: ";
                } else {
                    prefix = "\n\n";
                }
                break
        }
        return prefix + v.content;
    }).join('');

    if (addHumanPrefix) {
        requestPrompt = "\n\nHuman: " + requestPrompt;
    }

    if (addAssistantPostfix) {
        requestPrompt = requestPrompt + '\n\nAssistant: ';
    }

    return requestPrompt;
}

На

// Prompt Conversion script taken from RisuAI by @kwaroran (GPLv3).
function convertClaudePrompt(messages, addHumanPrefix, addAssistantPostfix) {
    let requestPrompt = messages.map((v) => {
        return v.content+"\n\n";
    }).join('');

    if (addHumanPrefix) {
        requestPrompt = "\n\nHuman: " + requestPrompt;
    }

    if (addAssistantPostfix) {
        requestPrompt = requestPrompt + '\n\nAssistant: ';
    }

    return requestPrompt;
}

Готово, теперь лезешь в историю и видишь что у тебя история чата выглядит примерно так:

Image description

Не забудьте, что нужны новые промпты, потому что теперь Клод не считает, что он с нами рпшит. Теперь для Клода абсолютно вся история РП это РП кого-то по имени {{user}} и {{char}}.

Edit
Pub: 22 Jul 2023 10:20 UTC
Edit: 22 Jul 2023 10:31 UTC
Views: 1866