{"record":{"id":"2f6d01be86442257","repo":"tensorflow/models","slug":"must-specify-exactly-one-of-vocab-file-with-match","errorCode":null,"errorMessage":"Must specify exactly one of vocab_file (with matching lower_case flag) or preprocessing_hub_module_url.","messagePattern":"Must specify exactly one of vocab_file \\(with matching lower_case flag\\) or preprocessing_hub_module_url\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"official/nlp/data/dual_encoder_dataloader.py","lineNumber":63,"sourceCode":"  preprocessing_hub_module_url: str = ''\n\n  left_text_fields: Tuple[str] = ('left_input',)\n  right_text_fields: Tuple[str] = ('right_input',)\n  is_training: bool = True\n  seq_length: int = 128\n  file_type: str = 'tfrecord'\n\n\n@data_loader_factory.register_data_loader_cls(DualEncoderDataConfig)\nclass DualEncoderDataLoader(data_loader.DataLoader):\n  \"\"\"A class to load dataset for dual encoder task (tasks/dual_encoder).\"\"\"\n\n  def __init__(self, params):\n    if bool(params.tfds_name) == bool(params.input_path):\n      raise ValueError('Must specify either `tfds_name` and `tfds_split` '\n                       'or `input_path`.')\n    if bool(params.vocab_file) == bool(params.preprocessing_hub_module_url):\n      raise ValueError('Must specify exactly one of vocab_file (with matching '\n                       'lower_case flag) or preprocessing_hub_module_url.')\n    self._params = params\n    self._seq_length = params.seq_length\n    self._left_text_fields = params.left_text_fields\n    self._right_text_fields = params.right_text_fields\n\n    if params.preprocessing_hub_module_url:\n      preprocessing_hub_module = hub.load(params.preprocessing_hub_module_url)\n      self._tokenizer = preprocessing_hub_module.tokenize\n      self._pack_inputs = functools.partial(\n          preprocessing_hub_module.bert_pack_inputs,\n          seq_length=params.seq_length)\n    else:\n      self._tokenizer = layers.BertTokenizer(\n          vocab_file=params.vocab_file, lower_case=params.lower_case)\n      self._pack_inputs = layers.BertPackInputs(\n          seq_length=params.seq_length,\n          special_tokens_dict=self._tokenizer.get_special_tokens_dict())","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/tensorflow/models/blob/e006f5f0d534913e49c1f1dae87364039fa607e2/official/nlp/data/dual_encoder_dataloader.py#L45-L81","documentation":"Error \"Must specify exactly one of vocab_file (with matching lower_case flag) or preprocessing_hub_module_url.\" thrown in tensorflow/models.","triggerScenarios":"Thrown at official/nlp/data/dual_encoder_dataloader.py:63 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e006f5f0d534913e49c1f1dae87364039fa607e2","analyzedAt":"2026-08-24T14:09:15.576Z","schemaVersion":2},"datasetVersion":"2026-08-24T17:17:21.512Z"}