Skip to content

datarobot_genai.core.telemetry.memory

memory

OpenTelemetry helpers for GenAI memory operations.

truncate_memory_text

truncate_memory_text(value: str, limit: int = _MAX_QUERY_LEN) -> str

Truncate long memory query text for span attributes.

Source code in datarobot_genai/core/telemetry/memory.py
def truncate_memory_text(value: str, limit: int = _MAX_QUERY_LEN) -> str:
    """Truncate long memory query text for span attributes."""
    if len(value) <= limit:
        return value
    return value[: limit - 3] + "..."

trace_memory_operation

trace_memory_operation(operation_name: MemoryOperationName, *, store_name: str, store_id: str | None = None, attributes: dict[str, Any] | None = None) -> Iterator[Span]

Create a GenAI memory span following OTel semantic conventions.

Source code in datarobot_genai/core/telemetry/memory.py
@contextmanager
def trace_memory_operation(
    operation_name: MemoryOperationName,
    *,
    store_name: str,
    store_id: str | None = None,
    attributes: dict[str, Any] | None = None,
) -> Iterator[Span]:
    """Create a GenAI memory span following OTel semantic conventions."""
    with use_nat_workflow_trace_context():
        with _tracer.start_as_current_span(
            operation_name,
            kind=SpanKind.CLIENT,
        ) as span:
            attrs = {
                "gen_ai.operation.name": operation_name,
                "gen_ai.memory.store.name": store_name,
                **(attributes or {}),
            }
            if store_id:
                attrs["gen_ai.memory.store.id"] = store_id
            _set_span_attributes(span, attrs)
            try:
                yield span
                span.set_status(Status(StatusCode.OK))
            except Exception as exc:
                span.set_attribute("error.type", type(exc).__name__)
                span.set_status(Status(StatusCode.ERROR, str(exc)))
                span.record_exception(exc)
                raise