code: def evaluate_prediction_file(prediction_path: str, gold_path: str) -> Tuple[float, float]:
      
      predicted_answers = json.load(open(prediction_path, encoding='utf-8'))
      annotations = json.load(open(gold_path, encoding='utf-8'))
      return evaluate_json(annotations, predicted_answers)
docs: Takes a prediction file and a gold file and evaluates the predictions for each question in the
      gold file.  Both files must be json formatted and must have query_id keys, which are used to
      match predictions to gold annotations.  The gold file is assumed to have the format of the dev
      set in the DROP data release.  The prediction file must be a JSON dictionary keyed by query id,
      where the value is either a JSON dictionary with an "answer" key, or just a string (or list of
      strings) that is the answer.