code: def build_feature_columns(
      users,
      items,
      user_col=DEFAULT_USER_COL,
      item_col=DEFAULT_ITEM_COL,
      item_feat_col=None,
      crossed_feat_dim=1000,
      user_dim=8,
      item_dim=8,
      item_feat_shape=None,
      model_type="wide_deep",
  ):
      """Build wide and/or deep feature columns for TensorFlow high-level API Estimator.
  
      Args:
          users (iterable): Distinct user ids.
          items (iterable): Distinct item ids.
          user_col (str): User column name.
          item_col (str): Item column name.
          item_feat_col (str): Item feature column name for 'deep' or 'wide_deep' model.
          crossed_feat_dim (int): Crossed feature dimension for 'wide' or 'wide_deep' model.
          user_dim (int): User embedding dimension for 'deep' or 'wide_deep' model.
          item_dim (int): Item embedding dimension for 'deep' or 'wide_deep' model.
          item_feat_shape (int or an iterable of integers): Item feature array shape for 'deep' or 'wide_deep' model.
          model_type (str): Model type, either
              'wide' for a linear model,
              'deep' for a deep neural networks, or
              'wide_deep' for a combination of linear model and neural networks.
  
      Returns:
          list, list:
          - The wide feature columns
          - The deep feature columns. If only the wide model is selected, the deep column list is empty and viceversa.
      """
      if model_type not in ["wide", "deep", "wide_deep"]:
          raise ValueError(
              "Model type should be either 'wide', 'deep', or 'wide_deep'"
          )
  
      user_ids = (
          tf.feature_column.categorical_column_with_vocabulary_list(
              user_col, users
          )
      )
      item_ids = (
          tf.feature_column.categorical_column_with_vocabulary_list(
              item_col, items
          )
      )
  
      if model_type == "wide":
          return (
              _build_wide_columns(user_ids, item_ids, crossed_feat_dim),
              [],
          )
      elif model_type == "deep":
          return (
              [],
              _build_deep_columns(
                  user_ids,
                  item_ids,
                  user_dim,
                  item_dim,
                  item_feat_col,
                  item_feat_shape,
              ),
          )
      elif model_type == "wide_deep":
          return (
              _build_wide_columns(user_ids, item_ids, crossed_feat_dim),
              _build_deep_columns(
                  user_ids,
                  item_ids,
                  user_dim,
                  item_dim,
                  item_feat_col,
                  item_feat_shape,
              ),
          )
  
imports: import tensorflow
  from recommenders.utils.constants import DEFAULT_USER_COL, DEFAULT_ITEM_COL
  from recommenders.utils.tf_utils import MODEL_DIR
label_desc: Use image node_id 1 for calling a global function with example usage: build_feature_columns(users, items, user_col, item_col, item_feat_col, crossed_feat_dim, user_dim, item_dim, item_feat_shape, model_type) and returns: _build_wide_columns,  list, list,  _build_deep_columns, _build_wide_columns,  _build_deep_columns