code: def get_metrics(predicted: Union[str, List[str], Tuple[str, ...]],
                  gold: Union[str, List[str], Tuple[str, ...]]) -> Tuple[float, float]:
      
      predicted_bags = _answer_to_bags(predicted)
      gold_bags = _answer_to_bags(gold)
  
      exact_match = 1.0 if predicted_bags[0] == gold_bags[0] else 0
  
      f1_per_bag = _align_bags(predicted_bags[1], gold_bags[1])
      f1 = np.mean(f1_per_bag)
      f1 = round(f1, 2)
      return exact_match, f1
docs: Takes a predicted answer and a gold answer (that are both either a string or a list of
      strings), and returns exact match and the DROP F1 metric for the prediction.  If you are
      writing a script for evaluating objects in memory (say, the output of predictions during
      validation, or while training), this is the function you want to call, after using
      :func:`answer_json_to_strings` when reading the gold answer from the released data file.