class_docstr: The set of expected inputs to a custom handler for a
code: def log_post_api_call(
      self, kwargs, response_obj, start_time, end_time
  ):
      try:
          self.states.append("post_api_call")
          ## START TIME
          assert isinstance(start_time, datetime)
          ## END TIME
          assert end_time == None
          ## RESPONSE OBJECT
          assert response_obj == None
          ## KWARGS
          assert isinstance(kwargs["model"], str)
          assert isinstance(kwargs["messages"], list)
          assert isinstance(kwargs["optional_params"], dict)
          assert isinstance(kwargs["litellm_params"], dict)
          assert isinstance(
              kwargs["start_time"], (datetime, type(None))
          )
          assert isinstance(kwargs["stream"], bool)
          assert isinstance(kwargs["user"], (str, type(None)))
          assert isinstance(kwargs["input"], (list, dict, str))
          assert isinstance(kwargs["api_key"], (str, type(None)))
          assert (
              isinstance(
                  kwargs["original_response"],
                  (str, litellm.CustomStreamWrapper),
              )
              or inspect.iscoroutine(kwargs["original_response"])
              or inspect.isasyncgen(kwargs["original_response"])
          )
          assert isinstance(
              kwargs["additional_args"], (dict, type(None))
          )
          assert isinstance(kwargs["log_event_type"], str)
          ### ROUTER-SPECIFIC KWARGS
          assert isinstance(kwargs["litellm_params"]["metadata"], dict)
          assert isinstance(
              kwargs["litellm_params"]["metadata"]["model_group"], str
          )
          assert isinstance(
              kwargs["litellm_params"]["metadata"]["deployment"], str
          )
          assert isinstance(
              kwargs["litellm_params"]["model_info"], dict
          )
          assert isinstance(
              kwargs["litellm_params"]["model_info"]["id"], str
          )
          assert isinstance(
              kwargs["litellm_params"]["proxy_server_request"],
              (str, type(None)),
          )
          assert isinstance(
              kwargs["litellm_params"]["preset_cache_key"],
              (str, type(None)),
          )
          assert isinstance(
              kwargs["litellm_params"]["stream_response"], dict
          )
      except:
          print(f"Assertion Error: {traceback.format_exc()}")
          self.errors.append(traceback.format_exc())
  
file_path: litellm/litellm/tests/test_custom_callback_router.py
imports: import sys, os, time, inspect, asyncio, traceback
  from datetime import datetime
  import pytest
  from typing import Optional, Literal, List
  from litellm import Router, Cache
  import litellm
  from litellm.integrations.custom_logger import CustomLogger
label_desc: Use image node_id 3 for calling the CompletionCustomHandler obj's underlying member method code with example usage: obj.log_post_api_call(kwargs, response_obj, start_time, end_time) without return types