Skip to main content
Article
ai-agentspydantictype-safetytool-calling

Pydantic AI

Leverage Pydantic to build reliable, predictable AI agents with type-safe development. Define structured outputs and robust tool calling schemas to ensure data integrity and reduce runtime errors in complex AI applications.

intermediate15 min3 steps
The play
  1. Install Pydantic
    Ensure Pydantic is installed in your Python environment to begin defining structured data.
  2. Define Agent Output Structure
    Use Pydantic `BaseModel` to define the expected structure for your agent's decisions or outputs. This ensures predictable and parsable responses from the agent.
  3. Define Tool Input Schemas
    For each external tool or API your agent can interact with, define a Pydantic `BaseModel` to represent its input parameters. This guarantees that tool arguments are correctly typed and validated before execution.
Starter code
from pydantic import BaseModel, Field
from typing import Dict, Any

class AgentAction(BaseModel):
    action_type: str = Field(description="The type of action the agent intends to perform.")
    tool_name: str | None = Field(default=None, description="The name of the tool to call, if action_type is 'tool_call'.")
    parameters: Dict[str, Any] = Field(default_factory=dict, description="Parameters for the chosen action or tool.")
    reasoning: str = Field(description="The agent's thought process leading to this action.")

# Example of how an agent's output might be validated:
try:
    action = AgentAction(action_type="tool_call", tool_name="search", parameters={"query": "Pydantic AI"}, reasoning="Need to find information.")
    print("Valid AgentAction:", action.model_dump_json(indent=2))
except Exception as e:
    print(f"Validation error: {e}")
Pydantic AI — Action Pack