# Agent

## Class `rasa.core.agent.Agent`

The Agent class provides a convenient interface for the most important Rasa functionality.

This includes training, handling messages, loading a dialogue model, getting the next action, and handling a channel.

### Methods

- **`create_processor(preprocessor=None)`**  
  Instantiates a processor based on the set state of the agent.
  
  **Return type:** `MessageProcessor`

- **`async execute_action(sender_id, action, output_channel, policy, confidence)`**  
  Handle a single message.
  
  **Return type:** [`DialogueStateTracker`](https://legacy-docs-v1.rasa.com/1.2.9/api/tracker/#rasa.core.trackers.DialogueStateTracker)

- **`handle_channels(channels, http_port=5005, route='/webhooks/', cors=None)`**  
  Start a webserver attaching the input channels and handling msgs.
  
  **Return type:** `Sanic`

- **`async handle_message(message, message_preprocessor=None, **kwargs)`**  
  Handle a single message.
  
  **Return type:** `Optional[List[Dict[str, Any]]]`

- **`async handle_text(text_message, message_preprocessor=None, output_channel=None, sender_id='default')`**  
  Handle a single message.
  
  Example:
  ```python
  from rasa.core.agent import Agent
  from rasa.core.interpreter import RasaNLUInterpreter
  agent = Agent.load("examples/restaurantbot/models/current")
  await agent.handle_text("hello")
  ```
  
  **Return type:** `Optional[List[Dict[str, Any]]]`

- **`is_core_ready()`**  
  Check if all necessary components and policies are ready to use the agent.
  
  **Return type:** `bool`

- **`is_ready()`**  
  Check if all necessary components are instantiated to use agent.
  
  **Return type:** `bool`

- **`class load(model_path, interpreter=None, generator=None, tracker_store=None, lock_store=None, action_endpoint=None, model_server=None, remote_storage=None, path_to_model_archive=None)`**  
  Load a persisted model from the passed path.
  
  **Return type:** [`Agent`](https://legacy-docs-v1.rasa.com/1.2.9/api/agent/#rasa.core.agent.Agent)

- **`async load_data(training_resource, remove_duplicates=True, unique_last_num_states=None, augmentation_factor=50, tracker_limit=None, use_story_concatenation=True, debug_plots=False, exclusion_percentage=None)`**  
  Load training data from a resource.
  
  **Return type:** `List[DialogueStateTracker]`

- **`async log_message(message, message_preprocessor=None, **kwargs)`**  
  Append a message to a dialogue - does not predict actions.
  
  **Return type:** [`DialogueStateTracker`](https://legacy-docs-v1.rasa.com/1.2.9/api/tracker/#rasa.core.trackers.DialogueStateTracker)

- **`async parse_message_using_nlu_interpreter(message_data, tracker=None)`**  
  Handles message text and intent payload input messages.

**Return type:** `Dict[str, Any]`

- **`persist(model_path)`**  
  Persists this agent into a directory for later loading and usage.
  
  **Return type:** `None`

- **`async predict_next(sender_id, **kwargs)`**  
  Handle a single message.
  
  **Return type:** `Optional[Dict[str, Any]]`

- **`toggle_memoization(activate)`**  
  Toggles the memoization on and off.
  
  **Return type:** `None`

- **`train(training_trackers, **kwargs)`**  
  Train the policies / policy ensemble using dialogue data from file.
  
  **Return type:** `None`

- **`async trigger_intent(intent_name, entities, output_channel, tracker)`**  
  Trigger a user intent, e.g. triggered by an external event.
  
  **Return type:** `None`

👋 I can help you get started with Rasa and answer your technical questions.
