# 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.

```python
class rasa.core.agent.Agent(
    domain=None,
    policies=None,
    interpreter=None,
    generator=None,
    tracker_store=None,
    lock_store=None,
    action_endpoint=None,
    fingerprint=None,
    model_directory=None,
    model_server=None,
    remote_storage=None,
    path_to_model_archive=None,
)
```

**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`

**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")  
# Output: [u'how can I help you?']
```
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`

**classmethod 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`

**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`

**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.  
Return type: `None`
