Source code for mllm_shap.connectors.enums
"""Configuration for possible roles and modalities."""
from enum import Enum
[docs]
class ModalityFlag(int, Enum):
"""Defines supported input/output modalities."""
IGNORE = -1
"""
Ignore this token for modality-specific operations.
For internal calculations references.
"""
TEXT = 0
"""Represents text inputs or outputs."""
AUDIO = 1
"""Represents audio inputs or outputs."""
[docs]
class Role(int, Enum):
"""Defines roles for participants in a conversation."""
USER = 0
"""Represents user-provided inputs."""
ASSISTANT = 1
"""Represents outputs generated by the assistant."""
SYSTEM = 2
"""Represents system-level inputs or outputs."""
[docs]
@classmethod
def from_ordinal(cls, ordinal: int) -> "Role":
"""Creates a Role enum member from its ordinal value.
Args:
ordinal: The integer ordinal value of the role.
Returns:
The corresponding Role enum member.
Raises:
ValueError: If the ordinal does not correspond to any Role.
"""
for role in cls:
if role.value == ordinal:
return role
raise ValueError(f"No Role found for ordinal {ordinal}.")
def __str__(self) -> str:
"""Returns the role name as a string."""
return self.name
[docs]
class SystemRolesSetup(int, Enum):
"""Specifies how system roles affect explainability."""
NONE = 0
"""No system role; all tokens are considered for explainability."""
SYSTEM = 1
"""
System role is active; explainability for system tokens is disabled.
Includes steering tokens depending on connector implementation.
"""
SYSTEM_ASSISTANT = 2
"""System-assistant role is active; explainability for assistant tokens is disabled."""
[docs]
class ModelHistoryTrackingMode(int, Enum):
"""Controls which model outputs are tracked in history."""
TEXT = 0
"""Track only text outputs."""
AUDIO = 1
"""Track only audio outputs."""
TEXT_AUDIO = 2
"""Track both text and audio outputs."""