Symptom
Every call to claude-fable-5 (and presumably other fable-family models) fails with:
[PROVIDER] Anthropic API error: {"type": "error", "error": {"type": "invalid_request_error", "message": "`temperature` is deprecated for this model."}}
Provider call failed: {"type": "error", "error": {"type": "invalid_request_error", "message": "`temperature` is deprecated for this model."}, "request_id": "req_011CbvNzoQFWckf67ha3W4WE"}
Root Cause
In amplifier_module_provider_anthropic/__init__.py (commit 7fe8cd6):
-
Family detection is incomplete. The _detect_family() method at line 866 only recognizes opus, sonnet, and haiku. Unknown model families default to sonnet — line 872: return "sonnet".
-
Fable falls through to sonnet capabilities. Since claude-fable-* doesn't match any recognized family, it gets treated as sonnet, which has supports_sampling=True.
-
Sonnet's sampling setting sends temperature to fable. The provider includes temperature=0.7 (the default) in parameters sent to the API for any model with supports_sampling=True.
-
Fable hard-rejects temperature. Unlike Opus 4.7+ (which silently ignored the parameter), fable models throw invalid_request_error: 'temperature' is deprecated for this model."
Result: Every inference call on fable models fails immediately.
Suggested Fix
Recognize the fable model family with supports_sampling=False. The tested patch is:
diff --git a/amplifier_module_provider_anthropic/__init__.py b/amplifier_module_provider_anthropic/__init__.py
index 4ae41a9..b103e10 100644
--- a/amplifier_module_provider_anthropic/__init__.py
+++ b/amplifier_module_provider_anthropic/__init__.py
@@ -866,7 +866,7 @@ class AnthropicProvider:
def _detect_family(model_id: str) -> str:
"""Detect the Claude model family from a model ID string."""
model_lower = model_id.lower()
- for family in ("opus", "sonnet", "haiku"):
+ for family in ("opus", "sonnet", "haiku", "fable"):
if family in model_lower:
return family
return "sonnet" # Default to sonnet for unknown models
@@ -948,6 +948,28 @@ class AnthropicProvider:
),
)
+ if family == "fable":
+ # Fable models hard-reject `temperature` with
+ # "`temperature` is deprecated for this model" (invalid_request_error),
+ # unlike Opus 4.7+ which silently ignored it. Mirror the previous
+ # default (latest-sonnet) capabilities but disable sampling so the
+ # parameter is never sent.
+ return ModelCapabilities(
+ family="fable",
+ supports_1m=True,
+ supports_thinking=True,
+ supports_adaptive_thinking=True,
+ supports_sampling=False,
+ default_thinking_budget=32000,
+ capability_tags=(
+ "tools",
+ "thinking",
+ "streaming",
+ "json_mode",
+ "vision",
+ ),
+ )
+
if family == "sonnet":
is_46_plus = not version_known or (major, minor) >= (4, 6)
is_45_plus = is_46_plus or (major, minor) >= (4, 5)
Testing
Module test suite passes with this patch:
- 463 tests pass
- 4 pre-existing failures (unrelated to this change; confirmed they fail on unpatched HEAD as well — cost serialization and streaming tool-repair issues, not sampling)
- End-to-end verified: Fresh
amplifier run session on claude-fable-5 completes cleanly with no temperature errors.
Deployment Status
Currently running this patch locally via a sources: override in ~/.amplifier/settings.yaml:
sources:
provider-anthropic: file:///Users/joi/repos/amplifier-module-provider-anthropic
Machines are patched via a branch at /Users/joi/repos/amplifier-module-provider-anthropic on branch fable-supports-sampling (commit 11399e7). We're happy to open a PR if maintainers grant a contribution path, or maintainers can apply this patch directly if preferred. The fix is minimal, defensive (only affects fable models), and has full test coverage.
Related issue: jilog#sbwz
Symptom
Every call to
claude-fable-5(and presumably other fable-family models) fails with:Root Cause
In
amplifier_module_provider_anthropic/__init__.py(commit 7fe8cd6):Family detection is incomplete. The
_detect_family()method at line 866 only recognizesopus,sonnet, andhaiku. Unknown model families default tosonnet— line 872:return "sonnet".Fable falls through to sonnet capabilities. Since
claude-fable-*doesn't match any recognized family, it gets treated as sonnet, which hassupports_sampling=True.Sonnet's sampling setting sends temperature to fable. The provider includes
temperature=0.7(the default) in parameters sent to the API for any model withsupports_sampling=True.Fable hard-rejects temperature. Unlike Opus 4.7+ (which silently ignored the parameter), fable models throw
invalid_request_error: 'temperature' is deprecated for this model."Result: Every inference call on fable models fails immediately.
Suggested Fix
Recognize the fable model family with
supports_sampling=False. The tested patch is:Testing
Module test suite passes with this patch:
amplifier runsession onclaude-fable-5completes cleanly with no temperature errors.Deployment Status
Currently running this patch locally via a
sources:override in~/.amplifier/settings.yaml:Machines are patched via a branch at
/Users/joi/repos/amplifier-module-provider-anthropicon branchfable-supports-sampling(commit 11399e7). We're happy to open a PR if maintainers grant a contribution path, or maintainers can apply this patch directly if preferred. The fix is minimal, defensive (only affects fable models), and has full test coverage.Related issue: jilog#sbwz