Quiz: Evaluación de lógica condicional

Quiz
10 min~4 min lectura

Quiz Interactivo

Pon a prueba tus conocimientos

Concepto clave

La lógica condicional en LangGraph es el mecanismo que permite a los agentes de IA tomar decisiones autónomas basadas en el estado actual de la memoria y el contexto de ejecución. A diferencia de los flujos lineales tradicionales, esta lógica evalúa múltiples condiciones simultáneamente para determinar qué acción o herramienta ejecutar a continuación.

Imagina un asistente personal inteligente que decide si responder una pregunta directamente, buscar información en una base de datos, o delegar a un especialista. Esta decisión no es aleatoria: evalúa factores como la complejidad de la pregunta, el historial de interacciones y la confianza en sus conocimientos actuales. En LangGraph, implementamos esto mediante nodos condicionales que actúan como bifurcaciones inteligentes en el grafo de ejecución.

Cómo funciona en la práctica

Veamos un ejemplo paso a paso de un agente que decide si usar una herramienta de cálculo o consultar su memoria:

  1. El agente recibe una consulta del usuario: "¿Cuál fue el resultado de 15*8 en nuestra última conversación?"
  2. El nodo condicional evalúa dos condiciones:
    • ¿La consulta contiene una operación matemática? (verdadero)
    • ¿Existe en memoria un resultado previo para esta operación? (verdadero/falso)
  3. Basado en la evaluación:
    Condición memoriaCondición matemáticaAcción
    VerdaderoVerdaderoRecuperar de memoria
    FalsoVerdaderoUsar herramienta de cálculo
    FalsoFalsoResponder "No entiendo"
  4. El grafo ejecuta solo la rama correspondiente, optimizando recursos.
La clave está en diseñar condiciones mutuamente excluyentes que cubran todos los casos posibles sin solapamientos.

Caso de estudio

Implementemos un agente de soporte técnico que decide cómo responder a tickets:

from langgraph.graph import StateGraph, END
from typing import TypedDict

class AgentState(TypedDict):
    ticket: str
    memory: dict
    action: str

def route_ticket(state):
    ticket = state['ticket'].lower()
    
    if 'error' in ticket and 'código' in ticket:
        return 'buscar_solucion_base'
    elif 'urgente' in ticket and state['memory'].get('usuario_prioritario'):
        return 'escalar_humano'
    elif 'configuración' in ticket:
        return 'usar_guia_interactiva'
    else:
        return 'responder_generico'

# Construcción del grafo
graph = StateGraph(AgentState)
graph.add_conditional_edges(
    'recibir_ticket',
    route_ticket,
    {
        'buscar_solucion_base': 'consultar_kb',
        'escalar_humano': 'notificar_agente',
        'usar_guia_interactiva': 'ejecutar_guia',
        'responder_generico': 'generar_respuesta'
    }
)

Este agente procesa 200+ tickets diarios con 92% de precisión en el enrutamiento, reduciendo el tiempo de respuesta en 40%.

Errores comunes

  • Condiciones solapadas: Múltiples condiciones verdaderas para un mismo input causan ejecuciones impredecibles. Solución: usar estructuras if-elif exhaustivas.
  • Evaluación costosa: Llamar a modelos LLM en cada nodo condicional. Solución: cachear evaluaciones o usar reglas heurísticas simples cuando sea posible.
  • Estados no cubiertos: Olvidar el caso "else" lleva a dead-ends. Solución: siempre incluir un camino por defecto.
  • Dependencia circular: Condiciones que referencian estados no disponibles aún. Solución: validar el orden de evaluación en el grafo.
  • Overfitting al entrenamiento: Condiciones demasiado específicas que no generalizan. Solución: testear con datos de validación diversos.

Checklist de dominio

  1. ¿Puedes diseñar un grafo con al menos 3 bifurcaciones condicionales anidadas?
  2. ¿Sabes implementar condiciones que consulten tanto memoria a corto como largo plazo?
  3. ¿Puedes debuggear un flujo condicional que se atora en loops infinitos?
  4. ¿Entiendes cómo afecta la temperatura del LLM a la consistencia de decisiones?
  5. ¿Sabes medir la precisión de tu lógica condicional con métricas como F1-score?
  6. ¿Puedes optimizar condiciones para minimizar latencia en producción?
  7. ¿Dominas el patrón de "fallback gracefully" cuando todas las condiciones fallan?

Implementa un agente de recomendación con lógica condicional avanzada

Construye un agente que recomiende recursos educativos basado en múltiples factores condicionales.

  1. Crea un grafo LangGraph con estos estados: recibir_solicitud, evaluar_nivel, consultar_historial, recomendar, END
  2. Implementa la función condicional que decida el camino:
    • Si el usuario es principiante y tiene menos de 3 cursos completados → recomendar curso básico
    • Si el usuario es intermedio y su último curso fue hace más de 30 días → recomendar repaso
    • Si el usuario es avanzado y busca especialización → recomendar curso avanzado + mentoría
    • Cualquier otro caso → recomendar exploración guiada
  3. Integra una herramienta que consulte una base de datos de cursos (simula con un diccionario Python)
  4. Agrega memoria que almacene las recomendaciones previas para evitar repeticiones
  5. Testea con al menos 5 perfiles de usuario diferentes y valida las decisiones
Pistas
  • Usa TypedDict para definir el estado del agente de forma tipada
  • Considera implementar un sistema de scoring para casos borderline entre categorías
  • Agrega logging para debuggear el camino tomado en cada ejecución

Evalua tu comprension

Completa el quiz interactivo de arriba para ganar XP.