From bd00beeac54dbcfa9ab86fd336fca1a8fa289341 Mon Sep 17 00:00:00 2001 From: centdix <40307056+centdix@users.noreply.github.com> Date: Fri, 12 Jun 2026 00:21:40 +0200 Subject: [PATCH] fix: omit temperature for claude fable 5 (#9540) --- frontend/src/lib/components/copilot/lib.test.ts | 13 +++++++++++++ frontend/src/lib/components/copilot/modelConfig.ts | 1 + 2 files changed, 14 insertions(+) diff --git a/frontend/src/lib/components/copilot/lib.test.ts b/frontend/src/lib/components/copilot/lib.test.ts index 541bc60b3d..15b09151b6 100644 --- a/frontend/src/lib/components/copilot/lib.test.ts +++ b/frontend/src/lib/components/copilot/lib.test.ts @@ -21,6 +21,13 @@ type AssistantMessageWithReasoning = ChatCompletionMessageParam & { } describe('modelConfig', () => { + it('flags Fable 5 model IDs via includes matching', () => { + expect(modelDisallowsSamplingParams('claude-fable-5')).toBe(true) + expect(modelDisallowsSamplingParams('claude-fable-5@20260611')).toBe(true) + expect(modelDisallowsSamplingParams('claude-fable-5/thinking')).toBe(true) + expect(modelDisallowsSamplingParams('anthropic/claude-fable-5')).toBe(true) + }) + it('flags Opus 4.7 model IDs via includes matching', () => { expect(modelDisallowsSamplingParams('claude-opus-4-7')).toBe(true) expect(modelDisallowsSamplingParams('claude-opus-4-7@20260416')).toBe(true) @@ -41,6 +48,12 @@ describe('modelConfig', () => { ).toBeUndefined() }) + it('omits deterministic temperature for Anthropic Fable 5 chat requests', () => { + expect( + getDefaultChatTemperature({ provider: 'anthropic', model: 'claude-fable-5' }) + ).toBeUndefined() + }) + it('omits deterministic temperature for non-anthropic providers carrying Opus 4.7 models', () => { expect( getDefaultChatTemperature({ provider: 'openrouter', model: 'anthropic/claude-opus-4-7' }) diff --git a/frontend/src/lib/components/copilot/modelConfig.ts b/frontend/src/lib/components/copilot/modelConfig.ts index e80b7ce7a5..7b228c6ba9 100644 --- a/frontend/src/lib/components/copilot/modelConfig.ts +++ b/frontend/src/lib/components/copilot/modelConfig.ts @@ -11,6 +11,7 @@ export function modelDisallowsSamplingParams(model: string) { // The o-series match requires a digit after the "o" (o1/o3/o4-mini) so it // does not catch unrelated ids like Mistral's "open-mistral-*" or "optimus-*". return ( + normalizedModel.includes('claude-fable-5') || normalizedModel.includes('claude-opus-4-7') || normalizedModel.includes('claude-opus-4-8') || baseModel.startsWith('gpt-5') ||