diff --git a/backend/apps/agents/agent_manager.py b/backend/apps/agents/agent_manager.py index 16551a02..6db1abcb 100644 --- a/backend/apps/agents/agent_manager.py +++ b/backend/apps/agents/agent_manager.py @@ -1759,7 +1759,10 @@ class AgentManager: level = "off" if api_type == "anthropic": if level == "off": - options_kwargs["thinking"] = {"type": "disabled"} + # Fable 5 400s on an explicit thinking:disabled; you turn it + # off there by omitting the param (off is Fable's default). + if not (isinstance(resolved_model, str) and "fable" in resolved_model): + options_kwargs["thinking"] = {"type": "disabled"} elif level in ("low", "medium", "high"): options_kwargs["effort"] = level except Exception as e: diff --git a/backend/apps/agents/providers/thinking.py b/backend/apps/agents/providers/thinking.py index f7a4b09f..48f24b25 100644 --- a/backend/apps/agents/providers/thinking.py +++ b/backend/apps/agents/providers/thinking.py @@ -20,6 +20,10 @@ def thinking_params_for(api: str, level: str, model_id: str = "") -> dict | None if level == "off": if api == "anthropic": + # Fable 5 400s on an explicit thinking:disabled; omit the param to + # turn thinking off (off is its default). Other Claude models accept it. + if "fable" in model_id: + return None return {"thinking": {"type": "disabled"}} if api == "codex": return {"reasoning": {"effort": "none"}}