Staso Docs
Python SDK

Annotations

Attach metrics to a trace for analytics, eval, and slicing. Latency, quality, pass/fail — anything you want to filter by later.

st.annotate(
    trace_id=trace_id,
    name="latency_ms",
    value=842.0,
    data_type="numeric",
)

Signature

st.annotate(
    *,
    trace_id: str,
    name: str,
    value: float | str | bool,
    data_type: str | AnnotationDataType = AnnotationDataType.NUMERIC,
    span_id: str | None = None,
    comment: str | None = None,
) -> None
ParameterDefaultDescription
trace_idrequiredTrace to annotate.
namerequiredAnnotation key.
valuerequiredType must match data_type.
data_typeNUMERICnumeric, categorical, or boolean.
span_idNoneScope to a specific span.
commentNoneFree-text note.

Data types

TypePythonExample
NUMERICint / float842.0
CATEGORICALstr"good"
BOOLEANboolTrue

Mismatched value/type raises ValueError.

From within a span

with st.span("rerank", kind="chain") as s:
    scores = rerank(candidates)
    s.annotate(name="top_score", value=max(scores), data_type="numeric")

Behavior

  • Fire-and-forget — network errors are logged, never raised.
  • No-op when the SDK is uninitialized.
  • Delivered out-of-band, so they may arrive slightly after the trace.

Next