# pllm.components Python API

Public objects, practical usage, and research context for pllm.components.

[View canonical HTML](https://pllm.run/sdk/reference/python/pllm/components/)

Document ID: `pllm.docs.reference.python.pllm.components`  
Release: `0.1.0`

The component registry discovers typed built-in capabilities by stable identity and creates concrete implementations only when explicitly requested. Presence documents API availability, not complete model, security, or deployment coverage; check [implementation status](/sdk/reference/status/) before relying on a path.

## Research context

This API is project infrastructure rather than an implementation of one specific paper. Relevant method pages link their primary sources separately.

## Python SDK example

The example performs a bounded offline task and checks an observable result. It does not download a checkpoint or contact a provider.

```python
import pllm.components as components

reference = components.ComponentRef("pllm/cpu")
implementation = components.get(reference.component)
assert implementation.describe().component == "pllm/cpu"
```

API: [`pllm.components`](/sdk/reference/python/pllm/components/#objects-and-signatures)

## Objects and signatures

### `create_component`

Performs the create component operation for the workflow where the component registry discovers typed built-in capabilities by stable identity and creates concrete implementations only when explicitly requested.

- Canonical object: `pllm.components.create_component`
- Kind: `function`
- Signature/type: `create_component(identity: str, params: Mapping[str, Any], *, providers: Iterable[ProviderDescriptor]=...) -> ComponentRef`
- Public exports: `pllm.components.create_component`

### `get`

Performs the get operation for the workflow where the component registry discovers typed built-in capabilities by stable identity and creates concrete implementations only when explicitly requested.

- Canonical object: `pllm.components.get`
- Kind: `function`
- Signature/type: `get(identity: str, *, providers: Iterable[ProviderDescriptor]=...) -> type[ComponentRef]`
- Public exports: `pllm.components.get`

### `get_component`

Return one descriptor by canonical component identity.

- Canonical object: `pllm.components.get_component`
- Kind: `function`
- Signature/type: `get_component(identity: str, *, providers: Iterable[ProviderDescriptor]=...) -> ComponentDescriptor`
- Public exports: `pllm.components.get_component`

### `list_component_classes`

Returns the deterministic public component classes inventory.

- Canonical object: `pllm.components.list_component_classes`
- Kind: `function`
- Signature/type: `list_component_classes(*, providers: Iterable[ProviderDescriptor]=...) -> tuple[type[ComponentRef], ...]`
- Public exports: `pllm.components.list_component_classes`

### `list_components`

Return descriptors in stable component-identity order.

- Canonical object: `pllm.components.list_components`
- Kind: `function`
- Signature/type: `list_components(*, providers: Iterable[ProviderDescriptor]=...) -> tuple[ComponentDescriptor, ...]`
- Public exports: `pllm.components.list_components`

### `ComponentDescriptor`

Static, immutable identity and compatibility metadata for a built-in component.

- Canonical object: `pllm.configuration.ComponentDescriptor`
- Kind: `class`
- Signature/type: `constructor not exposed`
- Public exports: `pllm.components.ComponentDescriptor`
- Public members: `component: str`; `provider: str`; `distribution: str`; `version: str`; `category: str`; `category_version: str`; `lifecycle_phase: str`; `parameter_schema: Mapping[str, Any]`; `capabilities: tuple[str, ...]`; `required_host_features: tuple[str, ...]`; `role_eligibility: tuple[str, ...]`; `artifacts: tuple[Mapping[str, Any], ...]`; `evidence: tuple[Mapping[str, Any], ...]`; `to_dict(self) -> dict[str, Any]`

### `ComponentRef`

Immutable `ComponentRef` record carrying `component`, `params` for the workflow where the component registry discovers typed built-in capabilities by stable identity and creates concrete implementations only when explicitly requested.

- Canonical object: `pllm.configuration.ComponentRef`
- Kind: `class`
- Signature/type: `__init__(self, component: str, params: Mapping[str, Any] \| None=None) -> None`
- Public exports: `pllm.ComponentRef`, `pllm.components.ComponentRef`, `pllm.config.ComponentRef`
- Public members: `component: str`; `params: Mapping[str, Any]`; `__init__(self, component: str, params: Mapping[str, Any] \| None=None) -> None`; `classmethod from_params(cls, params: Mapping[str, Any]) -> ComponentRef`; `get_params(self, deep: bool=True) -> dict[str, Any]`; `with_params(self, **changes: object) -> Self`; `to_spec(self) -> dict[str, Any]`
