Overview
Pydantic AI emits OpenTelemetry (OTel) spans for agent runs, model calls, and tool execution. By configuring an OTLP exporter, you can send those traces directly to Laminar.
If you want more detail on OTel exporters, endpoints, or self-hosted settings, see the OpenTelemetry guide.
Getting Started
1. Install dependencies
pip install "pydantic-ai-slim[openai]" opentelemetry-sdk opentelemetry-exporter-otlp python-dotenv
2. Set environment variables
# .env or environment
LMNR_PROJECT_API_KEY=your-laminar-project-api-key
OPENAI_API_KEY=your-openai-api-key
This example uses the OTLP/gRPC exporter, which Laminar recommends for reliability and performance.
import os
from dotenv import load_dotenv
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.trace import set_tracer_provider
from pydantic_ai import Agent
load_dotenv()
project_api_key = os.getenv("LMNR_PROJECT_API_KEY")
if not project_api_key:
raise RuntimeError("LMNR_PROJECT_API_KEY is not set")
exporter = OTLPSpanExporter(
endpoint="https://api.lmnr.ai:8443/v1/traces",
headers={"authorization": f"Bearer {project_api_key}"},
)
tracer_provider = TracerProvider()
tracer_provider.add_span_processor(BatchSpanProcessor(exporter))
set_tracer_provider(tracer_provider)
Agent.instrument_all()
agent = Agent("openai:gpt-4.1-mini")
result = agent.run_sync("What is the capital of France?")
print(result.output)
The authorization header must be lowercase when using the gRPC exporter.
Once instrumentation is enabled, Laminar will display traces for each agent run and underlying model/tool calls.