<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get(self, name):
 """ Return a value from this evaluator. Because tensor calculated is cached, it may lead to suble bugs if the same value is used multiple times with and without no_grad() context. It is advised in such cases to not use no_grad and stick to .detach() """

        if name in self._storage:
            return self._storage[name]
        elif name in self._providers:
            value = self._storage[name] = self._providers[name](self)
            return value
        elif name.startswith('rollout:'):
            rollout_name = name[8:]
            value = self._storage[name] = self.rollout.batch_tensor(rollout_name)
            return value
        else:
            raise RuntimeError(f"Key {name} is not provided by this evaluator")