Secciones de la base de conocimientos ▾

Navegación

▸ Empiece aquí Por roles

Categorías

Herramientas 32
Glosario 12

Herramientas

PydanticAI + Gonka — Agentes de IA tipados por centavos

PydanticAI es un framework de Python para crear agentes de IA del equipo de Pydantic (la biblioteca de validación en la que se sostiene la mitad del ecosistema Python). La principal característica de PydanticAI es la salida tipada: usted describe el resultado como un modelo Pydantic estándar y el framework garantiza que el modelo devolverá exactamente esa estructura, validada y lista para usar. Además de tool calling claro con @agent.tool, inyección de dependencias y soporte para cualquier proveedor.

El problema es el mismo que en todos los frameworks de agentes: el precio de los tokens. Un agente con herramientas mueve contexto en círculos: solicitud → llamada a tool → resultado → nueva solicitud. En una sola tarea se pueden consumir fácilmente varios millones de tokens. Con las tarifas de OpenAI ($2.50–15 por 1M) y Anthropic ($3–15 por 1M), incluso un prototipo se vuelve caro y un entorno de producción con miles de peticiones al día es inasequible.

PydanticAI funciona nativamente con cualquier endpoint compatible con OpenAI mediante las clases OpenAIChatModel y OpenAIProvider. Esto significa que JoinGonka Gateway se conecta en pocas líneas, sin paquetes ni adaptadores separados. Resultado: agentes tipados que funcionan por $0.003 por 1M de tokens de entrada en lugar de los $2.50–15 de OpenAI/Anthropic; cientos y miles de veces más barato.

Inicio rápido: conexión en código

Primero obtén una clave: regístrate en gate.joingonka.ai/register — al registrarte te damos 10M de tokens gratis — y crea una clave jg-xxx en Dashboard → API Keys.

Instalación:

pip install pydantic-ai
# o la versión ligera solo con dependencias de OpenAI:
# pip install "pydantic-ai-slim[openai]"

Un ejemplo mínimo: un agente a través de Gonka. PydanticAI configura un endpoint personalizado mediante OpenAIProvider(base_url=..., api_key=...), que se pasa a OpenAIChatModel:

from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIChatModel
from pydantic_ai.providers.openai import OpenAIProvider

model = OpenAIChatModel(
    "MiniMaxAI/MiniMax-M2.7",
    provider=OpenAIProvider(
        base_url="https://gate.joingonka.ai/v1",
        api_key="jg-tu-clave",
    ),
)

agent = Agent(model)

result = agent.run_sync("Explica en dos frases qué es PoUW")
print(result.output)

Eso es todo; tu agente PydanticAI funciona mediante la red descentralizada Gonka por una fracción del costo. El método run_sync es práctico para scripts; para código asíncrono existe await agent.run(...).

Parámetros del modelo: la ventana de contexto de los modelos de la red es de 200K tokens (200000), la longitud máxima de respuesta a través de Gateway es de hasta 8192 tokens. Puedes limitar la salida mediante la configuración del modelo (OpenAIChatModelSettings(max_tokens=8192)). También están disponibles moonshotai/Kimi-K2.6 y MiniMaxAI/MiniMax-M2.7 (hasta 8192 tokens de salida cada uno) — basta con cambiar el nombre del modelo en el primer argumento de OpenAIChatModel.

La característica de PydanticAI: salida tipada

La razón principal para elegir PydanticAI es el structured output. En lugar de analizar el texto de respuesta con expresiones regulares, defines el resultado como un modelo Pydantic y lo pasas al parámetro output_type. El framework utiliza el tool calling del modelo, obligándolo a devolver datos estrictamente según el esquema, los valida y entrega un objeto listo para usar a través de result.output.

from pydantic import BaseModel
from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIChatModel
from pydantic_ai.providers.openai import OpenAIProvider

model = OpenAIChatModel(
    "MiniMaxAI/MiniMax-M2.7",
    provider=OpenAIProvider(
        base_url="https://gate.joingonka.ai/v1",
        api_key="jg-tu-clave",
    ),
)


class Profile(BaseModel):
    name: str
    role: str
    skills: list[str]


agent = Agent(model, output_type=Profile)

result = agent.run_sync(
    "Extrae datos: Ana es desarrolladora backend, sabe Python, Go y Postgres"
)
print(result.output)
# name='Ana' role='desarrolladora-backend' skills=['Python', 'Go', 'Postgres']
print(result.output.skills)  # ['Python', 'Go', 'Postgres'] — ya es una list[str], no texto

Esto funciona porque ambos modelos de Gonka (Kimi K2.6 y MiniMax M2.7) soportan tool calling nativo — PydanticAI se basa en ello para devolver una estructura JSON válida. Como resultado, obtienes un objeto Python tipado en lugar de una cadena de texto que tendrías que procesar manualmente. Es ideal para extracción de datos, clasificación, relleno de formularios y RAG-pipelines, donde el resultado debe seguir procesándose en el código con un formato estricto.

Comparación de costes

PydanticAI es un framework para agentes y pipelines que trabajan continuamente: extraen datos, llaman a herramientas y procesan flujos de solicitudes. Aquí es donde el costo de los tokens determina si el proyecto seguirá siendo un prototipo o llegará a producción. Comparemos cargas típicas:

EscenarioTokensOpenAI / AnthropicJoinGonka Gonka
Extracción de estructura de un documento~3K$0.008 — $0.045~$0.000014
Agente con tool calling (un ciclo)~15K$0.04 — $0.22~$0.00007
RAG-pipeline (1000 peticiones/día)~5M/día$12 — $75/día~$0.024/día
Agente en producción (100K peticiones/día)~500M/día$1,250 — $7,500/día~$2.40/día

La diferencia es de cientos y miles de veces. Para un prototipo, significa que los 10M de tokens gratuitos alcanzan para cientos de ejecuciones del agente. Para producción, que procesa cientos de miles de solicitudes al día, el ahorro es de decenas de miles de dólares al mes, usando el mismo código de PydanticAI, simplemente configurando un base_url diferente.

Una clave jg-xxx y un saldo funcionan tanto para el formato OpenAI (/v1) como para el formato Anthropic (/v1/messages), pero para PydanticAI basta con el endpoint compatible con OpenAI mostrado arriba.

Tool calling y selección de modelos

La segunda característica clave de PydanticAI son las herramientas. Una función se puede registrar utilizando el decorador @agent.tool_plain (sin contexto) o @agent.tool (con acceso a RunContext e inyección de dependencias). El modelo decide por sí mismo cuándo llamar a la herramienta, recibe el resultado y continúa el razonamiento:

import random
from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIChatModel
from pydantic_ai.providers.openai import OpenAIProvider

model = OpenAIChatModel(
    "MiniMaxAI/MiniMax-M2.7",
    provider=OpenAIProvider(
        base_url="https://gate.joingonka.ai/v1",
        api_key="jg-tu-clave",
    ),
)

agent = Agent(
    model,
    instructions="Eres un asistente. Usa herramientas cuando sea necesario.",
)


@agent.tool_plain
def roll_dice() -> str:
    """Lanza un dado de seis caras y devuelve el resultado."""
    return str(random.randint(1, 6))


@agent.tool_plain
def calculator(expression: str) -> str:
    """Calcula una expresión matemática."""
    return str(eval(expression))


result = agent.run_sync("Lanza el dado y multiplica el resultado por 7")
print(result.output)

Como el tool calling en Gonka es nativo, las herramientas se invocan de forma fiable, sin el frágil análisis de respuestas de texto. Todo el ciclo (solicitud → llamada a tool → respuesta final) cuesta alrededor de $0.00007 a través de Gonka frente a $0.04–0.22 con OpenAI/Anthropic.

Qué modelo elegir: moonshotai/Kimi-K2.6 — potente en codificación y razonamientos complejos, salida de hasta 8192 tokens. MiniMaxAI/MiniMax-M2.7 — para diálogos largos y tareas equilibradas, salida de hasta 8192 tokens. Ambos están disponibles ahora mismo con una sola clave: solo cambia la cadena del modelo. Herramientas similares: LangChain para cadenas y RAG, LlamaIndex para indexación de datos.

PydanticAI + Gonka = agentes de IA tipados en Python por centavos. Structured output en modelos Pydantic, tool calling nativo, inyección de dependencias — todo mediante OpenAIChatModel + OpenAIProvider con una única base_url. Costo: desde $0.003 por 1M de tokens en lugar de $2.50–15 en OpenAI y Anthropic.

¿Quieres saber más?

Explora otras secciones o empieza a ganar GNK ahora mismo.

Obtener 10M de tokens gratuitos →