Claude: remove tools from prompt if tools not supported or not provided

This commit is contained in:
Cohee
2024-10-06 23:02:38 +03:00
parent 89bad21881
commit 991e10c75f
2 changed files with 25 additions and 3 deletions

View File

@ -91,11 +91,12 @@ function convertClaudePrompt(messages, addAssistantPostfix, addAssistantPrefill,
* @param {object[]} messages Array of messages
* @param {string} prefillString User determined prefill string
* @param {boolean} useSysPrompt See if we want to use a system prompt
* @param {boolean} useTools See if we want to use tools
* @param {string} humanMsgFix Add Human message between system prompt and assistant.
* @param {string} charName Character name
* @param {string} userName User name
*/
function convertClaudeMessages(messages, prefillString, useSysPrompt, humanMsgFix, charName = '', userName = '') {
function convertClaudeMessages(messages, prefillString, useSysPrompt, useTools, humanMsgFix, charName = '', userName = '') {
let systemPrompt = [];
if (useSysPrompt) {
// Collect all the system messages up until the first instance of a non-system message, and then remove them from the messages array.
@ -248,6 +249,26 @@ function convertClaudeMessages(messages, prefillString, useSysPrompt, humanMsgFi
}
});
if (!useTools) {
mergedMessages.forEach((message) => {
message.content.forEach((content) => {
if (content.type === 'tool_use') {
content.type = 'text';
content.text = JSON.stringify(content.input);
delete content.id;
delete content.name;
delete content.input;
}
if (content.type === 'tool_result') {
content.type = 'text';
content.text = content.content;
delete content.tool_use_id;
delete content.content;
}
});
});
}
return { messages: mergedMessages, systemPrompt: systemPrompt };
}