arize_ax OpenTelemetry exporter, so traces — including LLM calls, tool invocations, and full input/output payloads — flow into Arize AX without any extra instrumentation code.
This integration is driven entirely by a YAML configuration file in the NeMo Agent Toolkit repository. There is no standalone Python script to run; you launch your workflow with the toolkit’s
nat CLI and the toolkit handles exporter setup.Prerequisites
- Python 3.11+
uvinstalled- An Arize AX account (sign up)
- The NeMo Agent Toolkit repository cloned locally
Launch Arize AX
- Sign in to your Arize AX account.
- From Space Settings, copy your Space ID and API Key. You will set them as
ARIZE_SPACE_IDandARIZE_API_KEYbelow.
Install
Install the OpenTelemetry extra to enable thearize_ax exporter:
Configure credentials
Setup tracing
Add thearize_ax exporter to your workflow’s YAML configuration file:
Run NeMo Agent Toolkit
From the root of the NeMo Agent Toolkit repository, install the example workflow and run it with your Arize AX configuration:Expected output
Verify in Arize AX
- Open your Arize AX space and select project
simple_calculator(or whatever value you set forARIZE_PROJECT_NAME). - You should see a new trace within ~30 seconds containing the workflow’s root span and nested LLM / tool spans with prompts, responses, and token usage attached.
- If no traces appear, see Troubleshooting.
Troubleshooting
- No
Started exporter 'arize_ax'log line. The OpenTelemetry extra isn’t installed in the active environment. Re-runuv pip install "nvidia-nat[opentelemetry]"and confirm the YAML_typeis exactlyarize_ax. - No traces in Arize AX. Confirm
ARIZE_SPACE_IDandARIZE_API_KEYare exported in the same shell that runsnat run. The YAML uses${ARIZE_SPACE_ID}/${ARIZE_API_KEY}substitution, so unset variables resolve to empty strings and the exporter silently fails to authenticate. - EU data residency. Set
use_eu_region: trueundergeneral.telemetry.tracing.arize_axto route traces to the EU ingest endpoint. - Wrong project in Arize AX. The YAML
project:value wins overARIZE_PROJECT_NAMEunless you use the${ARIZE_PROJECT_NAME:-default}substitution shown above.