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.
Comentarios