Creación de Agentes en LangChain con Tavily Search y OpenAI

Clase 23 de 26Curso de Agentes AI

Contenido del curso

Resumen

Los modelos de lenguaje ya no se limitan a generar texto. Gracias a los agentes en LangChain, es posible conectar un LLM con herramientas externas para ejecutar tareas complejas como búsquedas en Internet o consultas a bases vectoriales. Aquí se explica paso a paso cómo construir un agente que combine ambas capacidades usando Tavily search y una base de datos vectorial con documentación de LangSmith.

¿Qué son los agentes en LangChain y por qué importan?

Un agente en LangChain es un sistema que utiliza un modelo de lenguaje como motor de razonamiento para decidir qué acciones tomar y qué entradas proporcionar a esas acciones [00:02]. A diferencia de una cadena simple, el agente puede controlar partes del código o llamar a APIs externas para obtener datos en tiempo real [00:18].

Esto significa que el LLM no solo responde preguntas con su conocimiento preentrenado, sino que puede seleccionar dinámicamente la herramienta adecuada según la consulta del usuario.

¿Cómo funciona Tavily search como herramienta del agente?

Tavily search es una herramienta que permite realizar búsquedas en Internet en tiempo real [00:27]. Para usarla se necesita:

  • Crear una cuenta en Tavily y obtener una API key.
  • Importar TavilySearchResults desde langchain_community [01:02].
  • Configurar el número máximo de resultados, por ejemplo max_results=2 [01:20].

Al ejecutar una consulta como "¿Qué es OpenAI O1-mini?", Tavily devuelve URLs con la información encontrada junto con un extracto del contenido [01:35]. En el ejemplo, la primera URL corresponde a la documentación oficial de OpenAI.

¿Cómo se construye la base vectorial con documentación web?

El agente también necesita acceder a información específica almacenada localmente. Para esto se carga la documentación de LangSmith desde una URL y se procesa en varios pasos [02:20]:

  • Se utiliza un web base loader para importar el contenido de la página.
  • Se divide el texto en fragmentos con RecursiveCharacterTextSplitter, usando un tamaño de 1000 caracteres y un overlap de 200 [03:05].
  • Se crea la base vectorial usando OpenAI embeddings mediante el método from_documents [03:28].
  • Se genera un retriever a partir del vector store [03:42].

El concepto de overlap es importante: significa que cada fragmento comparte 200 caracteres con el anterior, lo que ayuda a mantener contexto entre fragmentos consecutivos.

¿Cómo se combinan las herramientas y se configura el agente?

Este agente está compuesto por dos tools [03:48]:

  • Tavily search: para búsquedas en Internet.
  • Retriever tool: para consultar la base vectorial con documentación de LangSmith.

Para crear el retriever tool se importa desde langchain.tools y se le asigna un nombre descriptivo como "Langsmith search", junto con un prompt que indica: "para cualquier pregunta sobre LangSmith, debes utilizar esta herramienta" [04:20]. Ambas herramientas se agrupan en una lista llamada tools.

Después se vinculan al modelo. En este caso se utiliza GPT-4o, al que se le pasa el conjunto de herramientas mediante bind_tools(tools) [05:15].

¿Cómo decide el agente qué herramienta usar?

Al enviar un mensaje del usuario se utiliza un HumanMessage importado desde langchain_core.messages [05:30]. El modelo evalúa la consulta y decide si necesita una herramienta o puede responder por sí solo.

  • Cuando el input es un simple "hi", no se llama a ninguna herramienta porque el LLM puede responder sin ayuda externa [06:05].
  • Cuando se pregunta "¿cuál es el clima en Bogotá?", el agente identifica que necesita datos en tiempo real y llama a Tavily automáticamente [06:25].

La respuesta incluye tanto el contenido generado como información sobre qué herramienta fue invocada, lo que permite verificar el comportamiento del agente.

¿Qué sigue para completar el agente?

Hasta este punto el agente funciona con llamadas individuales sin mantener contexto entre interacciones. El siguiente paso es darle estructura con memoria para que pueda sostener conversaciones y generar respuestas más completas para el usuario [06:50].

¿Ya has experimentado combinando herramientas en tus agentes? Comparte qué tipo de tools te gustaría integrar.

      Creación de Agentes en LangChain con Tavily Search y OpenAI