Skip to content

Conversation

@jsamuel1
Copy link
Contributor

This PR fixes a critical bug in the Bedrock model initialization that occurs when boto_client_config is passed as a dictionary from JSON configuration parsing.

Problem

  • When launching Strands with Bedrock configuration, users encounter: AttributeError: 'dict' object has no attribute 'merge'
  • The error occurs because the BedrockModel.__init__ method expects boto_client_config to be a BotocoreConfig object, but configuration parsing from JSON creates a plain dictionary
  • The code attempts to call .merge() on the dictionary, which doesn't have this method

Solution

  • Added type conversion in the instance() function to detect when boto_client_config is a dictionary
  • Convert the dictionary to a proper BotocoreConfig object before passing it to BedrockModel
  • Added the necessary import for BotocoreConfig from botocore.config

Changes

  • File: src/strands_agents_builder/models/bedrock.py
  • Added: Import for BotocoreConfig
  • Added: Type conversion logic to handle dict → BotocoreConfig conversion

Testing

This fix addresses the root cause by handling the type conversion at the appropriate layer (where configuration is processed before model instantiation) rather than adding workarounds in the core model implementation.

…Model

- Add type conversion for boto_client_config from dict to BotocoreConfig
- Import BotocoreConfig class to handle configuration parsing
- Fixes issue where JSON config parsing creates dict instead of BotocoreConfig object
- Resolves 'AttributeError: dict object has no attribute merge' during model initialization
@jsamuel1 jsamuel1 requested a review from a team as a code owner May 24, 2025 09:19
@cagataycali cagataycali merged commit caa518c into strands-agents:main May 25, 2025
awsarron pushed a commit to awsarron/agent-builder that referenced this pull request May 26, 2025
…Model (strands-agents#11)

- Add type conversion for boto_client_config from dict to BotocoreConfig
- Import BotocoreConfig class to handle configuration parsing
- Fixes issue where JSON config parsing creates dict instead of BotocoreConfig object
- Resolves 'AttributeError: dict object has no attribute merge' during model initialization
awsarron added a commit that referenced this pull request May 26, 2025
* docs(readme): add logo, title, badges, links to other repos (#13)

* feat: upgrade to Claude Sonnet 4 model (#14)

- Updated default model from claude-3-7-sonnet to claude-sonnet-4-20250514-v1:0
- Updated model_id in .prompt, README.md, and model_utils.py
- Adjusted max_tokens to 32768 for Sonnet 4 compatibility
- Updated documentation references to reflect latest model capabilities

This upgrade provides enhanced reasoning capabilities and performance improvements.

* feat: add missing tools to strands.py (#15)

Adds the following tools that were missing from the imports:

- cron: Crontab management and job scheduling
- current_time: Current time utilities
- file_read: File reading capabilities
- rich_interface: Rich console interface components

Also reorganizes the tools list alphabetically and removes
duplicate load_tool entry for better maintainability.

Note: Excludes memory tool to avoid bringing in a dependency on Bedrock Knowledgebases.

* Fix AttributeError: 'dict' object has no attribute 'merge' in BedrockModel (#11)

- Add type conversion for boto_client_config from dict to BotocoreConfig
- Import BotocoreConfig class to handle configuration parsing
- Fixes issue where JSON config parsing creates dict instead of BotocoreConfig object
- Resolves 'AttributeError: dict object has no attribute merge' during model initialization

* fix(readme): use logo that changes color automatically depending on user's color preference scheme (#16)

* feat(tools): add file_write, memory, slack, speak, stop + remove rich_interface (#19)

* feat(tools): add file_write, memory, slack, speak, stop + remove rich_interface

* docs(readme): update list of tools + remove nested agent capabilities section

* fix: correctly handle keyboard interrupts + stop spinners on error (#12)

* v0.1.2

---------

Co-authored-by: Josh Samuel <3156090+jsamuel1@users.noreply.github.com>
jsamuel1 added a commit to jsamuel1/agent-builder that referenced this pull request May 27, 2025
- Add 20 tests covering dict->BotocoreConfig conversion (ref strands-agents#11)
- Test backward compatibility with existing BotocoreConfig objects
- Validate JSON config parsing scenarios that were failing
- Include regression prevention tests
- Demonstrate original AttributeError and verify fix prevents it
- Cover edge cases: None values, empty dicts, complex configurations
- Organize tests in logical classes for maintainability

Fixes the testing gap for the critical Bedrock configuration bug
that prevented users from launching Strands with JSON-parsed configs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants