Preprocess the request Args: request (Dict): may contain text and messages fields Returns: bool: Whether preprocessing is successful str: error message
(self, request, max_model_len=None, **kwargs)
| 212 | self.tokenizer.pad_token_id = self.pad_token_id |
| 213 | |
| 214 | def process_request(self, request, max_model_len=None, **kwargs): |
| 215 | """ |
| 216 | Preprocess the request |
| 217 | |
| 218 | Args: |
| 219 | request (Dict): may contain text and messages fields |
| 220 | |
| 221 | Returns: |
| 222 | bool: Whether preprocessing is successful |
| 223 | str: error message |
| 224 | """ |
| 225 | data_processor_logger.info(f"Start processing request: {request}") |
| 226 | request = self._apply_default_parameters(request) |
| 227 | if request.get("eos_token_ids") is None or len(request.eos_token_ids) == 0: |
| 228 | request.eos_token_ids = self.eos_token_ids |
| 229 | |
| 230 | # processing stop_sequences and stop_token_ids |
| 231 | process_stop_token_ids(request, self.update_stop_seq) |
| 232 | |
| 233 | # processing bad_words |
| 234 | bad_words = request.get("bad_words") |
| 235 | bad_words_token_ids = request.get("bad_words_token_ids") |
| 236 | if bad_words: |
| 237 | bad_words_token_ids = self.update_bad_words(bad_words, bad_words_token_ids) |
| 238 | request["bad_words_token_ids"] = bad_words_token_ids |
| 239 | |
| 240 | # processing prompt_token_ids |
| 241 | if request.prompt_token_ids is None or len(request.prompt_token_ids) == 0: |
| 242 | if request.prompt is not None: |
| 243 | prompt = request.prompt |
| 244 | add_special_tokens = request.get("add_special_tokens", False) |
| 245 | assert isinstance(prompt, str) or ( |
| 246 | isinstance(prompt, list) and all([isinstance(t, int) for t in prompt]) |
| 247 | ), f"prompt must be a string or a list of integers, but got {type(prompt)}" |
| 248 | if isinstance(prompt, list): # if prompt is a token id list |
| 249 | request.prompt_token_ids = prompt |
| 250 | else: |
| 251 | request.prompt_token_ids = self.text2ids( |
| 252 | request.prompt, max_model_len, add_special_tokens=add_special_tokens |
| 253 | ) |
| 254 | elif request.messages is not None: |
| 255 | if self.tokenizer.chat_template is None: |
| 256 | raise ValueError("This model does not support chat_template.") |
| 257 | task = request.to_dict() |
| 258 | chat_template_kwargs = kwargs.get("chat_template_kwargs", {}) |
| 259 | if chat_template_kwargs: |
| 260 | if isinstance(chat_template_kwargs, dict): |
| 261 | for k, v in chat_template_kwargs.items(): |
| 262 | if k not in task or task[k] is None: |
| 263 | task[k] = v |
| 264 | else: |
| 265 | raise ValueError("Invalid input: chat_template_kwargs must be a dict") |
| 266 | task.setdefault("enable_thinking", True) |
| 267 | request.prompt_token_ids = self.messages2ids(task, **chat_template_kwargs) |
| 268 | else: |
| 269 | raise ValueError(f"The request should have `input_ids`, `text` or `messages`: {request}.") |
| 270 | |
| 271 | if len(request.prompt_token_ids) == 0: |
no test coverage detected