- Framework Python de código abierto (licencia MIT) con más de 25.000 estrellas en GitHub a mayo de 2026.
- Sus cuatro abstracciones principales — Agent, Task, Crew y Tool — son suficientes para construir el 90% de los flujos de trabajo de agentes.
- Soporta configuración YAML para separar la definición de agentes y tareas del código de orquestación.
- Compatible con todos los grandes proveedores LLM a través de LiteLLM: OpenAI, Anthropic, Google, Mistral, Ollama y más.
- CrewAI+ es la plataforma enterprise que añade observabilidad, despliegue gestionado y pipelines multi-crew.
¿Qué es CrewAI y cómo funciona?
CrewAI es un framework de orquestación de agentes de inteligencia artificial construido sobre Python. Su premisa es sencilla: en lugar de pedirle a un único modelo que resuelva una tarea compleja de principio a fin, CrewAI divide el trabajo entre varios agentes especializados que colaboran como un equipo de profesionales. Cada agente tiene un rol definido, un objetivo concreto y una historia de fondo (backstory) que modela su comportamiento. El framework se encarga de la comunicación entre agentes, la delegación de subtareas y la consolidación del resultado final.
El flujo básico es el siguiente: defines un Crew con varios Agents, cada uno asignado a una o varias Tasks y equipado con un conjunto de Tools. Cuando invocas el crew, CrewAI ejecuta las tareas en el orden que hayas definido (secuencial, jerárquico o paralelo), pasa el contexto entre agentes y te devuelve el resultado final. Puedes configurar todo desde Python puro o usando archivos YAML para separar la configuración del código.
A diferencia de LangChain, que es un framework de propósito general con centenares de abstracciones, CrewAI es deliberadamente opinado: su API de alto nivel reduce la curva de aprendizaje y permite tener un primer agente funcional en minutos. El trade-off es menor flexibilidad para arquitecturas muy personalizadas, donde frameworks como LangChain o Pydantic AI ofrecen más control. Para una decisión más informada entre opciones, consulta la sección de comparativas.
¿Por qué tiene tanto éxito CrewAI?
Tres factores explican el crecimiento rápido de CrewAI desde su lanzamiento a finales de 2023:
- Abstracción acertada. Los conceptos de agente, tarea y equipo son intuitivos para cualquier desarrollador. No hace falta entender los detalles internos de los LLMs ni de los mecanismos de tool-calling para construir un crew funcional.
- Documentación y comunidad. El repositorio oficial incluye decenas de ejemplos de crews para casos de uso reales: investigación web, generación de informes, análisis de código, creación de contenido. La comunidad ha contribuido cientos de integraciones adicionales.
- Configuración YAML. La posibilidad de definir agentes y tareas en archivos YAML independientes del código de Python facilita la colaboración entre perfiles técnicos y no técnicos, y hace que los crews sean más fáciles de mantener y versionar.
Conceptos clave: Agent, Task, Crew y Tool
CrewAI se basa en cuatro abstracciones que, una vez comprendidas, permiten modelar cualquier flujo de trabajo colaborativo entre agentes.
role (el título del puesto: "Investigador de mercado"),
goal (el objetivo que persigue: "Encontrar información actualizada y verificada")
y backstory (el contexto que moldea sus respuestas: "Eres un analista senior
con 10 años de experiencia..."). Opcionalmente puedes definir el modelo LLM que usa,
si puede delegar tareas a otros agentes y cuántas iteraciones máximas puede ejecutar.
description detallada de lo que hay que hacer, un expected_output
que describe el formato y contenido del resultado esperado, y el agent responsable
de ejecutarla. Las tareas pueden tener context (resultados de tareas anteriores)
y output_file para guardar el resultado en disco. El orden de ejecución lo
determina el proceso del Crew.
Process.sequential ejecuta las tareas en orden, pasando el contexto de cada una
a la siguiente. Process.hierarchical designa a un manager LLM que planifica
y delega dinámicamente entre los agentes. Puedes configurar verbosidad, máximas iteraciones
de RPM, memoria compartida y callbacks para observabilidad.
@tool. También es compatible con las herramientas de LangChain.
Cuando invocas crew.kickoff(inputs={...}), el framework sigue este flujo:
- El Crew recibe los inputs y los inyecta en los templates de las Tasks.
- El proceso (secuencial o jerárquico) determina qué agente actúa primero.
- Cada agente recibe la descripción de su Task, su contexto (outputs de Tasks anteriores) y sus Tools.
- El agente razona en bucle (ReAct): piensa, invoca herramientas, observa el resultado y repite hasta tener el output esperado.
- El output de cada Task se pasa como contexto a las Tasks que dependen de ella.
- El Crew consolida el output final y lo devuelve al programa principal.
¿Cómo se define un crew en Python?
El siguiente ejemplo muestra la estructura básica sin ejecutar ningún LLM real. Los comentarios explican el propósito de cada parámetro:
from crewai import Agent, Task, Crew, Process
from crewai.tools import tool
# ----- TOOLS -----
# Herramienta personalizada con el decorador @tool.
# El nombre y el docstring son lo que el agente "lee" para saber cuando usarla.
@tool("Buscador web")
def buscar_web(consulta: str) -> str:
"""Busca informacion actualizada en internet sobre la consulta dada."""
# Aqui iria la integracion real (SerperDev, Tavily, etc.)
return f"Resultados de busqueda para: {consulta}"
# ----- AGENTS -----
investigador = Agent(
role="Investigador de mercado senior",
goal="Encontrar informacion precisa y actualizada sobre el tema asignado",
backstory=(
"Eres un analista con 10 anos de experiencia en investigacion competitiva. "
"Valoras la precision sobre la velocidad y siempre citas tus fuentes."
),
tools=[buscar_web],
verbose=True, # Muestra el razonamiento interno del agente
allow_delegation=False, # Este agente no puede delegar a otros
)
redactor = Agent(
role="Redactor de contenido tecnico",
goal="Transformar informacion tecnica en contenido claro y estructurado",
backstory=(
"Llevas 8 anos escribiendo para publicaciones tecnologicas. "
"Tu estilo es directo, sin relleno y con ejemplos concretos."
),
verbose=True,
)
# ----- TASKS -----
tarea_investigacion = Task(
description=(
"Investiga el estado actual de {tema} en 2026. "
"Incluye: principales actores, tendencias y casos de uso reales."
),
expected_output=(
"Un informe estructurado con tres secciones: resumen ejecutivo (200 palabras), "
"analisis de actores principales (lista con descripcion breve de cada uno) "
"y tendencias clave (minimo 5 puntos con evidencia)."
),
agent=investigador,
)
tarea_redaccion = Task(
description=(
"Basandote en el informe de investigacion, escribe un articulo de blog "
"de 800 palabras sobre {tema} dirigido a desarrolladores."
),
expected_output=(
"Articulo en markdown con: titulo H1, introduccion de 100 palabras, "
"tres secciones H2 con contenido sustancial y conclusion con llamada a la accion."
),
agent=redactor,
context=[tarea_investigacion], # Recibe el output del investigador como contexto
output_file="articulo_final.md",
)
# ----- CREW -----
crew = Crew(
agents=[investigador, redactor],
tasks=[tarea_investigacion, tarea_redaccion],
process=Process.sequential, # Ejecuta las tareas en orden
verbose=True,
)
# ----- EJECUCION -----
resultado = crew.kickoff(inputs={"tema": "agentes de inteligencia artificial"})
print(resultado.raw) # El output de la ultima tarea
¿Cómo instalar CrewAI y crear tu primer crew?
CrewAI requiere Python 3.10 o superior. El paquete base incluye el framework completo;
el paquete crewai-tools añade las herramientas integradas del ecosistema oficial.
# Instalacion del framework base
pip install crewai
# Con herramientas integradas (WebSearch, FileRead, CodeInterpreter, etc.)
pip install crewai crewai-tools
# Con uv (recomendado para proyectos nuevos)
uv add crewai crewai-tools
# Verificar la instalacion
python -c "import crewai; print(crewai.__version__)"
Configuración del modelo LLM
Por defecto, CrewAI usa GPT-5 de OpenAI. Para cambiar al modelo que prefieras, define las variables de entorno correspondientes. El siguiente ejemplo muestra cómo usar Claude de Anthropic, que es la opción recomendada para crews que requieren razonamiento complejo:
# .env
ANTHROPIC_API_KEY=tu_clave_api_aqui
from crewai import Agent, LLM
# Definir el modelo explicitamente en el agente
agente = Agent(
role="Analista",
goal="Analizar datos y producir insights accionables",
backstory="Eres un analista de datos senior especializado en IA.",
llm=LLM(
model="anthropic/claude-sonnet-4-6",
temperature=0.1, # Baja temperatura para mayor precision
max_tokens=8192,
),
)
# Ollama (modelos locales) — sin coste de API
agente_local = Agent(
role="Redactor",
goal="Escribir contenido claro y bien estructurado",
backstory="Eres un escritor con experiencia en contenido tecnico.",
llm=LLM(
model="ollama/llama3.1:8b",
base_url="http://localhost:11434",
),
)
Estructura de proyecto con CLI
CrewAI incluye una CLI que genera la estructura recomendada para proyectos nuevos. Usar esta estructura facilita la configuración YAML y el despliegue en CrewAI+:
crewai create crew mi_crew
# Estructura generada:
# mi_crew/
# ├── src/mi_crew/
# │ ├── config/
# │ │ ├── agents.yaml ← Definicion de agentes
# │ │ └── tasks.yaml ← Definicion de tareas
# │ ├── tools/
# │ │ └── custom_tool.py
# │ ├── crew.py ← Clase Crew principal
# │ └── main.py ← Punto de entrada
# ├── .env
# └── pyproject.toml
# Ejecutar el crew
cd mi_crew
crewai run
Configuración YAML: separar datos de lógica
La configuración YAML es la forma recomendada para proyectos de producción. Permite modificar el comportamiento de los agentes sin tocar el código Python:
investigador:
role: >
Investigador de {tema} senior
goal: >
Descubrir informacion factual y actualizada sobre {tema}
con evidencia verificable
backstory: >
Eres un analista experto con acceso a las mejores herramientas
de busqueda. Tu reputacion depende de la precision de tu trabajo.
redactor:
role: >
Redactor tecnico especializado en {tema}
goal: >
Transformar hallazgos tecnicos en contenido comprensible
para desarrolladores con experiencia moderada
backstory: >
Has escrito para las principales publicaciones de tecnologia
durante 8 anos. Tu estilo es claro, directo y sin relleno.
tarea_investigacion:
description: >
Investiga {tema} en profundidad. Cubre: estado actual del ecosistema,
principales actores, casos de uso documentados y tendencias para 2026.
Prioriza fuentes publicadas en los ultimos 6 meses.
expected_output: >
Informe estructurado de 500 palabras con: resumen ejecutivo,
lista de actores principales con descripcion de 2 lineas cada uno
y al menos 5 tendencias con evidencia especifica.
agent: investigador
tarea_articulo:
description: >
Con el informe de investigacion como base, escribe un articulo
de blog de 800 palabras sobre {tema} para desarrolladores Python.
Incluye al menos un ejemplo de codigo funcional.
expected_output: >
Articulo en markdown listo para publicar: titulo, introduccion
con gancho, tres secciones H2, ejemplo de codigo comentado y
conclusion con CTA. Sin errores ortograficos.
agent: redactor
output_file: output/articulo_{tema}.md
Herramientas integradas y herramientas propias
CrewAI incluye un ecosistema de herramientas listas para usar y un mecanismo sencillo
para crear las tuyas propias con el decorador @tool.
| Herramienta | Función | Requisito |
|---|---|---|
SerperDevTool |
Búsqueda web a través de la API de Serper (Google Search) | Clave API Serper |
TavilySearchTool |
Búsqueda web optimizada para agentes (con resumen contextual) | Clave API Tavily |
FileReadTool |
Leer archivos de texto, PDF, CSV del sistema de archivos local | Ninguno |
DirectoryReadTool |
Listar y explorar el contenido de un directorio | Ninguno |
CodeInterpreterTool |
Ejecutar código Python en un entorno aislado (sandbox) | Docker |
BrowserbaseLoadTool |
Cargar y extraer contenido de páginas web dinámicas (JS renderizado) | Clave API Browserbase |
GithubSearchTool |
Buscar código, issues y pull requests en GitHub | Token GitHub |
YoutubeVideoSearchTool |
Buscar y extraer transcripciones de videos de YouTube | Ninguno |
PostgresqlSearchTool |
Ejecutar consultas SQL en bases de datos PostgreSQL | Cadena de conexión |
RagTool |
Búsqueda semántica sobre documentos propios (RAG) | Embeddings configurados |
¿Cómo crear herramientas propias?
Cualquier función Python puede convertirse en una herramienta de CrewAI con el decorador
@tool. El agente lee el nombre de la herramienta y su docstring para decidir
cuándo y cómo usarla, por lo que la documentación interna es crítica:
from crewai.tools import tool
from typing import Optional
import httpx
# Herramienta simple con @tool
@tool("Consultador de precio de cripto")
def precio_cripto(simbolo: str) -> str:
"""
Devuelve el precio actual en USD de una criptomoneda.
Usa esta herramienta cuando necesites datos de mercado en tiempo real.
Args:
simbolo: El ticker de la cripto en mayusculas (BTC, ETH, SOL...)
Returns:
Precio actual en USD como string formateado.
"""
url = f"https://api.coingecko.com/api/v3/simple/price"
params = {"ids": simbolo.lower(), "vs_currencies": "usd"}
resp = httpx.get(url, params=params, timeout=10)
data = resp.json()
precio = data.get(simbolo.lower(), {}).get("usd", "No disponible")
return f"El precio de {simbolo.upper()} es ${precio:,.2f} USD"
# Herramienta con clase (mayor control sobre validacion y estado)
from crewai.tools import BaseTool
from pydantic import BaseModel, Field
class ConsultaDBInput(BaseModel):
tabla: str = Field(description="Nombre de la tabla a consultar")
filtro: Optional[str] = Field(default=None, description="Condicion WHERE opcional")
limite: int = Field(default=10, description="Numero maximo de filas a devolver")
class ConsultaDBTool(BaseTool):
name: str = "Consultador de base de datos"
description: str = (
"Ejecuta consultas de solo lectura sobre la base de datos interna. "
"Usa esta herramienta para obtener datos actualizados del sistema."
)
args_schema: type[BaseModel] = ConsultaDBInput
def _run(self, tabla: str, filtro: Optional[str] = None, limite: int = 10) -> str:
# Aqui iria la conexion real a la BD
query = f"SELECT * FROM {tabla}"
if filtro:
query += f" WHERE {filtro}"
query += f" LIMIT {limite}"
return f"Resultado simulado de: {query}"
# Usar las herramientas en un agente
from crewai import Agent
analista = Agent(
role="Analista financiero",
goal="Analizar tendencias de mercado con datos en tiempo real",
backstory="Eres un analista con acceso a datos de mercado y bases de datos internas.",
tools=[precio_cripto, ConsultaDBTool()],
)
CrewAI es compatible con las herramientas del ecosistema LangChain. Si ya tienes herramientas
definidas con langchain.tools, puedes importarlas directamente:
from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper
from crewai.tools import tool
# Envolver una tool de LangChain para usarla en CrewAI
wikipedia = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())
@tool("Wikipedia")
def buscar_wikipedia(consulta: str) -> str:
"""Busca informacion enciclopedica en Wikipedia sobre el tema indicado."""
return wikipedia.run(consulta)
CrewAI+ y la plataforma enterprise
Además del framework open source, CrewAI ofrece una plataforma gestionada para equipos que necesitan observabilidad, escalado y despliegue simplificado.
El framework CrewAI es completamente gratuito bajo licencia MIT. Puedes usarlo en producción sin ningún coste de licencia. El coste de ejecutar un crew depende exclusivamente del proveedor LLM que elijas (OpenAI, Anthropic, etc.) y de las APIs externas que usen tus herramientas. CrewAI+ es la capa de infraestructura de pago para equipos que quieren observabilidad, despliegue gestionado y soporte prioritario sin gestionar su propia infraestructura. Consulta los precios actualizados en crewai.com .
CrewAI vs alternativas: ¿cuándo elegir cada uno?
Cuatro frameworks compiten en el espacio de orquestación de agentes Python. La elección correcta depende de tu caso de uso, nivel de control requerido y madurez del equipo.
| Criterio | CrewAI | AutoGen | LangGraph | OpenSwarm |
|---|---|---|---|---|
| Curva de aprendizaje | Baja — API intuitiva | Media — requiere entender el protocolo de mensajes | Alta — orientado a grafos de estado | Muy baja — API minimalista |
| Paradigma de orquestación | Equipos con roles (crew) | Conversación entre agentes | Grafo de nodos y aristas | Transferencia de control dinámica |
| Configuración YAML | Nativa | No | No | No |
| Herramientas integradas | Amplio ecosistema (crewai-tools) | Limitado (extensible) | A traves de LangChain | Manual |
| Control del flujo | Medio — proceso secuencial o jerárquico | Medio — basado en mensajes | Total — grafo personalizado | Máximo — transferencia explicita |
| Multi-agente paralelo | Con Pipelines (CrewAI+) | Nativo | Nativo con async | Secuencial |
| Plataforma gestionada | CrewAI+ (enterprise) | Azure AI Foundry | LangSmith / LangGraph Cloud | No |
| GitHub stars (mayo 2026) | ~25k | ~42k | ~16k | ~7k |
| Mejor para | Prototipos rápidos y crews de producción con roles claros | Investigación y sistemas conversacionales multi-agente | Agentes con flujos de estado complejos y ciclos | Arquitecturas experimentales con delegación dinámica |
Elige CrewAI cuando...
El caso de uso se describe naturalmente como un equipo de especialistas: un investigador, un redactor y un revisor; un analista, un estratega y un ejecutor. Si puedes asignar roles claros con objetivos específicos, CrewAI te dará resultados en menos tiempo que cualquier alternativa. También es la mejor opción si el equipo tiene perfiles no técnicos que necesitan poder modificar el comportamiento de los agentes sin tocar código Python.
Elige LangGraph cuando...
El flujo de tu agente no es lineal: tiene ciclos de revisión, bifurcaciones condicionales o necesita volver a estados anteriores. LangGraph es el framework correcto cuando el grafo de decisión del agente es tan complejo que CrewAI se quedaría corto. El precio es una curva de aprendizaje significativamente mayor.
Elige AutoGen cuando...
El paradigma central de tu aplicación es la conversación entre agentes: debates, revisiones por pares, o sistemas donde varios agentes negocian una solución. AutoGen de Microsoft Research está diseñado desde cero para este patrón. También es la opción natural si tu equipo ya trabaja con el ecosistema Azure AI.
Preguntas frecuentes sobre CrewAI
¿Qué es CrewAI y para qué sirve?
CrewAI es un framework Python de código abierto para orquestar equipos de agentes de inteligencia artificial. Permite definir agentes con roles, objetivos y backstories específicos que colaboran para completar tareas complejas. Es ideal para flujos de trabajo donde varios especialistas (investigador, redactor, revisor) trabajan en paralelo o en secuencia, y donde la comunicación entre ellos es clave para producir un resultado de calidad.
¿CrewAI es gratuito?
El framework CrewAI es de código abierto y completamente gratuito bajo licencia MIT. Puedes usarlo en producción sin coste de licencia. CrewAI+ es la plataforma enterprise de pago que añade observabilidad, despliegue gestionado y soporte prioritario. El coste real de ejecutar agentes depende del proveedor LLM que elijas: OpenAI cobra por token, Anthropic también, pero puedes usar modelos locales con Ollama de forma gratuita. Consulta la sección de comparativas para una estimación de costes por caso de uso.
¿Qué modelos LLM soporta CrewAI?
CrewAI soporta todos los proveedores principales a través de
LiteLLM:
OpenAI (GPT-5, o1), Anthropic (Claude Opus 4, Sonnet 4.6, Haiku 4.5), Google (Gemini 3.1 Pro),
Mistral, Groq, Cohere, Perplexity y cualquier proveedor con API compatible con OpenAI.
Para ejecución local sin coste de API, puedes usar Ollama con modelos como Llama 3.1,
Mistral 7B o Qwen 2.5. La configuración es tan simple como cambiar el parámetro
llm en el constructor del Agent.
¿Cuál es la diferencia entre Crew y Pipeline en CrewAI?
Un Crew es un equipo de agentes que colaboran de forma secuencial o jerárquica para completar un conjunto de Tasks definidas. Es la unidad básica de orquestación. Un Pipeline es una abstracción de nivel superior disponible en CrewAI+ que encadena varios Crews en serie o en paralelo: la salida de un Crew se convierte en la entrada del siguiente automáticamente. Los Pipelines son la arquitectura correcta para flujos de trabajo de producción con múltiples etapas (recopilación → análisis → redacción → publicación).
¿CrewAI vs LangChain: cuál debo elegir?
La regla práctica es: si puedes describir tu caso de uso como un equipo de especialistas con roles claros, elige CrewAI. Si necesitas control fino sobre cadenas de razonamiento personalizadas, acceso al ecosistema más amplio de integraciones (>600) o arquitecturas donde el flujo no es lineal, considera LangChain. CrewAI reduce drásticamente el código necesario para tener un primer agente funcional; LangChain ofrece más flexibilidad a costa de mayor complejidad. Para producción con validación estricta de datos de entrada y salida, la alternativa más sólida es Pydantic AI.
¿Quieres saber cómo se compara CrewAI con AutoGen en la práctica?
Análisis detallado con benchmarks de velocidad, coste por ejecución y facilidad de depuración en escenarios reales de producción.
Ver comparativa CrewAI vs AutoGen