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

@ -101,8 +101,9 @@ async function sendClaudeRequest(request, response) {
controller.abort();
});
const additionalHeaders = {};
const useTools = request.body.model.startsWith('claude-3') && Array.isArray(request.body.tools) && request.body.tools.length > 0;
const useSystemPrompt = (request.body.model.startsWith('claude-2') || request.body.model.startsWith('claude-3')) && request.body.claude_use_sysprompt;
const convertedPrompt = convertClaudeMessages(request.body.messages, request.body.assistant_prefill, useSystemPrompt, request.body.human_sysprompt_message, request.body.char_name, request.body.user_name);
const convertedPrompt = convertClaudeMessages(request.body.messages, request.body.assistant_prefill, useSystemPrompt, useTools, request.body.human_sysprompt_message, request.body.char_name, request.body.user_name);
// Add custom stop sequences
const stopSequences = [];
if (Array.isArray(request.body.stop)) {
@ -129,7 +130,7 @@ async function sendClaudeRequest(request, response) {
} else {
delete requestBody.system;
}
if (Array.isArray(request.body.tools) && request.body.tools.length > 0) {
if (useTools) {
// Claude doesn't do prefills on function calls, and doesn't allow empty messages
if (convertedPrompt.messages.length && convertedPrompt.messages[convertedPrompt.messages.length - 1].role === 'assistant') {
convertedPrompt.messages.push({ role: 'user', content: '.' });