# Agent The `Agent` (represented by `BaseAgent` in code) is a public interface in ADK that serves as a blueprint defining identity, instructions, and tools for an agentic entity. It inherits from `BaseNode` and can be part of a larger workflow or act as a standalone agent. ## Key Characteristics - **Name**: Unique identifier within the agent tree. Must be a valid Python identifier and cannot be "user". - **Description**: Capability description used by the model for delegation. - **Sub-agents**: Support for hierarchical agent structures. - **Callbacks**: Supports `before_agent_callback` and `after_agent_callback` for intercepting lifecycle events. ## Entrance Methods > [!IMPORTANT] > Since agents now extend `BaseNode`, the original `run_async` entrance method is considered **deprecated**. Developers should rely on the new `run` method from `BaseNode` to execute agents as workflow nodes. ### `run` (Preferred Entrance) The method inherited from `BaseNode` to execute the agent. ### `run_async` (Deprecated) Legacy entry method to run an agent via text-based conversation. **Arguments:** - `parent_context`: `InvocationContext`, the invocation context of the parent agent. **Yields:** - `Event`: The events generated by the agent. ### `run_live` Entry method to run an agent via video/audio-based conversation. **Arguments:** - `parent_context`: `InvocationContext`, the invocation context of the parent agent. **Yields:** - `Event`: The events generated by the agent. ### `from_config` Class method to create an agent from a configuration object.