Take full control of OpenTelemetry. The getting started pages coverDocumentation Index
Fetch the complete documentation index at: https://arize-ax.mintlify.dev/docs/llms.txt
Use this file to discover all available pages before exploring further.
register() and OpenInference integrations — this page is for when you need more: batch processing for production, routing spans to multiple projects, or configuring resource attributes directly via the OpenTelemetry SDK.
OpenInference Instrumentation Packages
OpenInference provides auto-instrumentors for popular frameworks. Install the package for your provider, call.instrument(), and every call is traced automatically.
Python packages
Python packages
| Package | Description |
|---|---|
openinference-semantic-conventions | Semantic conventions for tracing LLM apps |
openinference-instrumentation-openai | OpenAI SDK |
openinference-instrumentation-anthropic | Anthropic SDK |
openinference-instrumentation-langchain | LangChain |
openinference-instrumentation-llama-index | LlamaIndex |
openinference-instrumentation-bedrock | AWS Bedrock |
openinference-instrumentation-mistralai | MistralAI |
openinference-instrumentation-dspy | DSPy |
openinference-instrumentation-crewai | CrewAI |
openinference-instrumentation-litellm | LiteLLM |
openinference-instrumentation-groq | Groq |
openinference-instrumentation-instructor | Instructor |
openinference-instrumentation-haystack | Haystack |
openinference-instrumentation-guardrails | Guardrails AI |
openinference-instrumentation-vertexai | VertexAI |
JavaScript packages
JavaScript packages
| Package | Description |
|---|---|
@arizeai/openinference-semantic-conventions | Semantic conventions |
@arizeai/openinference-core | Core utility functions |
@arizeai/openinference-instrumentation-openai | OpenAI SDK |
@arizeai/openinference-instrumentation-langchain | LangChain.js |
@arizeai/openinference-vercel | Vercel AI SDK |
register() wires these up for most apps — but when you need more control over the tracer itself, configure OpenTelemetry directly:
Configure the OTel Tracer Directly
Pick the endpoint for your data region. The code below uses the US endpoint. For other regions, replace the
Not sure which region you’re in? Check the app subdomain you log in to:
endpoint value:| Region | Endpoint URL |
|---|---|
| US (default) | https://otlp.arize.com/v1 |
| EU | https://otlp.eu-west-1a.arize.com/v1 |
| CA | https://otlp.ca-central-1a.arize.com/v1 |
app.arize.com (US), app.eu-west-1a.arize.com (EU), or app.ca-central-1a.arize.com (CA).- Python
- JS/TS
Key Concepts
- Resource attributes describe the source of telemetry (service, model, environment). Set once on the TracerProvider.
- Span attributes describe a single span. Set per-span in your code.
- Span processors filter, batch, and perform operations on spans before export.
model_idas a resource attribute maps to the project name in Arize AX.
Batch vs Simple Span Processor
A span processor controls when and how spans are exported. Choose based on your environment:| Property | BatchSpanProcessor | SimpleSpanProcessor |
|---|---|---|
| Best for | Production & staging | Local debugging, demos, CI |
| Export behavior | Async, in batches | Each span immediately (sync) |
| Impact on latency | Low — work done off the request path | Higher — export blocks the request |
| Throughput | High, optimized for volume | Low, can bottleneck under load |
| Reliability on exit | Requires force_flush() / shutdown() | Spans exported immediately |
| Visibility speed | Slight delay (buffering) | Immediate |
| Failure surfacing | Export failures logged in background | Failures raised inline |
| Tuning | Configurable (batch size, delay, timeouts) | Minimal |
Get the Current Span
Access the current span at any point to enrich it with additional information:- Python
- JS/TS
Route Spans to Multiple Projects
To route traces from one application to multiple Arize spaces or projects, useregister_with_routing from arize-otel:
register_with_routing uses ARIZE_API_KEY from your environment if api_key isn’t passed. Both space_id and project_name must be set inside set_routing_context — otherwise routing won’t be applied.Python-only today. For JS/TS apps or more complex routing (e.g., by span attribute), route at the OTel Collector layer — see OTEL Collector deployment patterns.arize-space-id from inbound request metadata — avoids redeploying the collector each time a new space is added.