# Phoenix Tracing: Python Setup
**Setup Phoenix tracing in Python with `arize-phoenix-otel`.**
## Metadata
| Attribute | Value |
| ---------- | ----------------------------------- |
| Priority | Critical - required for all tracing |
| Setup Time | <5 min |
## Quick Start (3 lines)
```python
from phoenix.otel import register
register(project_name="my-app", auto_instrument=True)
```
**Connects to `http://localhost:6006`, auto-instruments all supported libraries.**
## Installation
```bash
pip install arize-phoenix-otel
```
**Supported:** Python 3.10-3.13
## Configuration
### Environment Variables (Recommended)
```bash
export PHOENIX_API_KEY="your-api-key" # Required for Phoenix Cloud
export PHOENIX_COLLECTOR_ENDPOINT="http://localhost:6006" # Or Cloud URL
export PHOENIX_PROJECT_NAME="my-app" # Optional
```
### Python Code
```python
from phoenix.otel import register
tracer_provider = register(
project_name="my-app", # Project name
endpoint="http://localhost:6006", # Phoenix endpoint
auto_instrument=True, # Auto-instrument supported libs
batch=True, # Batch processing (default: True)
)
```
**Parameters:**
- `project_name`: Project name (overrides `PHOENIX_PROJECT_NAME`)
- `endpoint`: Phoenix URL (overrides `PHOENIX_COLLECTOR_ENDPOINT`)
- `auto_instrument`: Enable auto-instrumentation (default: False)
- `batch`: Use BatchSpanProcessor (default: True, production-recommended)
- `protocol`: `"http/protobuf"` (default) or `"grpc"`
## Auto-Instrumentation
Install instrumentors for your frameworks:
```bash
pip install openinference-instrumentation-openai # OpenAI SDK
pip install openinference-instrumentation-langchain # LangChain
pip install openinference-instrumentation-llama-index # LlamaIndex
# ... install others as needed
```
Then enable auto-instrumentation:
```python
register(project_name="my-app", auto_instrument=True)
```
Phoenix discovers and instruments all installed OpenInference packages automatically.
## Batch Processing (Production)
Enabled by default. Configure via environment variables:
```bash
export OTEL_BSP_SCHEDULE_DELAY=5000 # Batch every 5s
export OTEL_BSP_MAX_QUEUE_SIZE=2048 # Queue 2048 spans
export OTEL_BSP_MAX_EXPORT_BATCH_SIZE=512 # Send 512 spans/batch
```
**Link:** https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/
## Verification
1. Open Phoenix UI: `http://localhost:6006`
2. Navigate to your project
3. Run your application
4. Check for traces (appear within batch delay)
## Troubleshooting
**No traces:**
- Verify `PHOENIX_COLLECTOR_ENDPOINT` matches Phoenix server
- Set `PHOENIX_API_KEY` for Phoenix Cloud
- Confirm instrumentors installed
**Missing attributes:**
- Check span kind (see rules/ directory)
- Verify attribute names (see rules/ directory)
## Example
```python
from phoenix.otel import register
from openai import OpenAI
# Enable tracing with auto-instrumentation
register(project_name="my-chatbot", auto_instrument=True)
# OpenAI automatically instrumented
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "Hello!"}]
)
```
## API Reference
- [Python OTEL API Docs](https://arize-phoenix.readthedocs.io/projects/otel/en/latest/)
- [Python Client API Docs](https://arize-phoenix.readthedocs.io/projects/client/en/latest/)