docs: def serving_from_csv_input(train_config, args, keep_target):
    """Read the input features from a placeholder csv string tensor."""
    examples = tf.placeholder(
        dtype=tf.string,
        shape=(None,),
        name='csv_input_string')
  
    features = parse_example_tensor(examples=examples,
                                    train_config=train_config,
                                    keep_target=keep_target)
  
    if keep_target:
      target = features.pop(train_config['target_column'])
    else:
      target = None
    features, target = preprocess_input(
        features=features,
        target=target,
        train_config=train_config,
        preprocess_output_dir=args.preprocess_output_dir,
        model_type=args.model_type)
  
    return input_fn_utils.InputFnOps(features,
                                     target,
                                     {'csv_line': examples}
                                     )