Agent Configuration
Define an agent in a JSON file or a Python dictionary and build it with the experimental config_to_agent function, so its model, prompt, and tools live in configuration rather than code. Pass a file path or a dictionary and you get back a ready-to-use Agent.
Basic Usage
Section titled “Basic Usage”Dictionary Configuration
Section titled “Dictionary Configuration”from strands.experimental import config_to_agent
# Create agent from dictionaryagent = config_to_agent({ "model": "us.anthropic.claude-3-5-sonnet-20241022-v2:0", "prompt": "You are a helpful assistant"})File Configuration
Section titled “File Configuration”from strands.experimental import config_to_agent
# Load from JSON file (with or without file:// prefix)agent = config_to_agent("/path/to/config.json")# oragent = config_to_agent("file:///path/to/config.json")Simple Agent Example
Section titled “Simple Agent Example”{ "prompt": "You are a helpful assistant."}Coding Assistant Example
Section titled “Coding Assistant Example”{ "model": "us.anthropic.claude-3-5-sonnet-20241022-v2:0", "prompt": "You are a coding assistant. Help users write, debug, and improve their code. You have access to file operations and can execute shell commands when needed.", "tools": ["strands.vended_tools.file_editor", "strands.vended_tools.shell"]}Configuration Options
Section titled “Configuration Options”Supported Keys
Section titled “Supported Keys”model: model ID string. Only the Amazon Bedrock model provider string form is supported here.prompt: System prompt for the agent (string)tools: List of tool specifications (list of strings)name: Agent name (string)
Tool Loading
Section titled “Tool Loading”The tools configuration supports Python-specific tool loading formats:
{ "tools": [ "strands.vended_tools.notebook", // Python module path "my_app.tools.cake_tool", // Custom module path "/path/to/another_tool.py", // File path "my_module.my_tool_function" // @tool annotated function ]}The Agent class handles all tool loading internally, including:
- Loading from module paths
- Loading from file paths
- Error handling for missing tools
- Tool validation
Model Configurations
Section titled “Model Configurations”The model property takes a Bedrock model ID string. See AWS’s model ID reference for the available IDs. To use a different model provider, pass a model instance in the **kwargs of config_to_agent:
from strands.experimental import config_to_agentfrom strands.models.openai import OpenAIModel
# Create agent from dictionaryagent = config_to_agent( config={"name": "Data Analyst"}, model=OpenAIModel( client_args={ "api_key": "<KEY>", }, model_id="gpt-4o", ))Additionally, you can override the agent.model attribute of an agent to configure a new model provider:
from strands.experimental import config_to_agentfrom strands.models.openai import OpenAIModel
# Create agent from dictionaryagent = config_to_agent( config={"name": "Data Analyst"})
agent.model = OpenAIModel( client_args={ "api_key": "<KEY>", }, model_id="gpt-4o",)Function Parameters
Section titled “Function Parameters”The config_to_agent function accepts:
config: Either a file path (string) or configuration dictionary**kwargs: Additional Agent constructor parameters that override config values
# Override config values with valid agent parametersagent = config_to_agent( "/path/to/config.json", name="Data Analyst")Best Practices
Section titled “Best Practices”- Override with kwargs: pass Agent constructor arguments to override config values at runtime.
- Rely on agent defaults: specify only the values you want to change.
- Use standard tool formats: follow the Agent class conventions for tool specifications.
- Handle load errors: catch
FileNotFoundErrorandJSONDecodeErrorso a missing or malformed config file fails cleanly.