Skip to main content
LangSmith can capture traces generated by Pipecat using OpenTelemetry instrumentation. This guide shows you how to automatically capture traces from your Pipecat voice AI pipelines and send them to LangSmith for monitoring and analysis. For a complete implementation, see the demo repository.

Installation

Install the required packages:
If you plan to use the advanced audio recording features, also install: pip install scipy numpy

Quickstart tutorial

Follow this step-by-step tutorial to create a voice AI agent with Pipecat and LangSmith tracing. You’ll build a complete working example by copying and pasting code snippets.

Step 1: Set up your environment

Create a .env file in your project directory:
.env

Step 2: Download the span processor

Add the custom span processor file that enables LangSmith tracing. Save it as langsmith_processor.py in your project directory.
The span processor enriches Pipecat’s OpenTelemetry spans with LangSmith-compatible attributes so your traces display properly in LangSmith.Key functions:
  • Converts Pipecat span types (stt, llm, tts, turn, conversation) to LangSmith format.
  • Adds gen_ai.prompt.* and gen_ai.completion.* attributes for message visualization.
  • Tracks and aggregates conversation messages across turns.
  • Handles audio file attachments (for advanced usage).
The processor automatically activates when you import it in your code.

Step 3: Create your voice agent file

Create a new file called agent.py and add the following code. We’ll build it section by section so you can copy and paste each part.

Part 1: Import dependencies

Part 2: Define the main function

Part 3: Add the entry point

Step 4: Run your agent

Run your voice agent:
Speak to the agent through your microphone. All traces will automatically appear in LangSmith. Here is an example of a trace in LangSmith: LangSmith trace with Pipecat. View the complete agent.py code.

Advanced usage

Custom metadata and tags

You can add custom metadata to your traces using span attributes:

Recording and attaching audio to traces

You can capture audio from your voice conversations and attach it to traces in LangSmith. This allows you to listen to the actual audio alongside the transcriptions and AI responses.

Full conversation recording

See the AudioRecorder implementation which handles sample rate mismatches between input (microphone) and output (TTS) audio. Capture all audio from start to finish and attach it to the conversation span:

Per-turn recording

See the TurnAudioRecorder implementation which captures user speech and AI responses separately for each turn. Capture separate audio snippets for each conversational turn, with user speech and AI responses saved as individual files:

Troubleshooting

Spans not appearing in LangSmith

If traces aren’t showing up in LangSmith:
  1. Verify environment variables: Ensure OTEL_EXPORTER_OTLP_ENDPOINT and OTEL_EXPORTER_OTLP_HEADERS are set correctly in your .env file.
  2. Check API key: Confirm your LangSmith API key has write permissions.
  3. Verify import: Make sure you’re importing span_processor from langsmith_processor.py.
  4. Check .env loading: Ensure load_dotenv() is called before importing Pipecat components.

Messages not showing correctly

If conversation messages aren’t displaying properly:
  1. Check span processor: Verify langsmith_processor.py is in your project directory and imported correctly.
  2. Verify conversation ID: Ensure you’re setting a unique conversation_id in PipelineTask.
  3. Enable turn tracking: Make sure enable_turn_tracking=True is set in PipelineTask.

Audio not working

If your microphone or speakers aren’t working:
  1. Check permissions: Ensure your terminal/IDE has microphone access.
  2. Test audio devices: Verify your microphone and speakers work in other applications.
  3. VAD settings: Try adjusting SileroVADAnalyzer() settings if speech isn’t being detected.
  4. Check services: Ensure OpenAI API key is valid and has access to Whisper and TTS.

Import errors

If you’re getting import errors:
  1. Install dependencies: Run pip install langsmith "pipecat-ai[whisper,openai,local]" opentelemetry-exporter-otlp python-dotenv.
  2. Check Python version: Ensure you’re using Python 3.9 or higher.
  3. Verify langsmith_processor: Make sure langsmith_processor.py is downloaded and in the same directory as your agent.py.

Performance issues

If responses are slow:
  1. Use faster models: Switch to gpt-4.1-mini for the LLM (already in the tutorial).
  2. Check network: Ensure stable internet connection for API calls.
  3. Local STT: Consider using local Whisper instead of API-based services.

Advanced: Audio recording troubleshooting

For issues with the advanced audio recording features, see the complete demo documentation.