Tavily Search

Intermedio
LangChain
LangChain
Actualizado: 09/07/2025

¡Desbloquea el curso completo!

IA
Ejercicios
Certificado
Entrar

Instalación y configuración de Tavily API

Tavily Search representa una evolución significativa en las herramientas de búsqueda diseñadas específicamente para agentes de inteligencia artificial. A diferencia de los motores de búsqueda tradicionales que devuelven enlaces y fragmentos de texto, Tavily proporciona respuestas estructuradas y optimizadas para el procesamiento por parte de modelos de lenguaje.

La principal ventaja de Tavily radica en su capacidad para entregar información factual en tiempo real con un formato que los LLMs pueden interpretar de manera más eficiente. Esto elimina la necesidad de procesar múltiples resultados de búsqueda y extraer información relevante, un proceso que consume tokens y tiempo de procesamiento.

Instalación del paquete

Para integrar Tavily en tu proyecto de LangChain, necesitas instalar el paquete específico que proporciona la integración nativa:

pip install langchain-tavily langchain-openai

Este paquete incluye todas las dependencias necesarias y está optimizado para LangChain 0.3, garantizando compatibilidad con las últimas características del framework.

Obtención de la clave API

El primer paso para utilizar Tavily es registrarse en su plataforma y obtener una clave API. Dirígete a tavily.com y crea una cuenta. Una vez registrado, accede al panel de control donde encontrarás tu clave API única.

Tavily ofrece un plan gratuito que incluye un número limitado de consultas mensuales, suficiente para desarrollo y pruebas. Para aplicaciones en producción, están disponibles planes de pago con límites más amplios y características adicionales.

Configuración de variables de entorno

La forma más segura de gestionar tu clave API es utilizando variables de entorno. Crea un archivo .env en la raíz de tu proyecto:

TAVILY_API_KEY=tu_clave_api_aqui

Para cargar automáticamente las variables de entorno en tu aplicación Python, instala y utiliza python-dotenv:

pip install python-dotenv

Luego, en tu código Python:

from dotenv import load_dotenv
import os

# Cargar variables de entorno
load_dotenv()

# Verificar que la clave está disponible
tavily_api_key = os.getenv("TAVILY_API_KEY")
if not tavily_api_key:
    raise ValueError("TAVILY_API_KEY no encontrada en las variables de entorno")

Configuración alternativa

Si prefieres no utilizar variables de entorno, puedes configurar la clave directamente en tu código, aunque no se recomienda para aplicaciones en producción:

import os

# Configuración directa (solo para desarrollo)
os.environ["TAVILY_API_KEY"] = "tu_clave_api_aqui"

Verificación de la instalación

Para confirmar que la instalación y configuración son correctas, ejecuta una prueba básica de conectividad:

from langchain_tavily import TavilySearch

# Crear instancia de TavilySearch
search = TavilySearch()

# Verificar que la herramienta se inicializa correctamente
print(f"Herramienta configurada: {search.name}")
print(f"Descripción: {search.description}")

Si la configuración es correcta, deberías ver la información básica de la herramienta sin errores de autenticación.

Consideraciones de seguridad

Mantén tu clave API segura y nunca la incluyas directamente en el código fuente que pueda ser compartido o versionado. Utiliza siempre variables de entorno o sistemas de gestión de secretos en entornos de producción.

Tavily implementa límites de velocidad (rate limiting) para prevenir el abuso de su API. Estos límites varían según tu plan de suscripción y se aplican tanto por minuto como por mes. Monitorea tu uso a través del panel de control de Tavily para evitar interrupciones en tu aplicación.

TavilySearch para búsquedas optimizadas para IA

Guarda tu progreso

Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.

Progreso guardado
Asistente IA
Ejercicios
Iniciar sesión gratis

Más de 25.000 desarrolladores ya confían en CertiDevs

Una vez configurada la API de Tavily, podemos explorar las capacidades específicas que hacen de TavilySearch una herramienta superior para agentes de IA. La clase TavilySearch de LangChain proporciona una interfaz optimizada que aprovecha al máximo las características únicas de este motor de búsqueda.

Importación y configuración básica

La integración con LangChain se realiza mediante la importación directa de la clase TavilySearch:

from langchain_tavily import TavilySearch

# Crear instancia básica
search_tool = TavilySearch()

Esta configuración básica utiliza los parámetros por defecto optimizados para la mayoría de casos de uso. Sin embargo, TavilySearch ofrece múltiples parámetros de configuración que permiten ajustar el comportamiento según las necesidades específicas de tu aplicación.

Parámetros de configuración avanzada

TavilySearch permite personalizar varios aspectos de la búsqueda para optimizar los resultados según el contexto de uso:

from langchain_tavily import TavilySearch

# Configuración personalizada
search_tool = TavilySearch(
    max_results=5,           # Número máximo de resultados
    search_depth="advanced", # Profundidad de búsqueda
    include_domains=["reuters.com", "bbc.com"],  # Dominios específicos
    exclude_domains=["example.com"],             # Dominios a excluir
    include_answer=True,     # Incluir respuesta resumida
    include_raw_content=False # Excluir contenido HTML crudo
)

El parámetro max_results controla la cantidad de resultados devueltos, equilibrando entre completitud de información y eficiencia de procesamiento. Para aplicaciones que requieren respuestas rápidas, valores entre 3-5 suelen ser óptimos.

El search_depth puede configurarse como "basic" o "advanced". El modo avanzado proporciona análisis más profundo del contenido pero consume más recursos y tiempo de procesamiento.

Ejemplo completo:

import os
import getpass
from langchain_tavily import TavilySearch
from langchain_openai import ChatOpenAI

# Configurar API keys
if not os.environ.get("TAVILY_API_KEY"):
    os.environ["TAVILY_API_KEY"] = getpass.getpass("Tavily API key:\n")

if not os.environ.get("OPENAI_API_KEY"):
    os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API key:\n")

# Instanciar la herramienta de búsqueda
search_tool = TavilySearch(
    max_results=5,
    topic="general",
    include_answer=True,
    include_raw_content=False,
    include_images=False,
    search_depth="basic"
)

# Usar la herramienta directamente
result = search_tool.invoke("¿Cuál es la capital de Francia?")
print(result)

Integración con herramientas de LangChain

TavilySearch se integra perfectamente con el ecosistema de herramientas de LangChain, permitiendo su uso en cadenas más complejas:

from langchain_core.tools import Tool
from langchain_tavily import TavilySearch

# Crear herramienta personalizada
tavily_search = TavilySearch(max_results=3)

# Definir herramienta para uso en cadenas
search_tool = Tool(
    name="tavily_search",
    description="Busca información actualizada en tiempo real usando Tavily",
    func=tavily_search.invoke
)

# Ejemplo de uso en una cadena
def buscar_y_resumir(consulta):
    # Buscar información
    resultados = search_tool.invoke(consulta)
    
    # Procesar con LLM
    prompt = f"Resume la siguiente información: {resultados}"
    respuesta = llm.invoke(prompt)
    
    return respuesta.content

Uso básico con LCEL en LangChain

El siguiente ejemplo muestra cómo armar un pipeline típico de langchain pero incorporando TavilySearch utilizando RunnableLambda:

from langchain_tavily import TavilySearch
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableLambda
from langchain_core.output_parsers import StrOutputParser

search_tool = TavilySearch(max_results=5, include_answer=True)
llm = ChatOpenAI(model="gpt-4o", temperature=0)

prompt = ChatPromptTemplate.from_template("""
Basándote en los siguientes resultados de búsqueda, responde la pregunta de forma clara y precisa:

Pregunta: {query}

Resultados de búsqueda:
{search_results}

Respuesta:
""")

# Función que combina búsqueda y formateo
def search_and_format(query):
    search_results = search_tool.invoke(query)
    return {
        "query": query,
        "search_results": search_results
    }

# Crear la cadena LCEL
chain = (
    RunnableLambda(search_and_format)
    | prompt
    | llm
    | StrOutputParser()
)

# Usar
result = chain.invoke("¿Cuál es el precio actual del Bitcoin?")
print(result)

Otro ejemplo pero usando RunnablePassthrough:

from langchain_core.runnables import RunnablePassthrough, RunnableLambda

# Función que solo hace la búsqueda
def do_search(inputs):
    query = inputs["query"]
    search_results = search_tool.invoke(query)
    return search_results

# Prompt que recibe ambos
prompt = ChatPromptTemplate.from_template("""
Basándote en los siguientes resultados de búsqueda, responde la pregunta:

Pregunta: {query}

Resultados:
{search_results}

Respuesta:
""")

# Cadena LCEL más elegante
chain = (
    {"query": RunnablePassthrough(), "search_results": RunnableLambda(do_search)}
    | prompt
    | llm
    | StrOutputParser()
)

# Usar - solo pasas la query como string
result = chain.invoke("¿Cuáles son las últimas noticias sobre inteligencia artificial?")
print(result)

Ventajas sobre alternativas tradicionales

Comparado con Google Search o DuckDuckGo, Tavily ofrece ventajas específicas para aplicaciones de IA:

  • Respuestas estructuradas: Los resultados vienen pre-procesados y organizados, eliminando la necesidad de parsing HTML complejo.
  • Optimización para LLMs: El contenido se presenta en un formato que los modelos de lenguaje pueden interpretar más eficientemente.
  • Información factual: Tavily prioriza fuentes confiables y información verificada, reduciendo la propagación de desinformación.
  • Tiempo real: Los resultados incluyen información actualizada, crucial para consultas sobre eventos recientes o datos cambiantes.

Manejo de errores y limitaciones

Es importante implementar manejo de errores robusto al trabajar con APIs externas:

from langchain_tavily import TavilySearch
import logging

def busqueda_segura(query, max_intentos=3):
    search_tool = TavilySearch(max_results=3)
    
    for intento in range(max_intentos):
        try:
            resultados = search_tool.invoke(query)
            return resultados
        
        except Exception as e:
            logging.warning(f"Intento {intento + 1} fallido: {e}")
            if intento == max_intentos - 1:
                return {"error": "Búsqueda no disponible temporalmente"}
    
    return None

Optimización de consultas

Para obtener los mejores resultados con Tavily, es recomendable formular consultas específicas y contextualizadas:

# Consultas optimizadas para Tavily
consultas_efectivas = [
    "precio actual Bitcoin enero 2024",  # Específica y temporal
    "nuevas regulaciones IA Unión Europea 2024",  # Contextualizada
    "resultados elecciones España últimas noticias"  # Actualizada
]

# Evitar consultas muy generales
consultas_ineficientes = [
    "qué es Bitcoin",  # Muy general
    "inteligencia artificial",  # Demasiado amplia
    "noticias"  # Sin contexto
]

La especificidad en las consultas permite a Tavily devolver información más relevante y actualizada, maximizando el valor de cada llamada a la API.

Aprendizajes de esta lección

  • Comprender la instalación y configuración de la API de Tavily en proyectos LangChain.
  • Aprender a gestionar de forma segura la clave API mediante variables de entorno.
  • Conocer los parámetros de configuración avanzada para personalizar las búsquedas con TavilySearch.
  • Integrar TavilySearch con LangChain y utilizarlo en cadenas de procesamiento con LCEL.
  • Identificar las ventajas de Tavily frente a motores de búsqueda tradicionales y cómo optimizar consultas para obtener mejores resultados.

Completa LangChain y certifícate

Únete a nuestra plataforma y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.

Asistente IA

Resuelve dudas al instante

Ejercicios

Practica con proyectos reales

Certificados

Valida tus conocimientos

Más de 25.000 desarrolladores ya se han certificado con CertiDevs

⭐⭐⭐⭐⭐
4.9/5 valoración