Add new Claude model options and update regex checks for model validation

3efcfbd1a285ffbe52f92969dd09897827dda6f5

Cohee <18619528+Cohee1207@users.noreply.github.com>

3 files changed, +8 -4Showing whitespace changes
public/index.html+2 -0
@@ -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>
public/scripts/extensions/caption/settings.html+2 -0
@@ -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>
src/endpoints/backends/chat-completions.js+4 -4
@@ -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 sequences168 // 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'] = {