Skip to content

pixano.inference.provider

Abstract inference provider interface.

This module defines the abstract interface that all inference providers must implement. Pixano uses this interface to communicate with different backends (pixano-inference, OpenAI, Gemini, local models, etc.) in a uniform way.

InferenceProvider

Bases: ABC

Abstract interface for inference backends.

This is the base class that all inference providers must implement. It defines a common interface for interacting with different inference backends, allowing Pixano to be agnostic to the specific backend used.

Example
from pixano.inference import get_provider

# Get a provider instance
provider = get_provider("pixano-inference", url="http://localhost:8000")

# List available models
models = await provider.list_models()

# Generate masks
result = await provider.generate_masks(input_data)

name abstractmethod property

Provider name (e.g., 'pixano-inference', 'openai', 'gemini').

delete_model(model_name) async

Delete (unload) a model.

Parameters:

Name Type Description Default
model_name str

Name of the model to delete.

required

Raises:

Type Description
TaskNotSupportedError

Model deployment is managed by the server administrator.

Source code in pixano/inference/provider.py
async def delete_model(self, model_name: str) -> None:
    """Delete (unload) a model.

    Args:
        model_name: Name of the model to delete.

    Raises:
        TaskNotSupportedError: Model deployment is managed by the server administrator.
    """
    raise TaskNotSupportedError("Model deployment is managed by the server administrator")

get_capabilities() abstractmethod async

Return what this provider can do.

Returns:

Type Description
ProviderCapabilities

ProviderCapabilities describing supported tasks and features.

Source code in pixano/inference/provider.py
@abstractmethod
async def get_capabilities(self) -> ProviderCapabilities:
    """Return what this provider can do.

    Returns:
        ProviderCapabilities describing supported tasks and features.
    """
    ...

get_server_info() abstractmethod async

Get server information.

Returns:

Type Description
ServerInfo

ServerInfo with version, GPU info, models, readiness.

Source code in pixano/inference/provider.py
@abstractmethod
async def get_server_info(self) -> ServerInfo:
    """Get server information.

    Returns:
        ServerInfo with version, GPU info, models, readiness.
    """
    ...

image_mask_generation(input_data, timeout=60.0) abstractmethod async

Generate masks for an image.

Parameters:

Name Type Description Default
input_data ImageMaskGenerationInput

Input data for mask generation.

required
timeout float

Maximum time to wait for result.

60.0

Returns:

Type Description
ImageMaskGenerationResult

Mask generation result.

Source code in pixano/inference/provider.py
@abstractmethod
async def image_mask_generation(
    self,
    input_data: ImageMaskGenerationInput,
    timeout: float = 60.0,
) -> ImageMaskGenerationResult:
    """Generate masks for an image.

    Args:
        input_data: Input data for mask generation.
        timeout: Maximum time to wait for result.

    Returns:
        Mask generation result.
    """
    ...

image_zero_shot_detection(input_data, timeout=60.0) abstractmethod async

Detect objects in an image using zero-shot detection.

Parameters:

Name Type Description Default
input_data ImageZeroShotDetectionInput

Input data for detection.

required
timeout float

Maximum time to wait for result.

60.0

Returns:

Type Description
ImageZeroShotDetectionResult

Detection result.

Source code in pixano/inference/provider.py
@abstractmethod
async def image_zero_shot_detection(
    self,
    input_data: ImageZeroShotDetectionInput,
    timeout: float = 60.0,
) -> ImageZeroShotDetectionResult:
    """Detect objects in an image using zero-shot detection.

    Args:
        input_data: Input data for detection.
        timeout: Maximum time to wait for result.

    Returns:
        Detection result.
    """
    ...

instantiate_model(provider, config, timeout=60) async

Instantiate (load) a model.

Parameters:

Name Type Description Default
provider str

The model provider name (e.g., "sam2", "transformers").

required
config ModelConfig

Configuration for the model.

required
timeout int

Timeout in seconds for model loading.

60

Raises:

Type Description
TaskNotSupportedError

Model deployment is managed by the server administrator.

Source code in pixano/inference/provider.py
async def instantiate_model(self, provider: str, config: ModelConfig, timeout: int = 60) -> None:
    """Instantiate (load) a model.

    Args:
        provider: The model provider name (e.g., "sam2", "transformers").
        config: Configuration for the model.
        timeout: Timeout in seconds for model loading.

    Raises:
        TaskNotSupportedError: Model deployment is managed by the server administrator.
    """
    raise TaskNotSupportedError("Model deployment is managed by the server administrator")

list_models(task=None) abstractmethod async

List available models, optionally filtered by task.

Parameters:

Name Type Description Default
task InferenceTask | None

Optional task to filter models by.

None

Returns:

Type Description
list[ModelInfo]

List of available models.

Source code in pixano/inference/provider.py
@abstractmethod
async def list_models(self, task: InferenceTask | None = None) -> list[ModelInfo]:
    """List available models, optionally filtered by task.

    Args:
        task: Optional task to filter models by.

    Returns:
        List of available models.
    """
    ...

text_image_conditional_generation(input_data, timeout=60.0) abstractmethod async

Generate text conditioned on images.

Parameters:

Name Type Description Default
input_data TextImageConditionalGenerationInput

Input data for text generation.

required
timeout float

Maximum time to wait for result.

60.0

Returns:

Type Description
TextImageConditionalGenerationResult

Text generation result.

Source code in pixano/inference/provider.py
@abstractmethod
async def text_image_conditional_generation(
    self,
    input_data: TextImageConditionalGenerationInput,
    timeout: float = 60.0,
) -> TextImageConditionalGenerationResult:
    """Generate text conditioned on images.

    Args:
        input_data: Input data for text generation.
        timeout: Maximum time to wait for result.

    Returns:
        Text generation result.
    """
    ...

video_mask_generation(input_data, timeout=120.0) abstractmethod async

Generate masks for video frames.

Parameters:

Name Type Description Default
input_data VideoMaskGenerationInput

Input data for video mask generation.

required
timeout float

Maximum time to wait for result.

120.0

Returns:

Type Description
VideoMaskGenerationResult

Video mask generation result.

Source code in pixano/inference/provider.py
@abstractmethod
async def video_mask_generation(
    self,
    input_data: VideoMaskGenerationInput,
    timeout: float = 120.0,
) -> VideoMaskGenerationResult:
    """Generate masks for video frames.

    Args:
        input_data: Input data for video mask generation.
        timeout: Maximum time to wait for result.

    Returns:
        Video mask generation result.
    """
    ...