vllm-project/vllm · error · Error
At most {limit} {modality}(s) may be provided in one prompt.
Error message
At most {limit} {modality}(s) may be provided in one prompt. What it means
The EPLB communicator factory reached the end of its dispatch chain without matching the backend string. Recognized values are 'nixl', 'torch_gloo', 'torch_nccl', and 'pynccl'; anything else (including typos) raises this ValueError.
Source
Thrown at rust/src/chat/src/error.rs:26
#[derive(Debug, Error, Macro)]
#[thiserror_ext(macro(path = "crate::error"))]
pub enum Error {
#[error("chat request must contain at least one message")]
EmptyMessages,
#[error("cannot continue the final message when the last message is not from the assistant")]
ContinueFinalAssistantWithoutFinalAssistant,
#[error("chat template is required but none was configured")]
MissingChatTemplate,
#[error("chat template error: {0}")]
ChatTemplate(String),
#[error("multimodal input is not supported by this chat renderer")]
UnsupportedMultimodalRenderer,
#[error("unsupported multimodal content: {0}")]
UnsupportedMultimodalContent(&'static str),
#[error("`{modality}` input is not supported by this model")]
UnsupportedModality { modality: String },
#[error("At most {limit} {modality}(s) may be provided in one prompt.")]
MmLimitExceeded { modality: String, limit: usize },
#[error("multimodal preprocessing error: {0}")]
Multimodal(#[message] String),
#[error("{kind} parsing is not available for model `{model_id}`")]
ParserUnavailableForModel {
kind: &'static str,
model_id: String,
},
#[error("{kind} parsing is disabled by frontend configuration")]
ParserDisabled { kind: &'static str },
#[error(
"{kind} parser `{name}` is not registered{}",
available_parser_hint(.available_names)
)]
ParserUnavailableByName {
kind: &'static str,
name: String,
available_names: Vec<String>,View on GitHub (pinned to c794754062)
Solutions
- Use one of: 'nixl', 'torch_gloo', 'torch_nccl', 'pynccl' (exact lowercase)
- Validate/normalize the backend string at config load time instead of deep in the factory
Example fix
# before backend = "nccl" # after backend = "torch_nccl"
Defensive patterns
Strategy: type-guard
Validate before calling
VALID_EPLB_BACKENDS = {'nixl', 'torch_gloo', 'torch_nccl', 'pynccl'}
assert backend in VALID_EPLB_BACKENDS, f'backend must be one of {VALID_EPLB_BACKENDS}' Type guard
def is_valid_eplb_backend(backend: str) -> bool:
return backend in ('nixl', 'torch_gloo', 'torch_nccl', 'pynccl') Prevention
- Validate the backend string at config-load time with an explicit allow-list
- Normalize case and strip whitespace on user-supplied backend values
When it happens
Trigger: Calling the factory with an arbitrary or misspelled backend string, e.g. 'gloo', 'nccl', or 'NIXL' (case-sensitive).
Common situations: User-supplied config strings; case mismatches; backends removed or renamed across vLLM versions.
Related errors
- chat template error: {0}
- multimodal input is not supported by this chat renderer
- Configuration error: {0}
- Endpoint not ready after {0}s: {1}
- Backend error: {0}
AI-assisted analysis of vllm-project/vllm@c794754062 (2026-08-14).
Data as JSON: /api/errors/70f9ff0285216b90.
Report an issue: GitHub.