Skip to Content

OpenInference

OpenInference instrumentors (the ones behind Arize Phoenix) work with Rius directly: they emit standard OpenTelemetry spans, so they only need an OTLP exporter pointed at the ingest endpoint.

Using Python? The Rius SDK ships these same instrumentors as extras and wires the exporter, privacy controls, and reliability behavior for you. This page is for running OpenInference without the SDK.

Wiring an instrumentor

from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter from openinference.instrumentation.openai import OpenAIInstrumentor provider = TracerProvider() provider.add_span_processor( BatchSpanProcessor( OTLPSpanExporter( endpoint="https://ingest.eu.console.rius-glassflow.com/v1/traces", headers={"Authorization": "Bearer <your API key>"}, ) ) ) OpenAIInstrumentor().instrument(tracer_provider=provider)

Note the exporter class: otlp.proto.http (protobuf over HTTP). The endpoint accepts no OTLP/JSON and no gRPC.

What gets captured

Everything. openinference.span.kind drives the span taxonomy (LLM, TOOL, CHAIN, …), input.value / output.value are captured as span content, and the LLM detail attributes (llm.model_name, llm.provider, llm.token_count.*, llm.input_messages.*) are normalized into their gen_ai.* equivalents at ingest, so OpenInference-instrumented calls get model analytics, token usage, and server-side cost like native spans. On streamed OpenAI calls the instrumentor’s first-token event is likewise normalized to gen_ai.first_token, feeding time-to-first-token.

Details of the mapping, including the native-wins precedence rule, are in the supported-conventions matrix.

Next steps

Last updated on