Marketplace pydanticai-docs
Use this skill for requests related to Pydantic AI framework - building agents, tools, dependencies, structured outputs, and model integrations.
git clone https://github.com/aiskillstore/marketplace
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/dougtrajano/pydanticai-docs" ~/.claude/skills/aiskillstore-marketplace-pydanticai-docs && rm -rf "$T"
skills/dougtrajano/pydanticai-docs/SKILL.mdPydantic AI Documentation Skill
Overview
This skill provides guidance for using Pydantic AI - a Python agent framework for building production-grade Generative AI applications. Pydantic AI emphasizes type safety, dependency injection, and structured outputs.
Key Concepts
Agents
Agents are the primary interface for interacting with LLMs. They contain:
- Instructions: System prompts for the LLM
- Tools: Functions the LLM can call
- Output Type: Structured datatype the LLM must return
- Dependencies: Data/services injected into tools and prompts
Models
Pydantic AI supports multiple LLM providers via model identifiers.
All models that supports tool-calling can be used with pydantic-ai-skills.
Tools
Two types of tools:
: Receives@agent.tool
with dependenciesRunContext
: Plain function without context@agent.tool_plain
Toolsets
Collections of tools that can be registered with agents:
: Group multiple toolsFunctionToolset
: Model Context Protocol serversMCPServerTool- Third-party toolsets (ACI.dev, etc.)
Instructions
1. Fetch Full Documentation
For comprehensive information, fetch the complete Pydantic AI documentation: https://ai.pydantic.dev/llms.txt
This contains complete documentation including agents, tools, dependencies, models, and API reference.
2. Quick Reference
Basic Agent Creation
from pydantic_ai import Agent agent = Agent('openai:gpt-5.2') result = agent.run_sync('What is the capital of France?') print(result.output)
Agent with Tools
from pydantic_ai import Agent, RunContext agent = Agent('openai:gpt-5.2', deps_type=str) @agent.tool def get_user_name(ctx: RunContext[str]) -> str: """Get the current user's name.""" return ctx.deps result = agent.run_sync('What is my name?', deps='Alice')
Structured Output
from pydantic import BaseModel from pydantic_ai import Agent class CityInfo(BaseModel): name: str country: str population: int agent = Agent('openai:gpt-5.2', output_type=CityInfo) result = agent.run_sync('Tell me about Paris') print(result.output) # CityInfo(name='Paris', country='France', population=...)
Dependencies
from dataclasses import dataclass from pydantic_ai import Agent, RunContext @dataclass class MyDeps: api_key: str user_id: int agent = Agent('openai:gpt-5.2', deps_type=MyDeps) @agent.tool async def fetch_data(ctx: RunContext[MyDeps]) -> str: # Access dependencies via ctx.deps return f"User {ctx.deps.user_id}"
Using Toolsets
from pydantic_ai import Agent from pydantic_ai.toolsets import FunctionToolset toolset = FunctionToolset() @toolset.tool def search(query: str) -> str: """Search for information.""" return f"Results for: {query}" agent = Agent('openai:gpt-5.2', toolsets=[toolset])
Async Execution
import asyncio from pydantic_ai import Agent agent = Agent('openai:gpt-5.2') async def main(): result = await agent.run('Hello!') print(result.output) asyncio.run(main())
Streaming
from pydantic_ai import Agent agent = Agent('openai:gpt-5.2') async with agent.run_stream('Tell me a story') as response: async for text in response.stream(): print(text, end='', flush=True)
3. Common Patterns
Dynamic Instructions
@agent.instructions async def add_context(ctx: RunContext[MyDeps]) -> str: return f"Current user ID: {ctx.deps.user_id}"
System Prompts
@agent.system_prompt def add_system_info() -> str: return "You are a helpful assistant."
Tool with Retries
@agent.tool(retries=3) def unreliable_api(query: str) -> str: """Call an unreliable API.""" ...
Testing with Override
from pydantic_ai.models.test import TestModel with agent.override(model=TestModel()): result = agent.run_sync('Test prompt')
4. Installation
# Full installation pip install pydantic-ai # Slim installation (specific model) pip install "pydantic-ai-slim[openai]"
5. Best Practices
- Type Safety: Always define
anddeps_type
for better IDE supportoutput_type - Dependency Injection: Use deps for database connections, API clients, etc.
- Structured Outputs: Use Pydantic models for validated, typed responses
- Error Handling: Use
parameter for unreliable toolsretries - Testing: Use
orTestModel
for unit testsoverride()