Add new Claude model options and update regex checks for model validation
| @@ -3033,6 +3033,8 @@ | |||
| 3033 | <h4 data-i18n="Claude Model">Claude Model</h4> | 3033 | <h4 data-i18n="Claude Model">Claude Model</h4> |
| 3034 | <select id="model_claude_select"> | 3034 | <select id="model_claude_select"> |
| 3035 | <optgroup label="Versions"> | 3035 | <optgroup label="Versions"> |
| 3036 | <option value="claude-opus-4-5">claude-opus-4-5</option> | ||
| 3037 | <option value="claude-opus-4-5-20251101">claude-opus-4-5-20251101</option> | ||
| 3036 | <option value="claude-sonnet-4-5">claude-sonnet-4-5</option> | 3038 | <option value="claude-sonnet-4-5">claude-sonnet-4-5</option> |
| 3037 | <option value="claude-sonnet-4-5-20250929">claude-sonnet-4-5-20250929</option> | 3039 | <option value="claude-sonnet-4-5-20250929">claude-sonnet-4-5-20250929</option> |
| 3038 | <option value="claude-haiku-4-5">claude-haiku-4-5</option> | 3040 | <option value="claude-haiku-4-5">claude-haiku-4-5</option> |
| @@ -85,6 +85,8 @@ | |||
| 85 | <option data-type="openai" value="o4-mini-2025-04-16">o4-mini-2025-04-16</option> | 85 | <option data-type="openai" value="o4-mini-2025-04-16">o4-mini-2025-04-16</option> |
| 86 | <option data-type="openai" value="gpt-4.5-preview">gpt-4.5-preview</option> | 86 | <option data-type="openai" value="gpt-4.5-preview">gpt-4.5-preview</option> |
| 87 | <option data-type="openai" value="gpt-4.5-preview-2025-02-27">gpt-4.5-preview-2025-02-27</option> | 87 | <option data-type="openai" value="gpt-4.5-preview-2025-02-27">gpt-4.5-preview-2025-02-27</option> |
| 88 | <option data-type="anthropic" value="claude-opus-4-5">claude-opus-4-5</option> | ||
| 89 | <option data-type="anthropic" value="claude-opus-4-5-20251101">claude-opus-4-5-20251101</option> | ||
| 88 | <option data-type="anthropic" value="claude-sonnet-4-5">claude-sonnet-4-5</option> | 90 | <option data-type="anthropic" value="claude-sonnet-4-5">claude-sonnet-4-5</option> |
| 89 | <option data-type="anthropic" value="claude-sonnet-4-5-20250929">claude-sonnet-4-5-20250929</option> | 91 | <option data-type="anthropic" value="claude-sonnet-4-5-20250929">claude-sonnet-4-5-20250929</option> |
| 90 | <option data-type="anthropic" value="claude-haiku-4-5">claude-haiku-4-5</option> | 92 | <option data-type="anthropic" value="claude-haiku-4-5">claude-haiku-4-5</option> |
| @@ -160,9 +160,9 @@ async function sendClaudeRequest(request, response) { | |||
| 160 | const useTools = Array.isArray(request.body.tools) && request.body.tools.length > 0; | 160 | const useTools = Array.isArray(request.body.tools) && request.body.tools.length > 0; |
| 161 | const useSystemPrompt = Boolean(request.body.claude_use_sysprompt); | 161 | const useSystemPrompt = Boolean(request.body.claude_use_sysprompt); |
| 162 | const convertedPrompt = convertClaudeMessages(request.body.messages, request.body.assistant_prefill, useSystemPrompt, useTools, getPromptNames(request)); | 162 | const convertedPrompt = convertClaudeMessages(request.body.messages, request.body.assistant_prefill, useSystemPrompt, useTools, getPromptNames(request)); |
| 163 | const useThinking = /^claude-(3-7|opus-4|sonnet-4|haiku-4-5)/.test(request.body.model); | 163 | const useThinking = /^claude-(3-7|opus-4|sonnet-4|haiku-4-5|opus-4-5)/.test(request.body.model); |
| 164 | const useWebSearch = /^claude-(3-5|3-7|opus-4|sonnet-4|haiku-4-5)/.test(request.body.model) && Boolean(request.body.enable_web_search); | 164 | const useWebSearch = /^claude-(3-5|3-7|opus-4|sonnet-4|haiku-4-5|opus-4-5)/.test(request.body.model) && Boolean(request.body.enable_web_search); |
| 165 | const isLimitedSampling = /^claude-(opus-4-1|sonnet-4-5|haiku-4-5)/.test(request.body.model); | 165 | const isLimitedSampling = /^claude-(opus-4-1|sonnet-4-5|haiku-4-5|opus-4-5)/.test(request.body.model); |
| 166 | const cacheTTL = getConfigValue('claude.extendedTTL', false, 'boolean') ? '1h' : '5m'; | 166 | const cacheTTL = getConfigValue('claude.extendedTTL', false, 'boolean') ? '1h' : '5m'; |
| 167 | let fixThinkingPrefill = false; | 167 | let fixThinkingPrefill = false; |
| 168 | // Add custom stop sequences | 168 | // Add custom stop sequences |
| @@ -1943,7 +1943,7 @@ router.post('/generate', function (request, response) { | |||
| 1943 | bodyParams['repetition_penalty'] = request.body.repetition_penalty; | 1943 | bodyParams['repetition_penalty'] = request.body.repetition_penalty; |
| 1944 | } | 1944 | } |
| 1945 | const enableSystemPromptCache = getConfigValue('claude.enableSystemPromptCache', false, 'boolean'); | 1945 | const enableSystemPromptCache = getConfigValue('claude.enableSystemPromptCache', false, 'boolean'); |
| 1946 | const isClaude3or4 = /claude-(3|opus-4|sonnet-4)/.test(request.body.model); | 1946 | const isClaude3or4 = /claude-(3|opus-4|sonnet-4|haiku-4)/.test(request.body.model); |
| 1947 | const cacheTTL = getConfigValue('claude.extendedTTL', false, 'boolean') ? '1h' : '5m'; | 1947 | const cacheTTL = getConfigValue('claude.extendedTTL', false, 'boolean') ? '1h' : '5m'; |
| 1948 | if (enableSystemPromptCache && isClaude3or4) { | 1948 | if (enableSystemPromptCache && isClaude3or4) { |
| 1949 | bodyParams['cache_control'] = { | 1949 | bodyParams['cache_control'] = { |