diff --git a/src/crewai/utilities/agent_utils.py b/src/crewai/utilities/agent_utils.py index 907020520..cc954f61b 100644 --- a/src/crewai/utilities/agent_utils.py +++ b/src/crewai/utilities/agent_utils.py @@ -450,14 +450,14 @@ def load_agent_from_repository(from_repository: str) -> Dict[str, Any]: for key, value in agent.items(): if key == "tools": attributes[key] = [] - for tool_name in value: + for tool in value: try: module = importlib.import_module("crewai_tools") - tool_class = getattr(module, tool_name) + tool_class = getattr(module, tool["name"]) attributes[key].append(tool_class()) except Exception as e: raise AgentRepositoryError( - f"Tool {tool_name} could not be loaded: {e}" + f"Tool {tool['name']} could not be loaded: {e}" ) from e else: attributes[key] = value diff --git a/tests/agent_test.py b/tests/agent_test.py index 8cd2c075c..02396393b 100644 --- a/tests/agent_test.py +++ b/tests/agent_test.py @@ -2044,7 +2044,7 @@ def test_agent_from_repository(mock_get_agent, mock_get_auth_token): "role": "test role", "goal": "test goal", "backstory": "test backstory", - "tools": ["SerperDevTool"], + "tools": [{"name": "SerperDevTool"}], } mock_get_agent.return_value = mock_get_response agent = Agent(from_repository="test_agent") @@ -2066,7 +2066,7 @@ def test_agent_from_repository_override_attributes(mock_get_agent, mock_get_auth "role": "test role", "goal": "test goal", "backstory": "test backstory", - "tools": ["SerperDevTool"], + "tools": [{"name": "SerperDevTool"}], } mock_get_agent.return_value = mock_get_response agent = Agent(from_repository="test_agent", role="Custom Role") @@ -2086,7 +2086,7 @@ def test_agent_from_repository_with_invalid_tools(mock_get_agent, mock_get_auth_ "role": "test role", "goal": "test goal", "backstory": "test backstory", - "tools": ["DoesNotExist"], + "tools": [{"name": "DoesNotExist"}], } mock_get_agent.return_value = mock_get_response with pytest.raises(