code: def _get_model_info(self):
      json_ai = self.model_storage.json_get("json_ai")
      model_info = self.model_storage.get_info()
      model_data = model_info["data"]
  
      accuracy_functions = json_ai.get("accuracy_functions")
      if accuracy_functions:
          accuracy_functions = str(accuracy_functions)
  
      models_data = model_data.get("submodel_data", [])
      if models_data == []:
          raise Exception(
              "predictor doesn't contain enough data to generate 'model' attribute"
          )
      data = []
  
      for model in models_data:
          m_data = []
          m_data.append(model["name"])
          m_data.append(model["accuracy"])
          m_data.append(model.get("training_time", "unknown"))
          m_data.append(1 if model["is_best"] else 0)
          m_data.append(accuracy_functions)
          data.append(m_data)
  
      return pd.DataFrame(
          data,
          columns=[
              "name",
              "performance",
              "training_time",
              "selected",
              "accuracy_functions",
          ],
      )
  
imports: import copy
  import json
  import sys
  from datetime import datetime
  from functools import lru_cache
  from typing import Dict, Optional
  import lightwood
  import numpy
  import pandas
  from type_infer.dtype import dtype
  import mindsdb.interfaces.storage.db
  import mindsdb.utilities.profiler
  from mindsdb.integrations.libs.base import BaseMLEngine
  from mindsdb.interfaces.model.functions import get_model_record
  from mindsdb.interfaces.storage.json import get_json_storage
  from mindsdb.utilities.functions import cast_row_types
  from .functions import run_finetune, run_learn
label_desc: Use image node_id 10 for calling the LightwoodHandler obj's underlying member method code with example usage: obj._get_model_info() and returns: pd