Skip to content

[FEATURE] Support Claude 4.6 Adaptive Thinking and Effort Parameter #1669

@statefb

Description

@statefb

Problem Statement

Claude 4.6 introduces new thinking features that deprecate the current budget_tokens approach:

Deprecated (will be removed in future models):

  • thinking: {type: "enabled", budget_tokens: N}

New recommended approach:

  • thinking: {type: "adaptive"} - Claude dynamically decides when and how much to think
  • effort parameter (low, medium, high, max) - Controls thinking depth

Currently, Strands SDK only supports the deprecated budget_tokens via additional_request_fields, with no native support for the new
Claude 4.6 features.

Reference: https://platform.claude.com/docs/en/about-claude/models/whats-new-claude-4-6

Proposed Solution

No response

Use Case

1. Agentic Applications with Dynamic Reasoning

  • Agents that need to think deeply on complex tasks but skip thinking for simple ones
  • thinking: {type: "adaptive"} with effort: "high" provides optimal cost/quality balance

2. Cost Optimization

  • effort: "low" for simple queries (faster, cheaper)
  • effort: "max" for complex reasoning tasks (best quality)

3. Future-Proofing

  • budget_tokens will be removed in future Claude models
  • Applications using Strands need a migration path to the new API

Example usage:

from strands import Agent                                                                                                                  
from strands.models import BedrockModel
                                                                                                                                           
model = BedrockModel(
    model_id="anthropic.claude-opus-4-6-20250514-v1:0",                                                                                    
    additional_request_fields={                                                                                                            
        "thinking": {"type": "adaptive"},
        "effort": "high"
    }
)

agent = Agent(model=model, tools=[...])
result = agent("Solve this complex problem...")

Alternatives Solutions

No response

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions