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 @@
30333033 <h4 data-i18n="Claude Model">Claude Model</h4>
30343034 <select id="model_claude_select">
30353035 <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>
30363038 <option value="claude-sonnet-4-5">claude-sonnet-4-5</option>
30373039 <option value="claude-sonnet-4-5-20250929">claude-sonnet-4-5-20250929</option>
30383040 <option value="claude-haiku-4-5">claude-haiku-4-5</option>
public/scripts/extensions/caption/settings.html+2 -0
@@ -85,6 +85,8 @@
8585 <option data-type="openai" value="o4-mini-2025-04-16">o4-mini-2025-04-16</option>
8686 <option data-type="openai" value="gpt-4.5-preview">gpt-4.5-preview</option>
8787 <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>
8890 <option data-type="anthropic" value="claude-sonnet-4-5">claude-sonnet-4-5</option>
8991 <option data-type="anthropic" value="claude-sonnet-4-5-20250929">claude-sonnet-4-5-20250929</option>
9092 <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) {
160160 const useTools = Array.isArray(request.body.tools) && request.body.tools.length > 0;
161161 const useSystemPrompt = Boolean(request.body.claude_use_sysprompt);
162162 const convertedPrompt = convertClaudeMessages(request.body.messages, request.body.assistant_prefill, useSystemPrompt, useTools, getPromptNames(request));
163163 const useThinking = /^claude-(3-7|opus-4|sonnet-4|haiku-4-5|opus-4-5)/.test(request.body.model);
164164 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);
165165 const isLimitedSampling = /^claude-(opus-4-1|sonnet-4-5|haiku-4-5|opus-4-5)/.test(request.body.model);
166166 const cacheTTL = getConfigValue('claude.extendedTTL', false, 'boolean') ? '1h' : '5m';
167167 let fixThinkingPrefill = false;
168168 // Add custom stop sequences
@@ -1943,7 +1943,7 @@ router.post('/generate', function (request, response) {
19431943 bodyParams['repetition_penalty'] = request.body.repetition_penalty;
19441944 }
19451945 const enableSystemPromptCache = getConfigValue('claude.enableSystemPromptCache', false, 'boolean');
19461946 const isClaude3or4 = /claude-(3|opus-4|sonnet-4|haiku-4)/.test(request.body.model);
19471947 const cacheTTL = getConfigValue('claude.extendedTTL', false, 'boolean') ? '1h' : '5m';
19481948 if (enableSystemPromptCache && isClaude3or4) {
19491949 bodyParams['cache_control'] = {