Concepto clave
La integración de herramientas externas transforma a tu agente de un simple procesador de texto en un sistema capaz de interactuar con el mundo real. Imagina a un asistente personal que no solo entiende tus peticiones, sino que puede consultar tu calendario, enviar correos o buscar información en tiempo real. En LangGraph, las herramientas son funciones que tu agente puede invocar para realizar acciones específicas, como llamar a una API, consultar una base de datos o ejecutar código.
La arquitectura clave aquí es el ciclo de decisión condicional: tu agente analiza el estado actual, decide si necesita usar una herramienta, la ejecuta, y luego procesa los resultados antes de tomar la siguiente decisión. Esto crea un flujo dinámico donde el agente puede adaptarse en tiempo real a la información que recibe, similar a cómo un conductor decide cambiar de carril basándose en el tráfico que observa.
Cómo funciona en la práctica
Veamos un ejemplo paso a paso de integración de una herramienta de búsqueda web:
- Primero, defines la herramienta como una función Python que acepta parámetros específicos y devuelve resultados estructurados.
- Registras esta herramienta en tu grafo LangGraph usando el decorador
@toolo el métodoadd_tool(). - Configuras los nodos de tu grafo para que, cuando el agente detecte que necesita información externa, invoque la herramienta apropiada.
- El grafo maneja automáticamente la ejecución y pasa los resultados al siguiente nodo para procesamiento.
Ejemplo de código básico:
from langgraph.prebuilt import ToolNode
from langchain.tools import DuckDuckGoSearchRun
# Definir herramienta
search_tool = DuckDuckGoSearchRun()
# Integrar en grafo
tool_node = ToolNode(tools=[search_tool])
graph.add_node("search", tool_node)Caso de estudio
Implementemos un agente de investigación de mercado que use tres herramientas:
| Herramienta | Propósito | API/Origen |
|---|---|---|
| Búsqueda web | Obtener noticias recientes | DuckDuckGo |
| Consulta financiera | Obtener datos de acciones | Alpha Vantage API |
| Análisis de sentimiento | Procesar texto de noticias | Modelo local HuggingFace |
El flujo del agente:
- Recibe consulta: "Analiza el impacto de las nuevas regulaciones en Tesla"
- Invoca búsqueda web para obtener artículos recientes
- Ejecuta análisis de sentimiento en los resultados
- Consulta precios históricos de acciones de Tesla
- Sintetiza todos los datos en un reporte coherente
La clave del éxito está en el manejo adecuado de los errores de API y el tiempo de espera entre llamadas.
Errores comunes
- Falta de validación de entrada: No verificar que los parámetros pasados a las herramientas sean válidos, causando fallos en APIs externas.
- Manejo pobre de errores: No implementar reintentos o fallback cuando una herramienta falla, deteniendo todo el flujo.
- Dependencias circulares: Crear ciclos donde el agente llama repetidamente a la misma herramienta sin progresar.
- Exceso de herramientas: Agregar demasiadas herramientas hace lenta la decisión y confunde al agente.
- Falta de límites de costo: No limitar llamadas a APIs pagadas, resultando en gastos inesperados.
Checklist de dominio
- Puedo definir al menos 3 tipos diferentes de herramientas (API, base de datos, cálculo)
- Sé configurar timeouts y reintentos para llamadas a herramientas
- Implemento validación de parámetros antes de invocar herramientas
- Uso el estado de LangGraph para pasar resultados entre herramientas
- Configuro límites de costo y uso para APIs externas
- Pruebo fallos de herramientas y verifico que el agente se recupere
- Documento el propósito y parámetros de cada herramienta
Construye un agente de reservas de vuelos con herramientas múltiples
Objetivo
Crea un agente que pueda buscar vuelos, verificar disponibilidad y calcular precios usando herramientas externas.
Pasos
- Define tres herramientas:
search_flights(origin, destination, date): Simula búsqueda en una API de vuelos (puedes usar datos mock)check_availability(flight_id): Verifica si hay asientos disponiblescalculate_price(flight_id, passengers): Calcula el precio total con impuestos
- Crea un grafo LangGraph con:
- Nodo inicial que parsea la consulta del usuario
- Nodo de herramientas que puede invocar cualquiera de las tres
- Nodo de decisión que determina qué herramienta usar basado en el estado
- Nodo final que formatea la respuesta
- Implementa lógica para:
- Si el usuario pregunta "Vuelos de Madrid a Barcelona el 15 de junio", invocar
search_flights - Si luego pregunta "¿Hay disponibilidad en el vuelo IB123?", invocar
check_availability - Si pregunta precio para 2 pasajeros, invocar
calculate_price
- Si el usuario pregunta "Vuelos de Madrid a Barcelona el 15 de junio", invocar
- Agrega manejo de errores:
- Si una herramienta falla, el agente debe informar al usuario y sugerir alternativas
- Implementa timeout de 10 segundos para cada llamada
- Prueba con al menos 3 consultas diferentes y verifica que el flujo funcione correctamente.
- Usa diccionarios Python para simular respuestas de API si no quieres configurar APIs reales
- Considera agregar un nodo de 'fallback' que se active cuando ninguna herramienta es apropiada
- Implementa un contador en el estado para limitar el número máximo de llamadas a herramientas por sesión
Evalua tu comprension
Completa el quiz interactivo de arriba para ganar XP.