SDK open source de AWS para construir agentes de IA con un enfoque model-driven. Agentes funcionales en pocas líneas de código, con soporte multi-modelo, herramientas personalizadas, MCP, multi-agente y observabilidad integrada.
Strands Agents es un SDK open source (Apache 2.0) creado por AWS que adopta un enfoque model-driven para construir agentes de IA. La premisa: el modelo de lenguaje es el orquestador — tú defines herramientas y un prompt, y el modelo decide cuándo y cómo usarlas.
La mayoría de frameworks de agentes requieren definir flujos explícitos, grafos de decisión o cadenas de pasos. Strands invierte el paradigma:
@tool y listofrom strands import Agent
agent = Agent()
agent("¿Cuál es la capital de Francia?")Eso es un agente funcional. Usa Bedrock con Claude por defecto.
from strands import Agent, tool
@tool
def weather(city: str) -> str:
"""Get current weather for a city.
Args:
city: Name of the city to check weather for.
Returns:
Current weather description.
"""
# En producción, llamar a una API real
return f"Sunny, 22°C in {city}"
@tool
def convert_temperature(celsius: float) -> float:
"""Convert Celsius to Fahrenheit.
Args:
celsius: Temperature in Celsius.
Returns:
Temperature in Fahrenheit.
"""
return celsius * 9/5 + 32
agent = Agent(tools=[weather, convert_temperature])
agent("What's the weather in Madrid? Give me the temperature in Fahrenheit too.")El agente decide autónomamente: primero llama weather("Madrid"), luego convert_temperature(22.0), y compone la respuesta.
from strands import Agent
from strands.models import BedrockModel
# Amazon Bedrock (default)
agent = Agent(model="anthropic.claude-sonnet-4-20250514-v1:0")
# Con configuración explícita
bedrock = BedrockModel(
model_id="anthropic.claude-sonnet-4-20250514-v1:0",
region_name="us-west-2",
temperature=0.3,
)
agent = Agent(model=bedrock)# OpenAI
from strands.models import OpenAIModel
agent = Agent(model=OpenAIModel(model_id="gpt-4o"))
# Anthropic directo
from strands.models import AnthropicModel
agent = Agent(model=AnthropicModel(model_id="claude-sonnet-4-20250514"))
# Ollama (local)
from strands.models import OllamaModel
agent = Agent(model=OllamaModel(model_id="llama3.1"))Proveedores soportados: Amazon Bedrock, Amazon Nova, Anthropic, OpenAI, Gemini, Ollama, Mistral, LiteLLM, LlamaAPI, SageMaker, Writer, llama.cpp, y custom providers.
Conectar servidores MCP como fuentes de herramientas:
from strands import Agent
from strands.tools.mcp import MCPClient
# Conectar a un servidor MCP
mcp = MCPClient(command="uvx", args=["my-mcp-server"])
with mcp:
agent = Agent(tools=mcp.list_tools())
agent("Use the MCP tools to complete this task")Un agente puede usar otros agentes como herramientas:
from strands import Agent
researcher = Agent(
system_prompt="You are a research specialist.",
tools=[web_search]
)
writer = Agent(
system_prompt="You are a technical writer.",
tools=[researcher.as_tool(
name="research",
description="Research a topic thoroughly"
)]
)
writer("Write an article about quantum computing")Múltiples agentes colaborando con handoffs:
from strands import Agent
from strands.multiagent import Swarm
triage = Agent(system_prompt="Route to the right specialist.")
billing = Agent(system_prompt="Handle billing questions.", tools=[billing_api])
technical = Agent(system_prompt="Handle technical issues.", tools=[diagnostics])
swarm = Swarm(
agents={"triage": triage, "billing": billing, "technical": technical},
entry_point="triage"
)
swarm("I can't log in and I was charged twice")Flujos dirigidos con condiciones:
from strands.multiagent import Graph
graph = Graph()
graph.add_node("classify", classify_agent)
graph.add_node("respond", respond_agent)
graph.add_node("escalate", escalate_agent)
graph.add_edge("classify", "respond", condition=lambda r: r.priority == "low")
graph.add_edge("classify", "escalate", condition=lambda r: r.priority == "high")
graph.run("Customer complaint about delivery")Cada invocación retorna un AgentResult con trazas y métricas:
result = agent("What is the square root of 144?")
# Métricas de uso
print(result.metrics.get_summary())
# {
# "total_cycles": 2,
# "total_duration": 1.88,
# "accumulated_usage": {"inputTokens": 3921, "outputTokens": 83},
# "tool_usage": {"calculator": {"call_count": 1, "success_rate": 1.0}}
# }Exportar a OpenTelemetry para Datadog, Grafana, etc.
import asyncio
from strands import Agent
agent = Agent(callback_handler=None)
async def stream():
async for event in agent.stream_async("Explain quantum computing"):
if "data" in event:
print(event["data"], end="", flush=True)
asyncio.run(stream())from pydantic import BaseModel
from strands import Agent
class MovieReview(BaseModel):
title: str
rating: float
summary: str
agent = Agent()
result = agent.structured_output(
"Review the movie Inception",
output_model=MovieReview
)
print(result.title) # "Inception"
print(result.rating) # 9.2Strands agents son Python estándar — se despliegan en cualquier lugar:
Buena opción cuando:
Considerar alternativas cuando:
| Aspecto | Strands Agents | LangChain/LangGraph | CrewAI | OpenAI SDK |
|---|---|---|---|---|
| Enfoque | Model-driven | Chain/Graph-driven | Role-based | API-driven |
| Complejidad | Baja | Alta | Media | Baja |
| Multi-modelo | Sí (15+) | Sí | Limitado | Solo OpenAI |
| MCP nativo | Sí | Plugin | No | No |
| Multi-agente | Swarm, Graph, A2A | LangGraph | Crews | Swarm (beta) |
| Observabilidad | Integrada | LangSmith (pago) | Limitada | Limitada |
| Licencia | Apache 2.0 | MIT | MIT | MIT |
| Respaldo | AWS | LangChain Inc. | CrewAI Inc. | OpenAI |
Sistemas autónomos que combinan modelos de lenguaje con razonamiento, memoria y uso de herramientas para ejecutar tareas complejas de múltiples pasos con mínima intervención humana.
Protocolo abierto creado por Anthropic que estandariza cómo las aplicaciones de IA se conectan con herramientas, datos y servicios externos mediante una interfaz universal.
Campo de la informática dedicado a crear sistemas capaces de realizar tareas que normalmente requieren inteligencia humana, desde el razonamiento y la percepción hasta la generación de lenguaje.
Crónica de construir un segundo cerebro con grafo de conocimiento, pipeline bilingüe y endpoints para agentes — en días, no semanas, y lo que eso enseña sobre la brecha entre teoría y sistemas que funcionan.
Sistema de tres agentes que automatiza el ciclo de vida de contenido MDX bilingüe: auditoría QA determinística, correcciones quirúrgicas y upgrades completos — todo orquestado con Strands Agents, Claude Sonnet 4 en Amazon Bedrock y GitHub Actions con patrón diamante.
Arquitecturas donde múltiples agentes de IA especializados colaboran, compiten o se coordinan para resolver problemas complejos que exceden la capacidad de un solo agente.
Patrones de diseño donde agentes de IA ejecutan tareas complejas de múltiples pasos de forma autónoma, combinando razonamiento, uso de herramientas y toma de decisiones iterativa.