code: def _split_data_and_params_for_llm_input(
      json_input, param_schema: Optional[ParamSchema]
  ):
      data = {}
      params = {}
      schema_params = (
          {param.name for param in param_schema.params}
          if param_schema
          else {}
      )
  
      for key, value in json_input.items():
          # if the model defines a param schema, then we can add
          # it to the params dict. otherwise, add it to the data
          # dict to prevent it from being ignored at inference time
          if key in schema_params:
              params[key] = value
          else:
              data[key] = value
  
      return data, params
  
imports: import inspect
  import json
  import logging
  import os
  import shlex
  import sys
  import traceback
  from typing import Dict, NamedTuple, Optional, Tuple
  import flask
  from mlflow.environment_variables import MLFLOW_SCORING_SERVER_REQUEST_TIMEOUT
  from mlflow.exceptions import MlflowException
  from mlflow.pyfunc.model import _log_warning_if_params_not_in_predict_signature
  from mlflow.types import ParamSchema, Schema
  from mlflow.utils import reraise
  from mlflow.utils.annotations import deprecated
  from mlflow.utils.file_utils import path_to_local_file_uri
  from mlflow.utils.os import is_windows
  from mlflow.utils.proto_json_utils import MlflowInvalidInputException, NumpyEncoder, _get_jsonable_obj, dataframe_from_parsed_json, parse_tf_serving_input
  from mlflow.version import VERSION
  from io import StringIO
  from mlflow.protos.databricks_pb2 import BAD_REQUEST, INVALID_PARAMETER_VALUE
  from mlflow.server.handlers import catch_mlflow_exception
label_desc: Use image node_id 3 for calling a global function with example usage: _split_data_and_params_for_llm_input(json_input, param_schema) and returns: data,  params