Ask an agent's opinion about an artifact.

        :param str addr: Address of the agent which opinion is asked
        :type addr: :py:class:`~creamas.core.agent.CreativeAgent`
        :param object artifact: artifact to be evaluated
        :returns: agent's evaluation of the artifact
        :rtype: float

        This is a shortcut to::

            remote_agent = await self.env.connect(addr)
            opinion = await remote_agent.evaluate(artifact)

        .. note::

            The artifact object should be serializable by the environment.

async def ask_opinion(self, addr, artifact):
        """Ask an agent's opinion about an artifact.

        :param str addr: Address of the agent which opinion is asked
        :type addr: :py:class:`~creamas.core.agent.CreativeAgent`
        :param object artifact: artifact to be evaluated
        :returns: agent's evaluation of the artifact
        :rtype: float

        This is a shortcut to::

            remote_agent = await self.env.connect(addr)
            opinion = await remote_agent.evaluate(artifact)

        .. note::

            The artifact object should be serializable by the environment.
        """
        remote_agent = await self.env.connect(addr)
        return await remote_agent.evaluate(artifact)