Los Strand Agents se trata de un framework y SDK de código abierto (en Python y TypeScript) diseñado para construir, orquestar y desplegar agentes de Inteligencia Artificial autónomos.

Los agentes Strand son muy versátiles, pero más flexibles que los agentes tradicionales pues basta con correr un script en Python para que comience a ejecutar tareas. Usarlo es muy simple.

Ejecutar PIP con el siguiente requerimiento:

strands-agents>=1.55,<2

Dentro de un archivo python:

import os

from strands import Agent
from strands.models import BedrockModel

from schema import ConstanciaSituacionFiscal

MODEL_ID = os.environ.get("BEDROCK_MODEL_ID", "global.anthropic.claude-sonnet-4-6")
REGION = os.environ.get("BEDROCK_REGION") or None  # None -> 
MAX_TOKENS = int(os.environ.get("MAX_TOKENS", "4096"))

Le indicamos al programa el modelo que usaremos, la región y el máximo de tokens por transacción.

Ahora definimos el prompt que le dará personalidad al agente strand:

SYSTEM_PROMPT = """Eres un extractor de datos de documentos.
Recibes un PDF y devuelves únicamente los datos en el esquema solicitado.

Reglas:
- Copia los valores tal como aparecen en el documento; no inventes ni completes datos ausentes (usa null).
- Normaliza todas las fechas a formato ISO YYYY-MM-DD (ej. "17 DE JUNIO DE 2019" -> "2019-06-17").
- Porcentajes como número (100, no "100%").
- Si el PDF no es legible, responde documento_valido=false
  con un motivo breve y deja el resto en null.
"""

Lo que hace nuestro agente es leer documentos PDF y revolver sus valores.

# El modelo es sin estado: se crea una vez por proceso.
_model = BedrockModel(model_id=MODEL_ID, region_name=REGION, temperature=0, max_tokens=MAX_TOKENS)


def extract(pdf_bytes: bytes) -> dict:
    """Devuelve el contenido del PDF como dict listo para serializar a JSON."""
    # El Agent guarda historial de conversación: uno nuevo por documento.
    agent = Agent(model=_model, system_prompt=SYSTEM_PROMPT, callback_handler=None)
    result = agent(
        [
            {"document": {"format": "pdf", "name": "documento", "source": {"bytes": pdf_bytes}}},
            {"text": "Extrae los datos de este documento."},
        ],
        structured_output_model=DefinirJSONSchemeAqui,
    )
    return result.structured_output.model_dump()

Listo, el agente procesa el PDF y retorna un json definido en el esquema que deseemos.

Artículos Relacionados

Comentarios