Signed-off-by: chickeyton <ngton2014@gmail.com> Signed-off-by: Yueqian Lin <linyueqian@outlook.com> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> Co-authored-by: Yueqian Lin <linyueqian@outlook.com>
56 lines
2.3 KiB
Python
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"]
|