Agent Configuration
The experimental config_to_agent function provides a simple way to create agents from configuration files or dictionaries.
Overview
Section titled “Overview”config_to_agent allows you to:
- Create agents from JSON files or dictionaries
- Use a simple functional interface for agent instantiation
- Support both file paths and dictionary configurations
- Leverage the Agent class’s built-in tool loading capabilities
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_tools.file_read", "strands_tools.editor", "strands_tools.shell"]}Configuration Options
Section titled “Configuration Options”Supported Keys
Section titled “Supported Keys”model: Model identifier (string) - [Only supports AWS Bedrock model provider string]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_tools.file_read", // 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 uses the string based model id feature. You can reference AWS’s Model Id’s to identify a model id to use. If you want to use a different model provider, you can pass in a model as part of the **kwargs of the config_to_agent function:
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 when needed: Use kwargs to override configuration values dynamically
- Leverage agent defaults: Only specify configuration values you want to override
- Use standard tool formats: Follow Agent class conventions for tool specifications
- Handle errors gracefully: Catch FileNotFoundError and JSONDecodeError for robust applications