add option for claude-opus-4-6 (#5103) * add option for claude-opus-4-6 * fix: add claude-opus-4-6 to limited sampling and verbosity model lists * fix: disable assistant prefill for claude-opus-4-6 * refacor: merge fixthinkingPrefill and noPrefillModel * 1m context --------- Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>

39c8eb343c279b8e1293caff7c357caa3ba93b07

Lumi <github@lumify.cat>

Signed
4 files changed, +10 -7Showing whitespace changes
public/index.html+1 -0
@@ -3104,6 +3104,7 @@
31043104 <h4 data-i18n="Claude Model">Claude Model</h4>
31053105 <select id="model_claude_select">
31063106 <optgroup label="Versions">
3107+ <option value="claude-opus-4-6">claude-opus-4-6</option>
31073108 <option value="claude-opus-4-5">claude-opus-4-5</option>
31083109 <option value="claude-opus-4-5-20251101">claude-opus-4-5-20251101</option>
31093110 <option value="claude-sonnet-4-5">claude-sonnet-4-5</option>
public/scripts/extensions/caption/settings.html+1 -0
@@ -86,6 +86,7 @@
8686 <option data-type="openai" value="o4-mini-2025-04-16">o4-mini-2025-04-16</option>
8787 <option data-type="openai" value="gpt-4.5-preview">gpt-4.5-preview</option>
8888 <option data-type="openai" value="gpt-4.5-preview-2025-02-27">gpt-4.5-preview-2025-02-27</option>
89+ <option data-type="anthropic" value="claude-opus-4-6">claude-opus-4-6</option>
8990 <option data-type="anthropic" value="claude-opus-4-5">claude-opus-4-5</option>
9091 <option data-type="anthropic" value="claude-opus-4-5-20251101">claude-opus-4-5-20251101</option>
9192 <option data-type="anthropic" value="claude-sonnet-4-5">claude-sonnet-4-5</option>
public/scripts/openai.js+1 -1
@@ -5285,7 +5285,7 @@ async function onModelChange() {
52855285 if (oai_settings.max_context_unlocked) {
52865286 $('#openai_max_context').attr('max', unlocked_max);
52875287 }
52885288 else if (value.startsWith('claude-sonnet-4-5') || value.startsWith('claude-opus-4-6')) {
52895289 $('#openai_max_context').attr('max', max_1mil);
52905290 }
52915291 else if (value == 'claude-2.1' || value.startsWith('claude-3') || value.startsWith('claude-opus') || value.startsWith('claude-haiku') || value.startsWith('claude-sonnet')) {
src/endpoints/backends/chat-completions.js+7 -6
@@ -219,14 +219,15 @@ async function sendClaudeRequest(request, response) {
219219 controller.abort();
220220 });
221221 const additionalHeaders = {};
222222 const betaHeaders = ['output-128k-2025-02-19', 'context-1m-2025-08-07'];
223223 const useTools = Array.isArray(request.body.tools) && request.body.tools.length > 0;
224224 const useSystemPrompt = Boolean(request.body.use_sysprompt);
225225 const convertedPrompt = convertClaudeMessages(request.body.messages, request.body.assistant_prefill, useSystemPrompt, useTools, getPromptNames(request));
226226 const useThinking = /^claude-(3-7|opus-4|sonnet-4|haiku-4-5|opus-4-5|opus-4-6)/.test(request.body.model);
227227 const useWebSearch = /^claude-(3-5|3-7|opus-4|sonnet-4|haiku-4-5|opus-4-5|opus-4-6)/.test(request.body.model) && Boolean(request.body.enable_web_search);
228228 const isLimitedSampling = /^claude-(opus-4-1|sonnet-4-5|haiku-4-5|opus-4-5|opus-4-6)/.test(request.body.model);
229229 const useVerbosity = /^claude-(opus-4-5|opus-4-6)/.test(request.body.model);
230+ const noPrefillModel = /^claude-(opus-4-6)/.test(request.body.model);
230231 let fixThinkingPrefill = false;
231232 // Add custom stop sequences
232233 const stopSequences = [];
@@ -327,7 +328,7 @@ async function sendClaudeRequest(request, response) {
327328 delete requestBody.top_k;
328329 }
329330
330331 if ((fixThinkingPrefill || noPrefillModel) && convertedPrompt.messages.length && convertedPrompt.messages[convertedPrompt.messages.length - 1].role === 'assistant') {
331332 convertedPrompt.messages[convertedPrompt.messages.length - 1].role = 'user';
332333 }
333334