[Misc] Forward request-level prompt extras for cross-encoder scoring (#46939)
Signed-off-by: Taneem Ibrahim <taneem.ibrahim@gmail.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Co-authored-by: Wentao Ye <44945378+yewentao256@users.noreply.github.com>
Taneem Ibrahim committed
Jul 4, 2026 at 09:18 UTC
fa1fa968c4f1ed89d1df39af28db70544a41fa12
1 file changed
+13
-1
vllm/entrypoints/pooling/scoring/io_processor.py
+13
-1
@@ -10,6 +10,7 @@ from vllm import PoolingParams, PoolingRequestOutput, TokensPrompt
10
from vllm.inputs import EngineInput
11
from vllm.renderers import TokenizeParams
12
from vllm.renderers.hf import safe_apply_chat_template
13
+from vllm.renderers.inputs.preprocess import extract_target_prompt
14
from vllm.tasks import PoolingTask
15
from vllm.utils.mistral import is_mistral_tokenizer
16
@@ -433,8 +434,16 @@ class CrossEncoderIOProcessor(ScoringIOProcessor):
434
max_tokens_per_doc: int = 0,
435
prompt_extras: dict[str, Any] | None = None,
436
) -> tuple[Sequence[EngineInput], list[PoolingParams]]:
436
- # todo: support prompt_extras
437
arrival_time = time.time()
438
+ engine_prompt_extras = (
439
+ {
440
+ k: v
441
+ for k in ("mm_processor_kwargs", "cache_salt")
442
+ if (v := prompt_extras.get(k)) is not None
443
+ }
444
+ if prompt_extras
445
+ else None
446
+ )
447
448
data_1 = scoring_data.data_1
449
data_2 = scoring_data.data_2
@@ -472,6 +481,9 @@ class CrossEncoderIOProcessor(ScoringIOProcessor):
481
pooling_params_list.append(pooling_params)
482
483
tok_params.apply_post_tokenization(self.tokenizer, engine_prompt)
484
+ if engine_prompt_extras:
485
+ target_prompt = extract_target_prompt(self.model_config, engine_prompt)
486
+ target_prompt.update(engine_prompt_extras)
487
engine_inputs.append(
488
self.renderer.process_for_engine(engine_prompt, arrival_time)
489
)