Saltar al contenido
Twexapi
Español
Esc
navegarabrir⌘Jvista previa
En esta página

Pydantic AI

Crea agentes de Twitter API con Pydantic AI para búsqueda tipada de tweets, perfiles, seguidores y acciones en X revisadas a través de TwexAPI MCP.

Crea un agente de Twitter API con Pydantic AI a través del servidor MCP de TwexAPI. Busca tweets, inspecciona perfiles y valida cada entrega durable con un modelo Pydantic. Revisa cada publicación, respuesta, like, follow o mensaje directo propuesto.

¿Por qué usar Pydantic AI con TwexAPI?

Pydantic AI combina llamadas a herramientas del modelo con salida Python tipada. TwexAPI proporciona rutas de Twitter API a través de las herramientas MCP explore y twexapi_request.

Límite Control de Pydantic AI Beneficio para el agente de Twitter
Conexión MCP MCPServerStreamableHTTP Mantén las credenciales en tu proceso
Respuesta final Pydantic output_type Rechaza filas de tweets y cursores mal formados
Acciones de escritura Paso de revisión humana Pausa antes de publicar, responder o seguir
Ciclo de vida de conexión async with agent Reutiliza una sesión MCP en llamadas relacionadas

Usa un agente tipado para búsqueda de tweets o enriquecimiento de perfiles. Mantén cada agente enfocado.

Requisitos previos

  • Python 3.10 o posterior
  • Una API key de TwexAPI
  • Un modelo compatible con Pydantic AI con llamadas a herramientas
  • Una cookie de Twitter o auth_token para acciones de escritura

Instalación

python -m pip install "pydantic-ai[mcp]" python-dotenv

Guarda los secretos fuera del control de versiones.

export TWEXAPI_API_KEY="YOUR_API_KEY"
export ANTHROPIC_API_KEY="YOUR_ANTHROPIC_KEY"

Construir un agente tipado de búsqueda de tweets

Define la entrega final antes de crear el agente. Pydantic AI valida la salida del modelo contra este esquema.

import asyncio
import os
from pathlib import Path
from typing import Literal

from dotenv import load_dotenv
from pydantic import BaseModel
from pydantic_ai import Agent
from pydantic_ai.mcp import MCPServerStreamableHTTP


class TweetRow(BaseModel):
    tweet_id: str
    text: str
    author_username: str | None = None
    created_at: str | None = None
    url: str | None = None


class TweetSearchHandoff(BaseModel):
    query: str
    route_used: str
    tweets: list[TweetRow]
    has_more: bool
    next_cursor: str | None = None
    stop_reason: Literal["complete", "requested_limit", "cursor_stalled"]


async def main() -> None:
    load_dotenv()

    server = MCPServerStreamableHTTP(
        "https://api.twexapi.io/mcp",
        headers={"x-api-key": os.environ["TWEXAPI_API_KEY"]},
    )

    agent = Agent(
        "anthropic:claude-sonnet-4-20250514",
        toolsets=[server],
        output_type=TweetSearchHandoff,
        instructions=(
            "Use TwexAPI MCP for Twitter API requests. Call explore before twexapi_request. "
            "Preserve exact IDs and cursors. Never invent missing tweet fields. "
            "Ask for confirmation before read_only: false actions."
        ),
    )

    result = await agent.run(
        "Search 25 recent tweets about Pydantic AI MCP. "
        "Return the query, route, tweet rows, cursor state, "
        "and an explicit stop reason."
    )

    Path("twexapi-pydantic-ai-handoff.json").write_text(
        result.output.model_dump_json(indent=2),
        encoding="utf-8",
    )


asyncio.run(main())

El agente descubre explore y twexapi_request. Llama a explore primero cuando el agente no conoce una ruta o la forma de los parámetros.

Validar campos antes del almacenamiento

Mantén estos campos de origen sin cambios en tu modelo de salida:

  • Filas de tweet: tweet_id, text, author_username, created_at, url
  • Filas de perfil: user_id, username, name, description, cantidades de seguidores
  • Estado de página: has_more, next_cursor, o nombres de cursor específicos del idioma
  • Recibos de escritura: nombre de ruta, ID de tweet devuelto, estado de confirmación

Nunca conviertas IDs grandes a números de punto flotante. Mapea los IDs de origen solo a tweet_id o user_id en tu modelo de salida.

Continúa a través de una página vacía cuando has_more siga siendo true. Detente cuando no exista cursor o el servidor repita un cursor. Devuelve cursor_stalled con el número de filas recopiladas.

Construir una entrega tipada

Búsqueda de tweets

Almacena consulta, ruta, IDs de tweet, autores, URLs, has_more, next_cursor y razón de parada.

Consulta de perfil

Almacena user_id, username, name, description y cantidades de seguidores.

Páginas de seguidores

Almacena nombre de usuario de origen, filas de seguidores y checkpoint de cursor.

Acciones de escritura

Almacena ruta, texto de vista previa, requisito de cookie y registro de aprobación.

Mantén las API keys fuera de la salida del agente. Consulta Agent MCP Handoff.

Reutilizar la conexión MCP

Envuelve llamadas relacionadas cuando varias ejecuciones deban compartir una conexión.

async def collect_two_search_pages(agent: Agent) -> None:
    async with agent:
        first_page = await agent.run(
            "Search 25 tweets about Pydantic AI MCP. Preserve the next cursor."
        )
        cursor = first_page.output.next_cursor
        if not first_page.output.has_more or cursor is None:
            return

        second_page = await agent.run(
            f"Continue tweet search for {first_page.output.query!r}. "
            f"Use explore, then twexapi_request with cursor {cursor!r}."
        )
        _ = second_page

Requerir aprobación antes de acciones en X

Los agentes de solo lectura pueden buscar tweets automáticamente. Los agentes con capacidad de escritura necesitan una decisión humana antes de cada acción en X.

class WritePlan(BaseModel):
    action: str
    endpoint: str
    preview_text: str
    requires_human_confirmation: bool = True

Detén el agente antes de llamar rutas con read_only: false. Previsualiza cargas con el CLI --dry-run, luego ejecuta a través de REST o el Python SDK después de la aprobación.

Manejo de errores

Estado Decisión de Pydantic AI
400 Corrige la solicitud antes de reintentar
401 Detente y reemplaza la credencial
403 Reporta problemas de acceso o créditos
429 Espera y conserva el cursor
5xx Reintenta lecturas seguras con backoff acotado

Nunca recrees una escritura pendiente después de un timeout sin verificar el estado devuelto.

Elegir Pydantic AI MCP o REST

Requisito Elegir Razón
Un modelo selecciona operaciones de tweet o perfil Pydantic AI MCP El agente descubre rutas con explore
El código de aplicación llama una ruta conocida Python SDK La solicitud permanece determinista
Un humano debe revisar una acción en X Pydantic AI MCP + REST manual Pausa antes de la ejecución
Una exportación programada corre sin modelo Prefect o REST No se requiere decisión del modelo

Versiones de paquetes

Paquete Rango compatible
Python >=3.10
pydantic-ai >=0.8
pydantic >=2.7

Próximos pasos

¿Te ha resultado útil esta página?