in src/smolagents/tools.py [0:0]
def __call__(self, *args, sanitize_inputs_outputs: bool = False, **kwargs):
import torch
from accelerate.utils import send_to_device
if not self.is_initialized:
self.setup()
if sanitize_inputs_outputs:
args, kwargs = handle_agent_input_types(*args, **kwargs)
encoded_inputs = self.encode(*args, **kwargs)
tensor_inputs = {k: v for k, v in encoded_inputs.items() if isinstance(v, torch.Tensor)}
non_tensor_inputs = {k: v for k, v in encoded_inputs.items() if not isinstance(v, torch.Tensor)}
encoded_inputs = send_to_device(tensor_inputs, self.device)
outputs = self.forward({**encoded_inputs, **non_tensor_inputs})
outputs = send_to_device(outputs, "cpu")
decoded_outputs = self.decode(outputs)
if sanitize_inputs_outputs:
decoded_outputs = handle_agent_output_types(decoded_outputs, self.output_type)
return decoded_outputs