Skip to main content

Arize AX

AI observability and evaluation for LLM applications, at arize.com.

Arize AX is the hosted platform. If you self-host the open-source tracer, or run it on Phoenix Cloud, see Arize Phoenix instead; the two use different credentials and endpoints.

info

We want to learn how we can make the callbacks better! Meet the LiteLLM founders or join our discord

Pre-Requisites

uv add litellm

Quick Start

import litellm
import os

os.environ["LITELLM_OTEL_V2"] = "true"
os.environ["ARIZE_SPACE_ID"] = ""
os.environ["ARIZE_API_KEY"] = ""
os.environ["ARIZE_PROJECT_NAME"] = "" # recommended: names the project traces land in
# LLM API Keys
os.environ["OPENAI_API_KEY"] = ""

# set arize as a callback, litellm will send the data to arize
litellm.callbacks = ["arize"]

# openai call
response = litellm.completion(
model="gpt-4o",
messages=[
{"role": "user", "content": "Hi 👋 - i'm openai"}
]
)

What Arize renders

Open your Arize project; the trace appears under the project named by ARIZE_PROJECT_NAME. Each request shows up as a chat <model> span under the request root.

The openinference mapper stamps the OpenInference vocabulary onto the LLM-call span alongside the canonical gen_ai.* keys, so Arize reads its native schema without dropping the canonical ones. That covers llm.model_name and llm.provider, the llm.token_count.* usage split, llm.invocation_parameters, the llm.input_messages.* and llm.output_messages.* message arrays when content capture is on, and llm.tools.* for tool definitions. See the full attribute table or the OpenInference spec for the definitive vocabulary.

LiteLLM trace in Arize

Configuration

VariableRequiredNotes
ARIZE_SPACE_IDYesARIZE_SPACE_KEY is the deprecated name and is still read for backward compatibility; prefer ARIZE_SPACE_ID in new configs
ARIZE_API_KEYYes
ARIZE_PROJECT_NAMENoNames the project traces land in. Nothing enforces it and spans are not rejected without it, but set it so your traces are grouped where you expect
ARIZE_ENDPOINTNogRPC endpoint, defaults to https://otlp.arize.com/v1
ARIZE_HTTP_ENDPOINTNoUse instead of ARIZE_ENDPOINT to export over HTTP

Setting ARIZE_ENDPOINT selects gRPC and ARIZE_HTTP_ENDPOINT selects HTTP; if neither is set, litellm uses the gRPC default.

Advanced

Send to Arize and another backend at once

Presets compose, so listing more than one sends the same traces to each destination in that tool's native format:

litellm_settings:
callbacks: ["arize", "langfuse_otel"]

Per-team and per-key credentials

Arize supports per-request credentials, so different teams or keys can log to different Arize spaces without running separate proxies. Configure this from the Admin UI or the API as described in per-key / per-team destinations.

Full OpenTelemetry reference

This page covers the Arize-specific setup. For span attributes, prompt and response capture, metrics, distributed tracing, and which routes are traced, see the OpenTelemetry v2 guide.

Support & Talk to Founders