Merge pull request #3548 from SillyTavern/sonnet-3.7 Sonnet 3.7
Signed| @@ -2915,6 +2915,8 @@ | |||
| 2915 | <h4 data-i18n="Claude Model">Claude Model</h4> | 2915 | <h4 data-i18n="Claude Model">Claude Model</h4> |
| 2916 | <select id="model_claude_select"> | 2916 | <select id="model_claude_select"> |
| 2917 | <optgroup label="Versions"> | 2917 | <optgroup label="Versions"> |
| 2918 | <option value="claude-3-7-sonnet-latest">claude-3-7-sonnet-latest</option> | ||
| 2919 | <option value="claude-3-7-sonnet-20250219">claude-3-7-sonnet-20250219</option> | ||
| 2918 | <option value="claude-3-5-sonnet-latest">claude-3-5-sonnet-latest</option> | 2920 | <option value="claude-3-5-sonnet-latest">claude-3-5-sonnet-latest</option> |
| 2919 | <option value="claude-3-5-sonnet-20241022">claude-3-5-sonnet-20241022</option> | 2921 | <option value="claude-3-5-sonnet-20241022">claude-3-5-sonnet-20241022</option> |
| 2920 | <option value="claude-3-5-sonnet-20240620">claude-3-5-sonnet-20240620</option> | 2922 | <option value="claude-3-5-sonnet-20240620">claude-3-5-sonnet-20240620</option> |
| @@ -45,6 +45,10 @@ | |||
| 45 | <option data-type="openai" value="gpt-4o">gpt-4o</option> | 45 | <option data-type="openai" value="gpt-4o">gpt-4o</option> |
| 46 | <option data-type="openai" value="gpt-4o-mini">gpt-4o-mini</option> | 46 | <option data-type="openai" value="gpt-4o-mini">gpt-4o-mini</option> |
| 47 | <option data-type="openai" value="chatgpt-4o-latest">chatgpt-4o-latest</option> | 47 | <option data-type="openai" value="chatgpt-4o-latest">chatgpt-4o-latest</option> |
| 48 | <option data-type="openai" value="o1">o1</option> | ||
| 49 | <option data-type="openai" value="o1-2024-12-17">o1-2024-12-17</option> | ||
| 50 | <option data-type="anthropic" value="claude-3-7-sonnet-latest">claude-3-7-sonnet-latest</option> | ||
| 51 | <option data-type="anthropic" value="claude-3-7-sonnet-20250219">claude-3-7-sonnet-20250219</option> | ||
| 48 | <option data-type="anthropic" value="claude-3-5-sonnet-latest">claude-3-5-sonnet-latest</option> | 52 | <option data-type="anthropic" value="claude-3-5-sonnet-latest">claude-3-5-sonnet-latest</option> |
| 49 | <option data-type="anthropic" value="claude-3-5-sonnet-20241022">claude-3-5-sonnet-20241022</option> | 53 | <option data-type="anthropic" value="claude-3-5-sonnet-20241022">claude-3-5-sonnet-20241022</option> |
| 50 | <option data-type="anthropic" value="claude-3-5-sonnet-20240620">claude-3-5-sonnet-20240620</option> | 54 | <option data-type="anthropic" value="claude-3-5-sonnet-20240620">claude-3-5-sonnet-20240620</option> |
| @@ -4981,6 +4981,7 @@ export function isImageInliningSupported() { | |||
| 4981 | 'gemini-1.5-pro-exp-0827', | 4981 | 'gemini-1.5-pro-exp-0827', |
| 4982 | 'claude-3', | 4982 | 'claude-3', |
| 4983 | 'claude-3-5', | 4983 | 'claude-3-5', |
| 4984 | 'claude-3-7', | ||
| 4984 | 'gpt-4-turbo', | 4985 | 'gpt-4-turbo', |
| 4985 | 'gpt-4o', | 4986 | 'gpt-4o', |
| 4986 | 'gpt-4o-mini', | 4987 | 'gpt-4o-mini', |
| @@ -125,6 +125,7 @@ async function sendClaudeRequest(request, response) { | |||
| 125 | controller.abort(); | 125 | controller.abort(); |
| 126 | }); | 126 | }); |
| 127 | const additionalHeaders = {}; | 127 | const additionalHeaders = {}; |
| 128 | const betaHeaders = ['output-128k-2025-02-19']; | ||
| 128 | const useTools = request.body.model.startsWith('claude-3') && Array.isArray(request.body.tools) && request.body.tools.length > 0; | 129 | const useTools = request.body.model.startsWith('claude-3') && Array.isArray(request.body.tools) && request.body.tools.length > 0; |
| 129 | const useSystemPrompt = (request.body.model.startsWith('claude-2') || request.body.model.startsWith('claude-3')) && request.body.claude_use_sysprompt; | 130 | const useSystemPrompt = (request.body.model.startsWith('claude-2') || request.body.model.startsWith('claude-3')) && request.body.claude_use_sysprompt; |
| 130 | const convertedPrompt = convertClaudeMessages(request.body.messages, request.body.assistant_prefill, useSystemPrompt, useTools, getPromptNames(request)); | 131 | const convertedPrompt = convertClaudeMessages(request.body.messages, request.body.assistant_prefill, useSystemPrompt, useTools, getPromptNames(request)); |
| @@ -155,7 +156,7 @@ async function sendClaudeRequest(request, response) { | |||
| 155 | delete requestBody.system; | 156 | delete requestBody.system; |
| 156 | } | 157 | } |
| 157 | if (useTools) { | 158 | if (useTools) { |
| 158 | additionalHeaders['anthropic-beta'] = 'tools-2024-05-16'; | 159 | betaHeaders.push('tools-2024-05-16'); |
| 159 | requestBody.tool_choice = { type: request.body.tool_choice }; | 160 | requestBody.tool_choice = { type: request.body.tool_choice }; |
| 160 | requestBody.tools = request.body.tools | 161 | requestBody.tools = request.body.tools |
| 161 | .filter(tool => tool.type === 'function') | 162 | .filter(tool => tool.type === 'function') |
| @@ -176,7 +177,11 @@ async function sendClaudeRequest(request, response) { | |||
| 176 | } | 177 | } |
| 177 | 178 | ||
| 178 | if (enableSystemPromptCache || cachingAtDepth !== -1) { | 179 | if (enableSystemPromptCache || cachingAtDepth !== -1) { |
| 179 | additionalHeaders['anthropic-beta'] = 'prompt-caching-2024-07-31'; | 180 | betaHeaders.push('prompt-caching-2024-07-31'); |
| 181 | } | ||
| 182 | |||
| 183 | if (betaHeaders.length) { | ||
| 184 | additionalHeaders['anthropic-beta'] = betaHeaders.join(','); | ||
| 180 | } | 185 | } |
| 181 | 186 | ||
| 182 | console.debug('Claude request:', requestBody); | 187 | console.debug('Claude request:', requestBody); |