Files
vllm-omni/vllm_omni/model_executor/models/personaplex/duplex/capabilities.py
T
2026-09-27 03:02:24 +00:00

56 lines
2.3 KiB
Python

# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Copyright contributors to the vLLM-Omni project
from __future__ import annotations
from vllm_omni.engine.duplex.config import DuplexCapabilities
from vllm_omni.model_executor.models.personaplex.duplex.config import CHUNK_PERIOD_MS
def personaplex_capabilities(*, max_sessions: int = 1) -> DuplexCapabilities:
"""What a PersonaPlex session advertises in ``session.created``.
PersonaPlex is a pure-lockstep model: audio flows both ways at the codec
frame rate, the model itself decides when to speak, and there are no
client commits or external turn signals. Barge-in is native model
behaviour but destructive output interruption and model-state rewind are
not validated, so it is not advertised. No text seeding exists, so the
model cannot serve ``/v1/chat/completions``.
"""
supports_multi_session = max_sessions > 1
return DuplexCapabilities(
supports_model_native_turn_policy=True,
supports_external_turn_signal=False,
supports_client_commit=False,
supports_barge_in=False,
supports_playback_ack=True,
supports_input_append=True,
supports_replace_latest_chunk=False,
supports_reencode_context=False,
supports_rollback_to_checkpoint=False,
supports_turn_commit_only=False,
supports_model_internal_state=True,
supports_stage_resumption=True,
supports_core_resumable_request=True,
supports_stage_connector_handoff=True,
supports_independent_io_streams=True,
supports_realtime_endpoint=True,
supports_multi_session=supports_multi_session,
supports_multi_session_same_replica=supports_multi_session,
supports_session_lease=True,
supports_session_resume=False,
session_admission_mode="engine_managed",
supports_audio_truncate=False,
supports_chat_completions=False,
requires_model_runner_kv=True,
requires_native_stage_role=True,
adapter_patterns=["scheduler_data_plane"],
signal_sources=["model_native", "client_event"],
stage_handoff_transport="scheduler_data_plane",
chunk_period_ms=CHUNK_PERIOD_MS,
target_barge_in_latency_ms=None,
)
__all__ = ["personaplex_capabilities"]