from abc import ABC, abstractmethod
from typing import Any

DEFAULT_MAX_RUN_STEPS = 20

class BaseAgent(ABC):
    r"""An abstract base class for all agents."""

    @abstractmethod
    def run(self, user_input: str, **kwargs) -> Any:
        """Run the agent with the given user input.

        Args:
            user_input (str): The input from the user.
            **kwargs: Additional keyword arguments.

        Returns:
            Any: The output from the agent.
        """
        pass