code: def generate_protobuf_metric(
      name: str,
      desc: str,
      unit: str,
      label_keys: List[str] = None,
      timeseries: List[TimeSeries] = None,
  ):
      if not label_keys:
          label_keys = []
      if not timeseries:
          timeseries = []
  
      return Metric(
          metric_descriptor=MetricDescriptor(
              name=name,
              description=desc,
              unit=unit,
              label_keys=[LabelKey(key="a"), LabelKey(key="b")],
          ),
          timeseries=timeseries,
      )
  
imports: import os
  import time
  import sys
  import pytest
  import ray._private.prometheus_exporter
  from typing import List
  from opencensus.stats.view_manager import ViewManager
  from opencensus.stats.stats_recorder import StatsRecorder
  from opencensus.stats import execution_context
  from prometheus_client.core import REGISTRY
  from ray._private.metrics_agent import Gauge, MetricsAgent, Record, RAY_WORKER_TIMEOUT_S
  from ray._private.services import new_port
  from ray.core.generated.metrics_pb2 import Metric, MetricDescriptor, Point, LabelKey, TimeSeries, LabelValue
  from ray._raylet import WorkerID
  from ray._private.test_utils import fetch_prometheus_metrics, fetch_raw_prometheus, wait_for_condition
label_desc: Use image node_id 5 for calling a global function with example usage: generate_protobuf_metric(name, desc, unit, label_keys, timeseries) and returns: Metric