pydantic/building-pydantic-ai-agents

Construye agentes de IA con Pydantic AI: herramientas, capacidades (incluyendo carga bajo demanda), salida estructurada, streaming, pruebas y patrones multiagente.

¿Qué es building-pydantic-ai-agents?

Esta habilidad te permite construir agentes de IA utilizando Pydantic AI, una biblioteca de Python diseñada para crear agentes robustos con salida estructurada y soporte nativo para streaming, herramientas y capacidades modulares. Es especialmente útil cuando el usuario menciona Pydantic AI, importa `pydantic_ai` o solicita construir un agente de IA, añadir herramientas o capacidades, diferir la carga de capacidades, transmitir salidas, definir agentes desde YAML o probar el comportamiento del agente. Pydantic AI se integra con modelos de lenguaje como OpenAI, Anthropic, Gemini y Ollama, y permite definir agentes con tipos de resultado estructurados, dependencias y herramientas personalizadas. La habilidad cubre patrones avanzados como carga diferida de herramientas (por ejemplo, usando `_get_tool_metadata` o `defer_creds`), streaming de salida estructurada, pruebas unitarias con `pytest` y `PDU` (Pydantic Data Utilities), y orquestación de múltiples agentes que trabajan juntos. Es compatible con entornos como Claude Code, Cursor y Codex, y su documentación oficial incluye ejemplos prácticos para cada funcionalidad.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/pydantic/skills/tree/main/skills/building-pydantic-ai-agents

Installed? Explore more Productividad y colaboración skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace building-pydantic-ai-agents?

Construye agentes de IA con Pydantic AI: herramientas, capacidades (incluyendo carga bajo demanda), salida estructurada, streaming, pruebas y patrones multiagente. Úsalo cuando el usuario mencione Pydantic AI, importe pydantic_ai o solicite construir un agente de IA, añadir herramientas/capacidades, diferir la carga de capacidades, transmitir salidas, definir agentes desde YAML o probar el comportamiento del agente.

Introducción

Pydantic AI es una biblioteca de Python para construir agentes de inteligencia artificial basados en tipos. Proporciona herramientas para:

  • Definir agentes con modelos de lenguaje (OpenAI, Anthropic, Gemini, Ollama, etc.)
  • Añadir herramientas y capacidades personalizadas
  • Generar salida estructurada con tipos de datos de Pydantic
  • Transmitir resultados parciales
  • Probar agentes de forma eficiente

Instalación

pip install pydantic-ai

Uso básico

from pydantic_ai import Agent

agent = Agent(
    'openai:gpt-4o',
    system_prompt='Responde de manera concisa y útil.',
)

result = agent.run_sync('¿Cuál es la capital de Francia?')
print(result.data)

Salida estructurada

from pydantic import BaseModel
from pydantic_ai import Agent

class Ciudad(BaseModel):
    nombre: str
    pais: str
    poblacion: int

agent = Agent('openai:gpt-4o', result_type=Ciudad)

result = agent.run_sync('La capital de Francia')
print(result.data)
#> nombre='París' pais='Francia' poblacion=2161000

Agentes con dependencias

from dataclasses import dataclass
from pydantic_ai import Agent

@dataclass
class MisDeps:
    api_key: str
    
agent = Agent('openai:gpt-4o', deps_type=MisDeps)

@agent.tool
def obtener_tiempo(ctx: RunContext[MisDeps], ubicacion: str) -> str:
    # Usa ctx.deps.api_key para autenticación
    return f"Usuario {ubicacion} tiene tiempo soleado"

result = agent.run_sync(
    '¿Cuál es el tiempo en Madrid?',
    deps=MisDeps(api_key='clave-secreta')
)

Capacidades y herramientas con carga bajo demanda

Puedes diferir la carga de herramientas usando tuplas o metadatos:

from pydantic_ai import Agent

agent = Agent('openai:gpt-4o', tools=['tool_a', 'tool_b'], defer_creds=True)

@agent.tool
def tool_a(ctx: RunContext[str]) -> str:
    return "Herramienta A ejecutada"

O mediante metadatos de herramientas:

from pydantic_ai.tools import ToolMetadata

@agent.tool
def tool_b(ctx: RunContext[str]) -> str:
    return "Herramienta B ejecutada"

tool_b._get_tool_metadata = lambda: ToolMetadata(name="tool_b", description="...")

Streaming de resultados estructurados

async with agent.run_stream('Cuéntame sobre Francia') as result:
    async for partial in result.stream():
        print(partial)

Pruebas con Pydantic AI

Usa AgentTester o ejecuta en modo prueba:

import pytest
from pydantic_ai import Agent

agent = Agent('openai:gpt-4o')

@pytest.mark.anyio
def test_saludo():
    result = agent.test_run_sync('Hola')
    assert 'hola' in result.data.lower()

Definir agentes desde YAML

# agent.yaml
name: asistente_personal
model: openai:gpt-4o
system_prompt: Eres un asistente útil.
tools:
  - nombre: obtener_hora
    descripción: Obtener la hora actual
import yaml
from pydantic_ai import Agent

with open('agent.yaml') as f:
    config = yaml.safe_load(f)

agent = Agent(config['model'], system_prompt=config['system_prompt'])
# Luego añadir herramientas según el YAML...

Patrones multiagente

Puedes combinar varios agentes para tareas complejas:

class AgenteInvestigador(Agent): ...
class AgenteEscritor(Agent): ...

investigador = AgenteInvestigador('openai:gpt-4o')
escritor = AgenteEscritor('openai:gpt-4o')

# Orquestar flujo
resultado_investigacion = investigador.run_sync('Investiga sobre IA')
articulo = escritor.run_sync(f'Escribe un artículo basado en: {resultado_investigacion.data}')

Recursos adicionales


Esta habilidad se usa cuando el usuario menciona Pydantic AI, importa pydantic_ai o solicita construir un agente de IA, añadir herramientas/capacidades, diferir carga de capacidades, transmitir salidas, definir agentes desde YAML o probar comportamiento.

Skills relacionados