Integración de herramientas externas en tu agente

Video
25 min~4 min lectura

Reproductor de video

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:

  1. Primero, defines la herramienta como una función Python que acepta parámetros específicos y devuelve resultados estructurados.
  2. Registras esta herramienta en tu grafo LangGraph usando el decorador @tool o el método add_tool().
  3. Configuras los nodos de tu grafo para que, cuando el agente detecte que necesita información externa, invoque la herramienta apropiada.
  4. 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:

HerramientaPropósitoAPI/Origen
Búsqueda webObtener noticias recientesDuckDuckGo
Consulta financieraObtener datos de accionesAlpha Vantage API
Análisis de sentimientoProcesar texto de noticiasModelo local HuggingFace

El flujo del agente:

  1. Recibe consulta: "Analiza el impacto de las nuevas regulaciones en Tesla"
  2. Invoca búsqueda web para obtener artículos recientes
  3. Ejecuta análisis de sentimiento en los resultados
  4. Consulta precios históricos de acciones de Tesla
  5. 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

  1. Puedo definir al menos 3 tipos diferentes de herramientas (API, base de datos, cálculo)
  2. Sé configurar timeouts y reintentos para llamadas a herramientas
  3. Implemento validación de parámetros antes de invocar herramientas
  4. Uso el estado de LangGraph para pasar resultados entre herramientas
  5. Configuro límites de costo y uso para APIs externas
  6. Pruebo fallos de herramientas y verifico que el agente se recupere
  7. 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

  1. 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 disponibles
    • calculate_price(flight_id, passengers): Calcula el precio total con impuestos
  2. 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
  3. 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
  4. 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
  5. Prueba con al menos 3 consultas diferentes y verifica que el flujo funcione correctamente.
Pistas
  • 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.