Pydantic AI Tracing

Pydantic AI is a Python agent framework designed to make it less painful to build production-grade applications with Generative AI. Built by the team behind Pydantic, it provides a clean, type-safe way to build AI agents with structured outputs, tool integration, and multi-agent workflows.

Arize AX provides first-class support for instrumenting Pydantic AI agents with comprehensive observability for input/output messages, structured outputs, tool usage, and complex multi-agent workflows. Monitor your AI agents in production with detailed tracing and performance analytics.

We follow a standardized format for trace data structure using OpenInference, our open source package based on OpenTelemetry. The package we use is arize-otel, a lightweight convenience package to set up OpenTelemetry and send traces to Arize AX.

Quick Start: Pydantic AI Instrumentation

Installation & Setup

!pip install openinference-instrumentation-pydantic-ai pydantic-ai opentelemetry-sdk opentelemetry-exporter-otlp opentelemetry-api
# Import open-telemetry dependencies
import os
from opentelemetry import trace as trace_api
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk import trace as trace_sdk
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from openinference.instrumentation.pydantic_ai import OpenInferenceSpanProcessor
from opentelemetry.sdk.resources import Resource

# Set the Space and API keys as headers for authentication
headers = f"space_id={ARIZE_SPACE_ID},api_key={ARIZE_API_KEY}"
os.environ['OTEL_EXPORTER_OTLP_TRACES_HEADERS'] = headers

# Set resource attributes for the name and version for your application
trace_attributes = {
  "model_id": "your project name", # This is how your project will show up in Arize AX
  "model_version": "v1", # You can filter your spans by project version in Arize AX
}

# Define the desired endpoint URL to send traces
endpoint = "https://otlp.arize.com/v1"

# Set the tracer provider
tracer_provider = trace_sdk.TracerProvider(
  resource=Resource(attributes=trace_attributes)
)
tracer_provider.add_span_processor(OpenInferenceSpanProcessor())
tracer_provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter(endpoint)))
trace_api.set_tracer_provider(tracer_provider=tracer_provider)

Start using your Pydantic AI agents and monitor traces in Arize AX. For advanced examples, explore our openinference-instrumentation-pydantic-ai examples.

Basic Agent Usage Example

Here's a simple example using Pydantic AI with automatic tracing for structured outputs:

Advanced Pydantic AI Patterns

AI Agents with System Prompts and Tools

Build sophisticated AI agents with custom tools and system prompts:

What gets instrumented

Arize AX provides complete visibility into your Pydantic AI agent operations with automatic tracing of all interactions. With the above setup, Arize captures:

Core Agent Interactions

  • Agent Conversations: Complete conversations between your application and AI models

  • Structured Outputs: Pydantic model validation, parsing results, and type safety

  • Input/Output Tracking: Detailed logging of all agent inputs and generated outputs

Advanced Agent Features

  • Tool Usage: When agents call external tools, their parameters, and responses

  • Multi-Agent Workflows: Complex interactions and data flow between multiple agents

  • System Prompt Tracking: How system prompts influence agent behavior

Performance & Reliability Monitoring

  • Performance Metrics: Response times, token usage, and throughput analytics

  • Error Handling: Validation errors, API failures, retry attempts, and recovery

  • Success Rates: Agent completion rates and quality metrics

Production Insights

  • Usage Patterns: How agents are being used in production

  • Cost Tracking: Token usage and API costs across different models

  • Optimization Opportunities: Identify bottlenecks and improvement areas

Last updated

Was this helpful?