Skip to content

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.

from strands.experimental import config_to_agent
# Create agent from dictionary
agent = config_to_agent({
"model": "us.anthropic.claude-3-5-sonnet-20241022-v2:0",
"prompt": "You are a helpful assistant"
})
from strands.experimental import config_to_agent
# Load from JSON file (with or without file:// prefix)
agent = config_to_agent("/path/to/config.json")
# or
agent = config_to_agent("file:///path/to/config.json")
{
"prompt": "You are a helpful assistant."
}
{
"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"]
}
  • 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)

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

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_agent
from strands.models.openai import OpenAIModel
# Create agent from dictionary
agent = 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_agent
from strands.models.openai import OpenAIModel
# Create agent from dictionary
agent = config_to_agent(
config={"name": "Data Analyst"}
)
agent.model = OpenAIModel(
client_args={
"api_key": "<KEY>",
},
model_id="gpt-4o",
)

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 parameters
agent = config_to_agent(
"/path/to/config.json",
name="Data Analyst"
)
  1. Override with kwargs: pass Agent constructor arguments to override config values at runtime.
  2. Rely on agent defaults: specify only the values you want to change.
  3. Use standard tool formats: follow the Agent class conventions for tool specifications.
  4. Handle load errors: catch FileNotFoundError and JSONDecodeError so a missing or malformed config file fails cleanly.