in src/smolagents/agents.py [0:0]
def from_dict(cls, agent_dict: dict[str, Any], **kwargs) -> "MultiStepAgent":
"""Create agent from a dictionary representation.
Args:
agent_dict (`dict[str, Any]`): Dictionary representation of the agent.
**kwargs: Additional keyword arguments that will override agent_dict values.
Returns:
`MultiStepAgent`: Instance of the agent class.
"""
# Load model
model_info = agent_dict["model"]
model_class = getattr(importlib.import_module("smolagents.models"), model_info["class"])
model = model_class.from_dict(model_info["data"])
# Load tools
tools = []
for tool_info in agent_dict["tools"]:
tools.append(Tool.from_code(tool_info["code"]))
# Load managed agents
managed_agents = []
for managed_agent_name, managed_agent_class_name in agent_dict["managed_agents"].items():
managed_agent_class = getattr(importlib.import_module("smolagents.agents"), managed_agent_class_name)
managed_agents.append(managed_agent_class.from_dict(agent_dict["managed_agents"][managed_agent_name]))
# Extract base agent parameters
agent_args = {
"model": model,
"tools": tools,
"prompt_templates": agent_dict.get("prompt_templates"),
"max_steps": agent_dict.get("max_steps"),
"verbosity_level": agent_dict.get("verbosity_level"),
"grammar": agent_dict.get("grammar"),
"planning_interval": agent_dict.get("planning_interval"),
"name": agent_dict.get("name"),
"description": agent_dict.get("description"),
}
# Filter out None values to use defaults from __init__
agent_args = {k: v for k, v in agent_args.items() if v is not None}
# Update with any additional kwargs
agent_args.update(kwargs)
# Create agent instance
return cls(**agent_args)