code: def send_metric(
      self,
      type: Literal[
          "PERIODICAL", "FINAL"
      ],  # pylint: disable=redefined-builtin
      parameter_id: int | None,
      trial_job_id: str,
      sequence: int,
      value: TrialMetric,
  ) -> None:
      metric = {
          "parameter_id": parameter_id,
          "trial_job_id": trial_job_id,
          "type": type,
          "sequence": sequence,
          "value": nni.dump(value),
      }
      command = {
          "type": "metric",
          "metric": nni.dump(metric),
      }
      self._channel.send(command)
  
file_path: nni/nni/runtime/trial_command_channel/v3.py
imports: from __future__ import annotations
  import logging
  from typing_extensions import Literal
  import nni
  from nni.runtime.command_channel.http import HttpChannel
  from nni.typehint import ParameterRecord, TrialMetric
  from .base import TrialCommandChannel
label_desc: Use image node_id 3 for calling the TrialCommandChannelV3 obj's underlying member method code with example usage: obj.send_metric(type, parameter_id, trial_job_id, sequence, value) without return types