# pllm.roles Python API

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

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

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

Role components make client, preparation, inference, and single-evaluator placement explicit in pipeline configuration. Presence documents API availability, not complete model, security, or deployment coverage; check [implementation status](/sdk/reference/status/) before relying on a path.

## Research context

Relevant design inputs: [DASH](/research/papers/r01-dash/). PLLM's implementation and evidence claims remain independent.

## 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.roles as roles

inference = roles.Inference()
assert inference.component == "pllm/inference"
```

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

## Objects and signatures

### `Inference`

Selects component `pllm/inference` during `online`; it provides `remote-linear-stage-execution` for roles inference.

- Canonical object: `pllm.roles.Inference`
- Kind: `class`
- Signature/type: `__init__(self) -> None`
- Public exports: `pllm.roles.Inference`
- Public members: `descriptor: ComponentDescriptor`; `__init__(self) -> None`; `classmethod describe(cls) -> ComponentDescriptor`

### `InferenceRole`

Immutable `InferenceRole` record carrying `component`, `params` for the workflow where role components make client, preparation, inference, and single-evaluator placement explicit in pipeline configuration.

- Canonical object: `pllm.roles.InferenceRole`
- Kind: `class`
- Signature/type: `constructor not exposed`
- Public exports: `pllm.roles.InferenceRole`
