intermediate45 minLección 2 de 5

Definiendo Roles, Objetivos, Historias y Delegación

Domina los atributos de agente — rol, objetivo, historia, delegación, modo verbose y memoria — para colaboración multi-agente especializada.

Definiendo Roles, Objetivos, Historias y Delegación

Un agente bien definido es la base de un sistema CrewAI confiable. Cada atributo — rol, objetivo, historia, configuración de delegación — moldea cómo el agente se comporta, colabora y delega tareas. Acertar estos atributos es la diferencia entre un sistema que produce texto genérico y uno que entrega resultados de nivel experto.


Rol, Objetivo e Historia

Estos tres atributos forman la identidad del agente. Juntos definen la personalidad, el objetivo y la experiencia que el LLM usa para razonar:

python
from crewai import Agent analista = Agent( role="Analista de Datos Senior", goal="Identificar tendencias de ingresos a partir de datos trimestrales de ventas", backstory=( "Tienes 10 años de experiencia en análisis financiero " "y has trabajado en las mejores consultoras. Explicas " "datos complejos en términos simples." ), )
AtributoPropósitoImpacto
roleCargo / funciónGuía la personalidad y el tono del LLM
goalObjetivo que el agente debe lograrEnfoca el razonamiento y la planificación
backstoryContexto narrativo y experienciaAñade profundidad a la toma de decisiones
📌Important

El parámetro role es la señal más fuerte para el comportamiento del LLM. Un agente con role="Ingeniero de Seguridad Senior" priorizará seguridad y modelado de amenazas. El mismo agente con role="Gerente de Producto" priorizará necesidades del usuario y plazos. Elige roles que codifiquen la experiencia que necesitas.

python
# Compara cómo el role cambia el enfoque de la salida agente_seguridad = Agent( role="Ingeniero de Seguridad Senior", goal="Revisar el diseño del nuevo sistema de autenticación", backstory="Eres especialista en OAuth, SAML y arquitecturas zero-trust.", ) agente_pm = Agent( role="Gerente de Producto", goal="Revisar el diseño del nuevo sistema de autenticación", backstory="Te enfocas en la experiencia del usuario y el tiempo de mercado.", ) # Mismo goal, pero los agentes enfatizarán aspectos completamente diferentes
⚠️Warning

Evita historias genéricas como "Eres un asistente útil." Cuanto más específica sea la historia, mejor será la calidad de la salida del agente. Incluye experiencia de dominio, años de trayectoria y estilo de comunicación. Un buen modelo de historia: "Eres un [senioridad] [rol] con [X] años de experiencia en [dominio]. [Estilo de comunicación]."


Colaboración de Agentes mediante Delegación

Los agentes de CrewAI pueden delegarse tareas entre sí. Habilita la delegación con allow_delegation=True:

python
gerente = Agent( role="Gerente de Proyecto", goal="Coordinar la investigación y entregar un informe final", backstory="Gestionas equipos multifuncionales y delegas trabajo.", allow_delegation=True, # puede pedir ayuda a otros agentes ) investigador = Agent( role="Especialista en Investigación", goal="Recopilar datos sobre los temas asignados", backstory="Eres un investigador online hábil.", allow_delegation=False, # enfocado en ejecución, no delegación ) redactor = Agent( role="Redactor de Informes", goal="Compilar hallazgos en un informe pulido", backstory="Escribes informes claros y profesionales.", allow_delegation=False, )

Cuando allow_delegation=True, el agente puede pedir a otro agente que asuma una tarea, creando un flujo de colaboración dinámico. El agente delegante evalúa si puede completar la tarea; si no, redirige el trabajo a un colega más apropiado.

💡Tip

Activa allow_delegation solo en agentes que actúan como gerentes o coordinadores. Los agentes trabajadores (investigadores, redactores, programadores) deben mantenerlo False. Esto evita el ping-pong de delegación donde los agentes se pasan el trabajo unos a otros.

python
# Mejor práctica: un gerente delega, trabajadores ejecutan gerente = Agent( role="Director de Investigación", goal="Producir un informe completo de análisis de mercado", backstory="Lideras un equipo de analistas y redactores.", allow_delegation=True, # orquestador ) analista = Agent( role="Analista de Mercado", goal="Analizar datos de mercado e identificar tendencias", backstory="Eres un analista certificado CFA.", allow_delegation=False, # ejecutor ) redactor = Agent( role="Redactor de Informes", goal="Escribir informes profesionales", backstory="Eres un redactor de negocios.", allow_delegation=False, # ejecutor )

Flujo de Delegación

100%

Modo Verbose

El registro verbose muestra cada paso de razonamiento, llamada a herramienta y delegación:

python
agent = Agent( role="Agente de Soporte", goal="Resolver consultas de clientes", backstory="Eres un representante de soporte de primera línea.", verbose=True, # imprime pensamientos, acciones, observaciones )

Tres niveles de verbosidad:

  • False — sin salida (por defecto)
  • True — registros detallados paso a paso
  • Un enum Verbose con control granular (disponible en versiones recientes)
python
from crewai import Verbose # Control granular de verbosidad agent = Agent( role="Agente de Depuración", goal="Depurar el sistema", backstory="Eres un ingeniero de sistemas.", verbose=Verbose.INFO, # muestra razonamiento pero omite detalles de herramientas )

Memoria en Agentes

Los agentes pueden retener contexto entre múltiples ejecuciones de tareas:

python
agente_con_memoria = Agent( role="Chatbot", goal="Mantener conversaciones coherentes de múltiples turnos", backstory="Eres un asistente de atención amigable.", memory=True, # activa memoria a corto plazo dentro de una ejecución )
Configuración de MemoriaComportamiento
memory=False (por defecto)Sin memoria; cada tarea comienza desde cero
memory=TrueEl agente recuerda interacciones previas en la misma ejecución
ℹ️Note

La memoria a nivel de agente (memory=True) es separada de la configuración de memoria a nivel de crew. La memoria del agente es a corto plazo (en proceso) y se pierde después de que kickoff() termina. Para memoria persistente entre ejecuciones, usa memory_config del crew con un backend LongTermMemory (cubierto en la lección 5).


Secuencia de Colaboración de Agentes

100%

Agentes Especializados con Delegación — Ejemplo Completo

python
from crewai import Agent, Task, Crew # --- Agentes --- gerente = Agent( role="Gerente de Investigación", goal="Supervisar la investigación y compilar el informe final", backstory="Lideras un equipo de investigación y delegas tareas eficazmente.", allow_delegation=True, verbose=True, ) recolector = Agent( role="Recolector de Datos", goal="Encontrar estadísticas y hechos relevantes", backstory="Eres experto en buscar en bases de datos y la web.", allow_delegation=False, ) analista = Agent( role="Analista", goal="Interpretar datos y generar insights", backstory="Conviertes datos brutos en insights accionables.", allow_delegation=False, ) # --- Tareas --- tarea_recoleccion = Task( description="Recopila estadísticas de adopción de IA 2025 de fuentes confiables.", expected_output="Tabla de estadísticas con fuentes.", agent=recolector, ) tarea_analisis = Task( description="Analiza las estadísticas recopiladas e identifica las 3 tendencias principales.", expected_output="3 declaraciones de tendencias con datos de soporte.", agent=analista, ) tarea_informe = Task( description="Escribe un resumen ejecutivo final basado en el análisis.", expected_output="Resumen ejecutivo de 1 página.", agent=gerente, ) # --- Crew --- crew = Crew( agents=[gerente, recolector, analista], tasks=[tarea_recoleccion, tarea_analisis, tarea_informe], verbose=True, ) resultado = crew.kickoff() print(resultado)

Compartir Contexto Entre Agentes Delegados

Las tareas pueden compartir contexto explícitamente para crear transiciones suaves entre agentes delegados:

python
from crewai import Agent, Task, Crew # Agentes gerente = Agent( role="Gerente de Investigación", goal="Producir un informe de investigación completo", backstory="Coordinas proyectos de investigación.", allow_delegation=True, ) recolector = Agent( role="Recolector de Datos", goal="Recopilar datos exhaustivos", backstory="Eres un investigador experto.", allow_delegation=False, ) redactor = Agent( role="Redactor de Informes", goal="Escribir informes claros a partir de datos", backstory="Eres un redactor profesional.", allow_delegation=False, ) # Tareas con paso de contexto recoleccion = Task( description="Recopila datos sobre tasas de adopción de energía renovable a nivel global.", expected_output="Tabla de datos con tasas de adopción por país.", agent=recolector, ) analisis = Task( description=( "Analiza los datos de energía renovable e identifica los 5 principales adoptantes.\n\n" "Fuente de datos:\n{context}" ), expected_output="Informe de análisis listando los top 5 países con tasas de crecimiento.", agent=recolector, context=[recoleccion], ) redaccion = Task( description=( "Escribe un resumen ejecutivo basado en este análisis:\n\n{context}" ), expected_output="Resumen ejecutivo de una página adecuado para la dirección.", agent=redactor, context=[analisis], ) crew = Crew( agents=[gerente, recolector, redactor], tasks=[recoleccion, analisis, redaccion], verbose=True, ) resultado = crew.kickoff()

Comparación de Atributos del Agente

AtributoTipoPor DefectoEfecto
rolestr— (obligatorio)Define la personalidad del agente
goalstr— (obligatorio)Define el objetivo
backstorystr""Añade contexto narrativo
allow_delegationboolFalseActiva delegación entre agentes
verbosebool / VerboseFalseActiva registro paso a paso
memoryboolFalsePreserva contexto entre tareas
toolsList[BaseTool][]Adjunta capacidades personalizadas

Impacto de los Atributos en el Comportamiento

ConfiguraciónEfecto en la SalidaImpacto en Rendimiento
Rol específico + historia detalladaAlta calidad, consciente del dominioLigeramente más tokens por llamada
Rol genérico + sin historiaRespuestas genéricas y superficialesMás rápido, menos tokens
allow_delegation=TrueColaborativo, dinámicoMás llamadas LLM para decisiones de delegación
verbose=TrueTransparencia totalSin impacto en rendimiento (solo consola)
memory=TrueConsciente del contexto, coherenteMás tokens para retención de contexto

Preguntas Interactivas

Practice Question

Tienes dos agentes con el mismo goal pero roles diferentes: 'Desarrollador Junior' y 'Arquitecto Senior'. Ambos revisan un pull request. ¿Qué será más diferente en sus salidas?

Practice Question

Tu equipo de investigación tiene 4 agentes todos con allow_delegation=True. La tarea se pasa entre agentes sin completarse. ¿Cuál es el problema?

Practice Question

Un agente con role='Agente de Soporte' produce respuestas genéricas. ¿Qué cambio tendría el mayor impacto?

Practice Question

En un crew jerárquico, el gerente delega una tarea a un trabajador. El trabajador devuelve resultados de baja calidad. ¿Qué sucede a continuación?

Practice Question

Dos agentes se ejecutan secuencialmente: Agente A recopila datos, Agente B escribe un informe. La salida del Agente B contradice los datos que el Agente A recopiló. ¿Cuál es la causa más probable?


5 Preguntas de Práctica

1. ¿Qué atributo del agente tiene el mayor impacto en la personalidad y el tono del LLM?

  • A) goal
  • B) role
  • C) verbose
  • D) memory

2. ¿Qué permite allow_delegation=True?

  • A) El agente puede saltarse tareas
  • B) El agente puede pedir a otros agentes que asuman trabajo ✅
  • C) El agente puede modificar su propio objetivo
  • D) El agente puede usar APIs externas

3. ¿Qué sucede cuando verbose=True?

  • A) El agente se ejecuta más rápido
  • B) El crew registra cada paso de razonamiento y llamada a herramienta ✅
  • C) La salida se formatea como JSON
  • D) La delegación se desactiva

4. ¿Cuál de los siguientes NO es un atributo de agente?

  • A) backstory
  • B) expected_output
  • C) allow_delegation
  • D) memory

5. ¿Qué hace memory=True en un agente?

  • A) Almacena la salida final en disco
  • B) Retiene contexto entre tareas dentro de una ejecución del crew ✅
  • C) Almacena en caché resultados de herramientas
  • D) Activa la delegación

Success

Puntos Clave

  • role, goal y backstory definen la identidad y el comportamiento del agente.
  • Las historias específicas producen salidas de agente de mayor calidad.
  • allow_delegation=True permite colaboración dinámica entre agentes.
  • verbose=True es esencial para depuración y transparencia.
  • memory=True preserva contexto entre tareas en una sola ejecución.
  • Los gerentes con delegación pueden coordinar trabajadores especializados.
  • Cada atributo tiene un rol específico en la formación del comportamiento del agente.
  • Activa la delegación solo en gerentes para evitar bucles de delegación.
  • El paso de contexto entre tareas garantiza flujos de trabajo coherentes.
Progreso40%