code: def top_k_top_p_filtering(
      logits: "torch.FloatTensor",
      top_k: int = 0,
      top_p: float = 1.0,
      filter_value: float = -float("Inf"),
      min_tokens_to_keep: int = 1,
  ) -> "torch.FloatTensor":
      """
      Filter a distribution of logits using top-k and/or nucleus (top-p) filtering
  
      Args:
          logits: logits distribution shape (batch size, vocabulary size)
          top_k (:obj:`int`, `optional`, defaults to 0):
              If > 0, only keep the top k tokens with highest probability (top-k filtering)
          top_p (:obj:`float`, `optional`, defaults to 1.0):
              If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus
              filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751)
          min_tokens_to_keep (:obj:`int`, `optional`, defaults to 1):
              Minimumber of tokens we keep per batch example in the output.
  
      From: https://gist.github.com/thomwolf/1a5a29f6962089e871b94cbd09daf317
      """
      if top_k > 0:
          logits = TopKLogitsWarper(
              top_k=top_k,
              filter_value=filter_value,
              min_tokens_to_keep=min_tokens_to_keep,
          )(None, logits)
  
      if 0 <= top_p <= 1.0:
          logits = TopPLogitsWarper(
              top_p=top_p, min_tokens_to_keep=min_tokens_to_keep
          )(None, logits)
  
      return logits
  
imports: from dataclasses import dataclass
  from typing import Any, Callable, Dict, Iterable, List, Optional, Tuple, Union
  from .file_utils import ModelOutput
  from .generation_beam_search import BeamScorer, BeamSearchScorer
  from .generation_logits_process import EncoderNoRepeatNGramLogitsProcessor, ForcedBOSTokenLogitsProcessor, ForcedEOSTokenLogitsProcessor, HammingDiversityLogitsProcessor, InfNanRemoveLogitsProcessor, LogitsProcessorList, MinLengthLogitsProcessor, NoBadWordsLogitsProcessor, NoRepeatNGramLogitsProcessor, PrefixConstrainedLogitsProcessor, RepetitionPenaltyLogitsProcessor, TemperatureLogitsWarper, TopKLogitsWarper, TopPLogitsWarper
  from .generation_stopping_criteria import MaxLengthCriteria, MaxNewTokensCriteria, MaxTimeCriteria, StoppingCriteriaList, validate_stopping_criteria
  from fastNLP.envs.imports import _NEED_IMPORT_TORCH
  from fastNLP.core.log import logger
label_desc: Use image node_id 1 for calling a global function with example usage: top_k_top_p_filtering(logits, top_k, top_p, filter_value, min_tokens_to_keep) and returns: logits