code: def compute_summaries(
      metrics,
      environment,
      policy,
      num_episodes=1,
      global_step=None,
      tf_summaries=True,
      log=False,
      callback=None,
  ):
      """Compute metrics using `policy` on the `environment` and logs summaries.
  
      Args:
        metrics: List of metrics to compute.
        environment: py_environment instance.
        policy: py_policy instance used to step the environment. A tf_policy can be
          used in_eager_mode.
        num_episodes: Number of episodes to compute the metrics over.
        global_step: An optional global step for summaries.
        tf_summaries: If True, write TF summaries for each computed metric.
        log: If True, log computed metrics.
        callback: If provided, this function is called with (computed_metrics,
          global_step).
  
      Returns:
        A dictionary of results {metric_name: metric_value}
      """
      results = compute(metrics, environment, policy, num_episodes)
      if tf_summaries:
          py_metric.run_summaries(metrics)
      if log:
          log_metrics(metrics, prefix="Step = {}".format(global_step))
      if callback is not None:
          callback(results, global_step)
      return results
  
file_path: agents/tf_agents/eval/metric_utils.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import collections
  from absl import logging
  import gin
  import tensorflow
  from tf_agents.drivers import dynamic_episode_driver
  from tf_agents.drivers import py_driver
  from tf_agents.metrics import py_metric
  from tf_agents.utils import common
label_desc: Use image node_id 3 for calling a global function with example usage: compute_summaries(metrics, environment, policy, num_episodes, global_step, tf_summaries, log, callback) and returns: results