DocsOpenTelemetryExample: Pydantic AI
This is a Jupyter notebook

Pydantic AI Integration via OpenTelemetry

%pip install pydantic-ai[logfire]
import os
import base64
 
LANGFUSE_PUBLIC_KEY=""
LANGFUSE_SECRET_KEY=""
LANGFUSE_AUTH=base64.b64encode(f"{LANGFUSE_PUBLIC_KEY}:{LANGFUSE_SECRET_KEY}".encode()).decode()
 
os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"] = "https://cloud.langfuse.com/api/public/otel" # EU data region
# os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"] = "https://us.cloud.langfuse.com/api/public/otel" # US data region
os.environ["OTEL_EXPORTER_OTLP_HEADERS"] = f"Authorization=Basic {LANGFUSE_AUTH}"
 
# your openai key
os.environ["OPENAI_API_KEY"] = ""
import nest_asyncio
nest_asyncio.apply()
import logfire
 
logfire.configure(
    service_name='my_logfire_service',
 
    # Sending to Logfire is on by default regardless of the OTEL env vars.
    send_to_logfire=False,
)
from pydantic_ai import Agent, RunContext
 
roulette_agent = Agent(
    'openai:gpt-4o',
    deps_type=int,
    result_type=bool,
    system_prompt=(
        'Use the `roulette_wheel` function to see if the '
        'customer has won based on the number they provide.'
    ),
)
 
 
@roulette_agent.tool
async def roulette_wheel(ctx: RunContext[int], square: int) -> str:
    """check if the square is a winner"""
    return 'winner' if square == ctx.deps else 'loser'
# Run the agent
success_number = 18
result = roulette_agent.run_sync('Put my money on square eighteen', deps=success_number)
print(result.data)

Example trace

Pydantic AI OpenAI Trace

result = roulette_agent.run_sync('I bet five is the winner', deps=success_number)
print(result.data)

Example trace

Was this page useful?

Questions? We're here to help

Subscribe to updates