Skip to main content

Arize Phoenix logo
arize-phoenix-otel

PyPI Version Documentation

Provides a lightweight wrapper around OpenTelemetry primitives with Phoenix-aware defaults. Phoenix OTEL also gives you access to tracing decorators for common GenAI patterns.

Features

arize-phoenix-otel simplifies OpenTelemetry configuration for Phoenix users by providing:

  • Phoenix-aware defaults for common OpenTelemetry primitives
  • Automatic configuration from environment variables
  • Drop-in replacements for OTel classes with enhanced functionality
  • Simplified tracing setup with the register() function
  • Tracing decorators for GenAI patterns

Key Benefits

  • Zero Code Changes: Enable auto_instrument=True to automatically instrument AI libraries
  • Production Ready: Built-in batching and authentication
  • Phoenix Integration: Seamless integration with Phoenix Cloud and self-hosted instances
  • OpenTelemetry Compatible: Works with existing OpenTelemetry infrastructure
  • Server Version Independent: Versioned separately from the Phoenix server — any recent arize-phoenix-otel works with any Phoenix server version, with no version pairing to track (traces are sent over OTLP using OpenInference semantic conventions, both backward compatible)

These defaults are aware of environment variables you may have set to configure Phoenix:

  • PHOENIX_COLLECTOR_ENDPOINT
  • PHOENIX_PROJECT_NAME
  • PHOENIX_CLIENT_HEADERS
  • PHOENIX_API_KEY
  • PHOENIX_GRPC_PORT

Installation

Install via pip:

pip install arize-phoenix-otel

Quick Start

Recommended: Enable automatic instrumentation to trace your AI libraries with zero code changes:

from phoenix.otel import register

# Recommended: Automatic instrumentation + production settings
tracer_provider = register(
    auto_instrument=True,  # Auto-trace OpenAI, LangChain, LlamaIndex, etc.
    batch=True,  # Production-ready batching
    project_name="my-app",  # Organize your traces
)

That's it! All openinference-* AI libraries are now automatically traced and sent to Phoenix.

Note: auto_instrument=True only works if the corresponding OpenInference instrumentation libraries are installed. For example, to automatically trace OpenAI calls, you need openinference-instrumentation-openai installed:

pip install openinference-instrumentation-openai
pip install openinference-instrumentation-langchain  # For LangChain
pip install openinference-instrumentation-llama-index  # For LlamaIndex

See the OpenInference repository for the complete list of available instrumentation packages.

Authentication

export PHOENIX_API_KEY="your-api-key"
# Or pass directly to register()
tracer_provider = register(api_key="your-api-key")

Endpoint Configuration

Configure where to send your traces:

Environment Variables (Recommended):

export PHOENIX_COLLECTOR_ENDPOINT="https://your-phoenix-instance.com"
export PHOENIX_PROJECT_NAME="my-project"

Direct Configuration:

tracer_provider = register(
    endpoint="http://localhost:6006/v1/traces",  # HTTP endpoint
    protocol="grpc",  # Or force gRPC protocol
)

Usage Examples

Simple Setup

from phoenix.otel import register

# Basic setup - sends to localhost
tracer_provider = register(auto_instrument=True)

Production Configuration

tracer_provider = register(
    project_name="my-production-app",
    auto_instrument=True,  # Auto-trace AI/ML libraries
    batch=True,  # Background batching for performance
    api_key="your-api-key",  # Authentication
    endpoint="https://your-phoenix-instance.com",
)

Manual Configuration

For advanced use cases, use Phoenix OTEL components directly:

from phoenix.otel import TracerProvider, BatchSpanProcessor, HTTPSpanExporter

tracer_provider = TracerProvider()
exporter = HTTPSpanExporter(endpoint="http://localhost:6006/v1/traces")
processor = BatchSpanProcessor(span_exporter=exporter)
tracer_provider.add_span_processor(processor)

Using Decorators

from phoenix.otel import register

tracer_provider = register()

# Get a tracer for manual instrumentation
tracer = tracer_provider.get_tracer(__name__)


@tracer.chain
def process_data(data):
    return data + " processed"


@tracer.tool
def weather(location):
    return "sunny"

Environment Variables

Variable Description Example
PHOENIX_COLLECTOR_ENDPOINT Where to send traces https://your-phoenix-instance.com
PHOENIX_PROJECT_NAME Project name my-llm-app
PHOENIX_API_KEY Authentication key your-api-key
PHOENIX_CLIENT_HEADERS Custom headers Authorization=Bearer token
PHOENIX_GRPC_PORT gRPC port override 4317
PHOENIX_DISCOVER_CONFIG Set to false to disable .env.phoenix discovery false

Credential File Discovery (.env.phoenix)

When a setting is not provided by argument or environment variable, register() looks for a .env.phoenix file in the current working directory — walking up toward the filesystem root and stopping at the first match — and reads PHOENIX_-prefixed keys from it (dotenv format):

# .env.phoenix
PHOENIX_COLLECTOR_ENDPOINT=http://localhost:6006
PHOENIX_API_KEY=your-api-key

Explicit arguments and environment variables always take precedence — the file never overrides anything already set. Set PHOENIX_DISCOVER_CONFIG=false to disable discovery entirely.

Credentials (PHOENIX_API_KEY, PHOENIX_CLIENT_HEADERS, and OTEL_EXPORTER_OTLP_HEADERS) and server location (PHOENIX_COLLECTOR_ENDPOINT, OTEL_EXPORTER_OTLP_ENDPOINT, and PHOENIX_GRPC_PORT) are each resolved as a group from one source tier. This prevents a file-only gRPC port from rewriting a process-provided endpoint. If explicit or process credentials are paired with an endpoint from .env.phoenix, Phoenix OTel warns once and continues without logging credential values.

Discovery results, including a missing file, are cached per working directory for the process lifetime. Long-running processes can call phoenix.otel.settings.clear_env_file_cache() after creating or changing the file.

Coding Agent Skill

The Phoenix repo includes a phoenix-tracing skill that teaches coding agents (Claude Code, Cursor, etc.) how to instrument LLM applications with OpenInference tracing. Install it with:

npx skills add Arize-ai/phoenix --skill phoenix-tracing

Documentation

Community

Join our community to connect with thousands of AI builders:

  • 🌍 Join our Slack community.
  • 💡 Ask questions and provide feedback in the #phoenix-support channel.
  • 🌟 Leave a star on our GitHub.
  • 🐞 Report bugs with GitHub Issues.
  • 𝕏 Follow us on 𝕏.
  • 💼 Follow us on LinkedIn.
  • 🗺️ Check out our roadmap to see where we're heading next.

Metadata

Release files for arize-phoenix-otel 0.17.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for arize-phoenix-otel 0.17.2
File Size Uploaded
arize_phoenix_otel-0.17.2.tar.gz 28.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for arize-phoenix-otel 0.17.2
File Interpreter ABI Platform
arize_phoenix_otel-0.17.2-py3-none-any.whl Python 3 none any Details

Total release size: 51.2 kB

Release files / arize_phoenix_otel-0.17.2.tar.gz

Download URL arize_phoenix_otel-0.17.2.tar.gz
Size 28.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4e256bb205ddb216328372b17508f3695d011655d7b1f477f37aabe5b9a10109
BLAKE2b-256 checksum
How to use checksums
37d48f7d441363c02b782add0a7a85ba7436831f2ccc2d515b36b17a8639310f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release files / arize_phoenix_otel-0.17.2-py3-none-any.whl

Download URL arize_phoenix_otel-0.17.2-py3-none-any.whl
Size 22.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d4d87b98d67fa928d954cdbb1d0bf9f35f79a2c6572ae7aca1f6c430510f2f99
BLAKE2b-256 checksum
How to use checksums
574801f01c14541a41c88c7ec0b17237540908ebc1fa72420636517104ea866f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page