# Enable tracing in your PipelineTask
task = PipelineTask(
    pipeline,
    params=PipelineParams(
        allow_interruptions=True,
        enable_metrics=True,  # Required for some service metrics
    ),
    enable_tracing=True,  # Enables both turn and conversation tracing
    conversation_id="customer-123",  # Optional - will auto-generate if not provided
)
```

## Trace Structure

Pipecat organizes traces hierarchically following the natural structure of conversations, as documented in their [OpenTelemetry guide](https://docs.pipecat.ai/server/utilities/opentelemetry):

```
Conversation (conversation_id)
├── turn
│   ├── stt (Speech-to-Text)
│   ├── llm (Language Model)
│   └── tts (Text-to-Speech)
└── turn
    ├── stt
    ├── llm
    └── tts
```

This structure allows you to track the complete lifecycle of conversations and measure latency for individual turns and services.

## Understanding the Traces

Based on Pipecat's [OpenTelemetry implementation](https://docs.pipecat.ai/server/utilities/opentelemetry), the traces include:

* **Conversation Spans**: Top-level spans with conversation ID and type
* **Turn Spans**: Individual conversation turns with turn number, duration, and interruption status
* **Service Spans**: Detailed service operations with rich attributes:
  * **LLM Services**: Model, input/output tokens, response text, tool configurations, TTFB metrics
  * **TTS Services**: Voice ID, character count, synthesized text, TTFB metrics
  * **STT Services**: Transcribed text, language detection, voice activity detection
* **Performance Metrics**: Time to first byte (TTFB) and processing durations for each service

## Results viewing

Once your Pipecat applications are traced with Opik, you can view the OpenTelemetry traces in the Opik UI. You will see:

* Hierarchical conversation and turn structure as sent by Pipecat
* Service-level spans with the attributes Pipecat includes (LLM tokens, TTS character counts, STT transcripts)
* Performance metrics like processing durations and time-to-first-byte where provided by Pipecat
* Standard OpenTelemetry trace visualization and search capabilities

### Getting Help

* Check the [Pipecat OpenTelemetry Documentation](https://docs.pipecat.ai/server/utilities/opentelemetry) for tracing setup and configuration
* Review the [OpenTelemetry Python Documentation](https://opentelemetry.io/docs/instrumentation/python/) for general OTEL setup
* Visit the [Pipecat GitHub repository](https://github.com/pipecat-ai/pipecat) for framework-specific issues
* Check Opik documentation for trace viewing and OpenTelemetry endpoint configuration

## Further improvements

If you would like to see us improve this integration, simply open a new feature
request on [Github](https://github.com/comet-ml/opik/issues).