> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/guardrails/llms.txt.
> For full documentation content, see https://docs.nvidia.com/nemo/guardrails/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/guardrails/_mcp/server.

# nemoguardrails.tracing.spans

Span models for NeMo Guardrails tracing system.

## Module Contents

### Classes

| Name                                                               | Description                                                |
| ------------------------------------------------------------------ | ---------------------------------------------------------- |
| [`ActionSpan`](#nemoguardrails-tracing-spans-ActionSpan)           | Span for an action execution (internal span).              |
| [`BaseSpan`](#nemoguardrails-tracing-spans-BaseSpan)               | Base span with common fields across all span types.        |
| [`InteractionSpan`](#nemoguardrails-tracing-spans-InteractionSpan) | Top-level span for a guardrails interaction (server span). |
| [`LLMSpan`](#nemoguardrails-tracing-spans-LLMSpan)                 | Span for an LLM API call (client span).                    |
| [`RailSpan`](#nemoguardrails-tracing-spans-RailSpan)               | Span for a guardrail execution (internal span).            |
| [`SpanEvent`](#nemoguardrails-tracing-spans-SpanEvent)             | Event that can be attached to a span.                      |
| [`SpanKind`](#nemoguardrails-tracing-spans-SpanKind)               | -                                                          |
| [`SpanLegacy`](#nemoguardrails-tracing-spans-SpanLegacy)           | Simple span model (v1) for basic tracing.                  |

### Functions

| Name                                                                           | Description                              |
| ------------------------------------------------------------------------------ | ---------------------------------------- |
| [`is_opentelemetry_span`](#nemoguardrails-tracing-spans-is_opentelemetry_span) | Check if an object is a typed span (V2). |

### Data

[`SpanOpentelemetry`](#nemoguardrails-tracing-spans-SpanOpentelemetry)

[`TypedSpan`](#nemoguardrails-tracing-spans-TypedSpan)

### API

```python
class nemoguardrails.tracing.spans.ActionSpan()
```

**Bases:** [BaseSpan](#nemoguardrails-tracing-spans-BaseSpan)

Span for an action execution (internal span).

```python
nemoguardrails.tracing.spans.ActionSpan.to_otel_attributes() -> typing.Dict[str, typing.Any]
```

Convert to OTel attributes.

```python
class nemoguardrails.tracing.spans.BaseSpan()
```

Abstract

**Bases:** `BaseModel`

Base span with common fields across all span types.

```python
nemoguardrails.tracing.spans.BaseSpan._base_attributes() -> typing.Dict[str, typing.Any]
```

Get common attributes for all span types.

```python
nemoguardrails.tracing.spans.BaseSpan.to_otel_attributes() -> typing.Dict[str, typing.Any]
```

abstract

Convert typed fields to legacy OpenTelemetry attributes dictionary.

**Returns:** `Dict[str, Any]`

Dict containing OTel semantic convention attributes.

```python
class nemoguardrails.tracing.spans.InteractionSpan()
```

**Bases:** [BaseSpan](#nemoguardrails-tracing-spans-BaseSpan)

Top-level span for a guardrails interaction (server span).

```python
nemoguardrails.tracing.spans.InteractionSpan.to_otel_attributes() -> typing.Dict[str, typing.Any]
```

Convert to OTel attributes.

```python
class nemoguardrails.tracing.spans.LLMSpan()
```

**Bases:** [BaseSpan](#nemoguardrails-tracing-spans-BaseSpan)

Span for an LLM API call (client span).

```python
nemoguardrails.tracing.spans.LLMSpan.to_otel_attributes() -> typing.Dict[str, typing.Any]
```

Convert to OTel attributes.

```python
class nemoguardrails.tracing.spans.RailSpan()
```

**Bases:** [BaseSpan](#nemoguardrails-tracing-spans-BaseSpan)

Span for a guardrail execution (internal span).

```python
nemoguardrails.tracing.spans.RailSpan.to_otel_attributes() -> typing.Dict[str, typing.Any]
```

Convert to OTel attributes.

```python
class nemoguardrails.tracing.spans.SpanEvent()
```

**Bases:** `BaseModel`

Event that can be attached to a span.

```python
class nemoguardrails.tracing.spans.SpanKind
```

**Bases:** `enum.Enum`

```python
class nemoguardrails.tracing.spans.SpanLegacy()
```

**Bases:** `BaseModel`

Simple span model (v1) for basic tracing.

```python
nemoguardrails.tracing.spans.is_opentelemetry_span(
    span: typing.Any
) -> bool
```

Check if an object is a typed span (V2).

**Parameters:**

Object to check

**Returns:** `bool`

True if the object is a typed span, False otherwise

```python
nemoguardrails.tracing.spans.SpanOpentelemetry = TypedSpan
```

```python
nemoguardrails.tracing.spans.TypedSpan = Union[InteractionSpan, RailSpan, ActionSpan, LLMSpan]
```