Skip to main content
Pydantic AI emits OpenTelemetry spans natively. The OpenInference Pydantic AI package adds a span processor that maps those spans onto the OpenInference conventions before they’re exported, so AgentMark reads model calls, tool calls, and agent runs as normalized traces. Pydantic AI is a Python framework.

Setup

1

Install the span processor and the OTLP exporter

pip install openinference-instrumentation-pydantic-ai pydantic-ai \
  opentelemetry-sdk opentelemetry-exporter-otlp-proto-http
2

Point the exporter at AgentMark and enable instrumentation

Add the OpenInferenceSpanProcessor ahead of the OTLP exporter, and enable instrumentation on each agent with InstrumentationSettings. Use your AgentMark API key and app id from project settings.
from pydantic_ai import Agent
from pydantic_ai.models.instrumented import InstrumentationSettings
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from openinference.instrumentation.pydantic_ai import OpenInferenceSpanProcessor

provider = TracerProvider()
# Maps Pydantic AI's native spans onto the OpenInference conventions.
provider.add_span_processor(OpenInferenceSpanProcessor())
provider.add_span_processor(
    BatchSpanProcessor(
        OTLPSpanExporter(
            endpoint="https://api.agentmark.co/v1/traces",
            headers={
                "Authorization": "<YOUR_API_KEY>",  # raw key, no "Bearer" prefix
                "X-Agentmark-App-Id": "<YOUR_APP_ID>",
            },
        )
    )
)

instrumentation = InstrumentationSettings(version=2, tracer_provider=provider)
agent = Agent("openai:gpt-4o", instrument=instrumentation)
3

Run your agent

Run your agent as usual. Each model call, tool call, and agent run arrives in AgentMark as a span, grouped into a trace. See Traces and logs.

What AgentMark captures

After the span processor maps them, Pydantic AI spans use the OpenInference attribute conventions — model, token usage, input and output messages, tool calls, settings, and span kind are all mapped onto AgentMark’s normalized trace fields, and token counts feed cost tracking. See OpenInference for the full attribute mapping.

Next steps

OpenInference

How AgentMark reads OpenInference attributes

Traces and logs

Explore traces once they arrive

Have questions?

Reach out any time: