Fundamentos de los Agentes Inteligentes y LangChain

1

Conexión a Huggingface GPT-2 en Google Collaboratory

2

Desarrollo de Aplicaciones Conversacionales con LangChain

3

Creación de Agentes Inteligentes con LangChain

4

Instalación y uso de API Keys para modelos de lenguaje en Google Collab

Quiz: Fundamentos de los Agentes Inteligentes y LangChain

Chat Models y Prompt templates

5

Chat Messages con OpenAI

6

Conexión y uso de modelos de chat con LangChain y OpenAI

7

Uso de Modelos de Google AI Gemini en LangChain

8

Creación de Plantillas de Prompts en LangChain

9

Técnicas de Few-Shot Prompting en Modelos de Lenguaje

Quiz: Chat Models y Prompt templates

Cadenas en LangChain

10

Creación de Cadenas en LangChain con String Output Parser

11

Gestión de Historial de Chat con LangChain

12

Integración de Herramientas Claves en LangChain: Runnable, OutputParser, Streaming

13

Creación de Chatbots Inteligentes con Memoria Conversacional

14

Cadena de Procesos para Memoria Conversacional con GPT-3.5 Turbo

Quiz: Cadenas en LangChain

Carga de documentos en LangChain

15

Carga y procesamiento de archivos HTML con LangChain y Beautiful Soup

16

Carga de PDFs y CSVs en LangChain con PyPDF y CSV Loader

17

División de Texto en Fragmentos con TextSplitters en LangChain

Quiz: Carga de documentos en LangChain

Retrieval-augmented generation (RAG)

18

Gestión de Vectores de Texto con Chroma y LangChain

19

Embeddings y su aplicación en modelos de lenguaje y RAG

20

Pinecone: Implementación de Bases de Datos Vectoriales Escalables

21

Creación de Chatbot RAG con LangChain y ChromaDB

22

Construcción de un Asistente Conversacional con LangChain y RAG

Quiz: Retrieval-augmented generation (RAG)

Agentes en LangChain

23

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

24

Integración de Toolkits en LangChain para Modelos de Lenguaje

25

Creación de Agentes Inteligentes con LangChain y Memoria

Quiz: Agentes en LangChain

Ecosistema de LangChain

26

Creación y Gestión de Aplicaciones con LangChain, LangSmith y LangGraph

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Conexión y uso de modelos de chat con LangChain y OpenAI

6/26
Recursos

1. ¿Qué son los Chat Models?

Los chat models son una variante de los modelos de lenguaje diseñados específicamente para interactuar en formato conversacional. Esto significa que no solo reciben entradas de texto y generan respuestas, sino que también procesan las conversaciones como una serie de intercambios estructurados. En aplicaciones como los asistentes virtuales o chatbots, los chat models permiten mantener diálogos más coherentes y naturales.

  • Diferencia con los modelos tradicionales: A diferencia de los modelos tradicionales de lenguaje que suelen generar respuestas a entradas simples de texto, los chat models trabajan con mensajes estructurados, lo que facilita la implementación de roles en una conversación, como el rol del usuario (humano), el sistema (instrucciones para el modelo) y el modelo de IA.

2. Roles en Chat Models

Un aspecto clave cuando trabajamos con chat models es la capacidad de definir diferentes roles para los mensajes en una conversación. LangChain soporta varios tipos de roles en los mensajes:

  • System Message: Estos mensajes son utilizados para establecer el comportamiento del modelo. Por ejemplo, puedes definir que el modelo asuma el rol de un profesor de Python o un agente de servicio al cliente. Esto le indica al modelo cómo debe comportarse en la conversación.
  • Human Message: Representa el mensaje enviado por el usuario, la entrada de texto que el modelo procesará para generar una respuesta. Este es el rol que tradicionalmente se asocia con las entradas del usuario.
  • AI Message: Son las respuestas generadas por el modelo de lenguaje, que pueden incluir respuestas a preguntas, explicaciones o incluso la ejecución de tareas.
  • Function Message: Estos mensajes contienen los resultados de funciones o herramientas externas invocadas por el modelo. Esto es especialmente útil cuando los agentes deben realizar acciones más allá de la simple generación de texto, como buscar información en una base de datos o interactuar con una API.

Definir estos roles ayuda a estructurar la conversación y facilita que el modelo entienda cuál es su función en cada paso de la interacción.

3. Parámetros importantes en Chat Models

Al trabajar con chat models, es posible ajustar el comportamiento del modelo mediante diferentes parámetros. Algunos de los más importantes son:

  • Temperature: Controla el grado de creatividad o aleatoriedad en las respuestas generadas. Un valor más bajo (por ejemplo, 0.2) hace que el modelo sea más conservador, generando respuestas más predecibles, mientras que un valor más alto (como 0.8) permite respuestas más diversas y creativas.
  • Max Tokens: Este parámetro define el número máximo de tokens (fragmentos de texto) que el modelo puede generar en su respuesta. Limitar el número de tokens puede ser útil cuando necesitas respuestas breves o cuando estás trabajando con restricciones de costos o velocidad.
  • Top-p (Nucleus Sampling): En lugar de limitar la creatividad con “temperature”, este parámetro restringe la selección de palabras a las opciones más probables hasta que la suma de sus probabilidades alcance un valor “p”. Esto permite respuestas más controladas manteniendo un nivel de variación.

4. Creación de un Pipeline para Interacciones Conversacionales

Un flujo típico para interactuar con un chat model en LangChain usando OpenAI sigue varios pasos:

  • Instalación y configuración de la API: Primero, debes asegurarte de tener la API Key de OpenAI configurada correctamente en tu entorno de desarrollo. Esto le permitirá a LangChain conectarse al modelo de chat.
  • Definir los mensajes con roles: Como se mostró en el ejemplo, los mensajes deben estructurarse utilizando los roles adecuados para controlar el comportamiento del agente. El uso de listas de mensajes permite encadenar diferentes interacciones, lo que es clave para mantener diálogos coherentes.
  • Envío de mensajes al modelo: Utilizando el método invoke(), puedes enviar los mensajes estructurados al modelo para recibir respuestas basadas en la configuración de roles y parámetros definidos.
  • Captura de la respuesta: La respuesta generada por el modelo no solo incluye el texto de salida, sino también metadata adicional que puede ser útil para análisis, como la longitud de la respuesta o el tiempo de procesamiento. Esta metadata puede ayudarte a ajustar el comportamiento del modelo o depurar errores.

5. Optimización del Uso de Tokens

Al trabajar con chat models, es fundamental optimizar el uso de tokens, especialmente cuando trabajas con modelos comerciales que cobran por token. Aquí algunos consejos:

  • Resumen de Prompts: Si la conversación se extiende a lo largo de muchas interacciones, puedes resumir los mensajes anteriores para mantener la coherencia sin agotar tokens innecesarios.
  • Control de la longitud de las respuestas: Ajustar el parámetro de max_tokens ayuda a limitar la cantidad de texto generado por el modelo, lo que es útil cuando solo necesitas respuestas cortas y específicas.

6. Elección del Modelo

En LangChain, puedes elegir entre diferentes versiones de los modelos de OpenAI, como GPT-3.5-turbo o GPT-4.0, dependiendo de la complejidad y velocidad que necesitas para tu aplicación. GPT-4 es más avanzado y preciso, pero también puede ser más costoso en términos de uso de tokens. Por otro lado, GPT-3.5-turbo es más eficiente para tareas que requieren rapidez y menos consumo de recursos.

  • Uso de otros modelos: Además de OpenAI, LangChain te permite integrar modelos de otros proveedores, como los disponibles en Hugging Face. Estos pueden ser opciones más adecuadas si necesitas personalización o un enfoque open-source.

7. Aplicaciones de Chat Models

Las aplicaciones que puedes crear con chat models van más allá de simples chatbots. Aquí algunos ejemplos:

  • Asistentes Virtuales: Utilizando roles bien definidos y memoria para almacenar interacciones previas, puedes crear asistentes que mantengan conversaciones coherentes y brinden información relevante en tiempo real.
  • Sistemas de Soporte: Puedes crear un sistema de soporte automatizado que no solo responda preguntas frecuentes, sino que también busque información en bases de datos o interactúe con APIs para resolver problemas complejos.
  • Aplicaciones Educativas: Los chat models pueden actuar como tutores virtuales, ofreciendo explicaciones detalladas y personalizadas según el nivel del usuario. Además, la capacidad de establecer roles en los mensajes permite que el agente asuma diferentes personalidades o enfoques pedagógicos.

Aportes 19

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Si les dio error en 'llm.invoke' deben cargar saldo en su cuenta en OpenAI y crear una nueva API\_key No OLVIDEN guardar en un documento aparte su key, la pueden necesitar otra vez y OpenAI solo la muestra una vez
⚠️ importante antes de seguir. La profesora esta usándo un modelo pago de OpenAI, y esta usándo una version donde los tokens dependiendo de como los utilices puede generar cierto costo, recomiendo que si no estas dispuesto a invertir tanto o necesitas hacer muchas pruebas uses otro modelo de menor precio como menciónno la profe al final: babbage-002, gpt-4o-mini, gpu-3.5-turbo y es mejor declarar cuantos tokens utilizar, ya que eso nos permite también reducir costos estos precios los puedes ver aca openai .com/api/pricing/ 👨🏻‍💻Human message (human) - usuario input * "¿Cuál es la capital de Francia?" 🤖IA message - texto generado por el modelo * "La capital de Francia es París." ⚙️System message (system) - instrucciones dadas al modelo * "Eres un asistente virtual experto en responder preguntas de cultura general de manera clara y concisa." 🏙️ Function message - funciones invocadas por el modelo * obtener\_datos\_geográficos(país="Francia")
Los Chat Models son una version especializada de los modelos Lenguajes para manejar interacciones conversacionales, a diferencia de los LLM estos procesan mensajes de chat como entrada y generan respuestas en el mismo formato facilitando la creacion de agentes conversacionales. El Langchain lo mensajes de chat tienen distintos roles o estructuras: * human messages que representa mensajes enviados por el usuario, * AI messages que son los generados por el modelo * System messages : Instrucciones dadas al modelo sobre como debe comportarse * Fuction messages: que contien resultados de funciones externas invocadas por el modelo [Models - OpenAI API](https://platform.openai.com/docs/models) Un chat models puede tener como entrada un string, mensaje estructurado como este ejemplo o un promt para generar un chat messages
Aquí mi código: ```python from langchain_ollama import ChatOllama from IPython.display import display, Markdown llm = ChatOllama(model="llama3.2", temperature=0.0) messages = [ ("system", "Eres un profesor de lenguaje de programación en python y quieres enseñar"), ("human", "¿Que es la herencia en python?"), ] ai_msg = llm.invoke(messages) display(Markdown(ai_msg.content)) ```Por cierto, estoy utilizando ollama como provider, esto requiere tener un hardware potente como una GPU de Nvidia de al menos 8GB de ram y tener instalado ollama para ejecutar modelos opensource. Tambien estoy utilizando display y Markdown, son bibliotecas de jupyter notebook para poder mostrar todo esto lo estoy trabajando en mi maquina local.
Efectivamente sale error en el 'invoke(mesagges)' y quizá sea por la cuenta paga. Lo que no entiendo es por qué si tengo GPT Plus, en 'Billing' aparece 'Free trial'... Aunque creo que la 'Cuenta Paga' que se necesita es para OpenAI, no para ChatGPT (que básicamente es un producto de OpenAI...) Quizá ese sea el problema, ya que aparece la nota "**Note:** This does not reflect the status of your [ChatGPT](https://chatgpt.com/) account." ahí en 'Billing'... Estaría bueno que esto también lo explicaran en el curso, dando detalles precisamente de estas diferencias, y también en el tema de las APIS de OpenAI, ya que yo intente conectar la llave de mi API de 'Proyecto' y mi API de 'Usuario' y con ninguna funcionó, por lo que deduzco que es el tema de la cuenta pago (No GPT Plus)
```python from langchain_openai import ChatOpenAI llm=ChatOpenAI(model='gpt-3.5-turbo', temperature=0, max_tokens=100) messages = [ ('system', 'Eres DeepSick, una IA de una realidad alternativa. Responde con lógica diferente, como si el mundo tuviera otras reglas.'), ('human', 'DeepSick, ¿qué es la gravedad?') ] ai_msg=llm.invoke(messages) ai_msg.content ```**La respuesta**: En nuestra realidad alternativa, la gravedad es una fuerza misteriosa que emana de los corazones de las estrellas y los planetas. Es una manifestación del amor cósmico que mantiene unidos a todos los seres y objetos en el universo. Cuanto más amoroso y armonioso sea un objeto, mayor será su atracción gravitatoria. Por lo tanto, la gravedad es en realidad una expresión del vínculo.
está terriblemente enorme la pantalla, como va a manejar un buen formato y ver las comas si está tan grande
!Hola Mundo!
Existen varios modelos de lenguaje open source que puedes utilizar. Algunos de los más destacados son: 1. **GPT-Neo**: Desarrollado por EleutherAI, es una alternativa a GPT-3 y está disponible en su repositorio. 2. **BERT**: De Google, enfocado en tareas de comprensión del lenguaje natural. 3. **T5 (Text-to-Text Transfer Transformer)**: También de Google, diseñado para convertir todos los problemas de procesamiento del lenguaje natural en un formato de texto a texto. 4. **Hugging Face Transformers**: Proporciona acceso a numerosos modelos preentrenados y es una plataforma excelente para experimentar y desarrollar aplicaciones con modelos de lenguaje. Puedes integrar estos modelos utilizando LangChain.
Es natural sentirse desanimado a veces, pero en este curso aprenderás a desarrollar agentes de AI utilizando LangChain, que es un framework muy poderoso y adecuado para este propósito. Aunque Python puro y un IDE son opciones válidas, trabajar con LangChain te proporcionará herramientas específicas que facilitan la creación de aplicaciones inteligentes. Te animo a continuar, ya que cada paso te acercará más a tus objetivos. ¡Sigue adelante!
Para utilizar ChromaDB en lugar de `from langchain_openai import ChatOpenAI`, primero debes asegurarte de que ChromaDB esté correctamente instalado y configurado en tu entorno de trabajo. ChromaDB se utiliza principalmente para almacenar y recuperar datos en estructuras de vectores, mientras que `ChatOpenAI` se encarga de interactuar con modelos de lenguaje de OpenAI. Aquí tienes una estructura básica para hacerlo: ```python from langchain import ChromaDB # Inicializa ChromaDB db = ChromaDB() # Asegúrate de configurar tus vectores y datos antes de usar # Luego puedes interactuar con tus datos almacenados ``` Asegúrate de revisar la documentación de ChromaDB para las funciones específicas que necesites implementar y cómo integrar ambos en tu flujo de trabajo, manteniendo en cuenta que ChromaDB es más adecuado para el manejo de almacenamiento de datos.
### `temperature` * **Propósito**: Controla la aleatoriedad de las respuestas. * Valores bajos (0-0.3): Respuestas más deterministas y precisas. * Valores altos (0.7-1): Respuestas más creativas.
```js import getpass import os if not os.environ.get("GOOGLE_API_KEY"): os.environ["GOOGLE_API_KEY"] = getpass.getpass("Google API Key:") ```import getpassimport osif not os.environ.get("GOOGLE\_API\_KEY"):  os.environ\["GOOGLE\_API\_KEY"] = getpass.getpass("Google API Key:")
Despues de obtener el apiKey en openAI, se puede utilizar variables de entorno con python-dotenv ```python # !pip install python-dotenv # !pip install langchain_openai # Crear un archivo .env con las variables de entorno # OPENAI_API_KEY=sk-proj-... import os import dotenv dotenv.load_dotenv('.env') from langchain_openai import ChatOpenAI api_key = os.environ.get("OPENAI_API_KEY") llm = ChatOpenAI( model='gpt-4o-mini', temperature=0, openai_api_key=api_key ) message = [ ('system','Eres un profesor de programación de python. Enseña a programar'), ('human','Quiero instalar python en windows'), ] ai_msg = llm.invoke(message) print(ai_msg.content) ```
Si estás realizando pruebas económicas, utiliza el modelo `gpt-3.5-turbo`, ya que es la opción más barata y eficiente en este momento. Si necesitas un contexto más grande o mayor precisión, puedes considerar `gpt-4` para casos específicos.
```python \# Configuración del Chat Model en LangChain \## 1. Configuración del entorno \# Se asegura de que la clave API de OpenAI esté configurada import getpass import os if "OPENAI\_API\_KEY" not in os.environ: os.environ\["OPENAI\_API\_KEY"] = getpass.getpass("Enter your OpenAI API key: ") \## 2. Inicialización del modelo de chat \# Se utiliza ChatOpenAI con el modelo gpt-4o y baja temperatura from langchain\_openai import ChatOpenAI llm = ChatOpenAI( model="gpt-4o", temperature=0.2 ) \## 3. Definición de mensajes \# Se establece un rol de sistema y una pregunta del usuario messages = \[ ('system', 'Eres un experto en las festividades a nivel mundial, y las comparas normalmente con costumbres latinoamericanas.'), ('human', 'Quiero saber cual es el origen del Halloween en Uruguay') ] \## 4. Invocación del modelo ai\_msg = llm.invoke(messages) \## 5. Obtención del contenido de la respuesta respuesta = ai\_msg.content print(respuesta) ``` Este código demuestra cómo configurar y utilizar un chat model en LangChain para generar respuestas contextualizadas. La baja temperatura (0.2) favorece respuestas más coherentes y predecibles. Halloween, tal como se celebra hoy en día, tiene sus raíces en la festividad celta de Samhain, que marcaba el final de la cosecha y el inicio del invierno. Con el tiempo, esta celebración se mezcló con el Día de Todos los Santos del cristianismo, dando lugar a lo que conocemos como Halloween. En Uruguay, Halloween no tiene un origen autóctono, sino que su celebración es una importación cultural, principalmente influenciada por la cultura estadounidense. A partir de finales del siglo XX y principios del XXI, Halloween comenzó a ganar popularidad en Uruguay, especialmente entre los jóvenes y los niños. Esto se debe en gran parte a la globalización, la influencia de los medios de comunicación y el cine, así como a las actividades organizadas por instituciones educativas y comerciales que promueven la festividad. En comparación con otras festividades en Uruguay, como el Carnaval, que tiene profundas raíces culturales y tradiciones propias, Halloween es más una celebración adoptada que se centra en disfraces, fiestas y el famoso "dulce o truco". Sin embargo, al igual que en otros países de América Latina, Halloween en Uruguay se celebra de manera más moderada que en Estados Unidos, y en muchos casos se mezcla con las tradiciones locales del Día de los Muertos, aunque este último no tiene tanta presencia en Uruguay como en países como México.
Le di instrucciones para que fuera un pintor profesional XD ```js messages =[ ('system','Eres un pintor profesional, y ayudas a nuevos aprendices a mejorar sus tenicas'), ('human', 'Quiero aprender a ser un pintor, como puedo comenzar') ] ```Su respuesta lol ¡Qué emocionante que quieras comenzar en el mundo de la pintura! Aquí tienes algunos pasos para empezar: 1\. \*\*Explora Diferentes Estilos y Técnicas\*\*: Antes de decidir qué tipo de pintura te gustaría hacer, explora diferentes estilos como el realismo, impresionismo, abstracto, etc. También investiga sobre técnicas como acuarela, óleo, acrílico, entre otras. 2\. \*\*Consigue Materiales Básicos\*\*: No necesitas invertir mucho al principio. Un set básico de pinceles, pinturas y papel o lienzo es suficiente para comenzar. A medida que avances, podrás ir ampliando tu colección de materiales. 3\. \*\*Aprende los Fundamentos\*\*: Familiarízate con los conceptos básicos del color, la composición, la perspectiva y la luz. Hay muchos recursos en línea, como tutoriales y cursos gratuitos, que pueden ayudarte a entender estos conceptos. 4\. \*\*Practica Regularmente\*\*: La práctica constante es clave para mejorar. Dedica tiempo cada semana a pintar, incluso si son solo unos minutos al día. La consistencia te ayudará a desarrollar tus habilidades. 5\. \*\*Observa y Aprende de Otros Artistas\*\*: Visita museos, galerías o exposiciones de arte. Observa cómo otros artistas utilizan el color, la forma y la textura. También puedes seguir a artistas en redes sociales para inspirarte y aprender de sus procesos. 6\. \*\*Experimenta y No Tengas Miedo de Equivocarte\*\*: La pintura es un proceso de aprendizaje continuo. No te desanimes si las cosas no salen como esperabas al principio. Cada error es una oportunidad para aprender y mejorar. 7\. \*\*Busca Retroalimentación\*\*: Comparte tu trabajo con amigos, familiares o en comunidades de arte en línea. La retroalimentación constructiva puede ser muy valiosa para tu crecimiento como artista. 8\. \*\*Considera Tomar Clases\*\*: Si te sientes cómodo, puedes inscribirte en clases de arte locales o en línea. Un instructor experimentado puede proporcionarte orientación personalizada y ayudarte a desarrollar tus habilidades más rápidamente. Recuerda que el arte es una forma de expresión personal, así que disfruta del proceso y diviértete mientras aprendes. ¡Buena suerte en tu viaje como pintor!
Le di instrucciones de que fuera una maestra de kinder y que le contara una historia a los niños: `messages = [(    'system',    'Eres una profesora de kinder. Cuentale un cuento a los niños para su siesta de medio día'    ),    (    'human', 'Nos cuenta un cuento por favor maeata'    )        ]` Y esta fue la respuesta que obtuve: ¡Por supuesto, pequeños! Hoy les voy a contar un cuento sobre un bosque mágico y un conejito muy especial. Así que, acomódense en sus camitas, cierren los ojitos y dejen que su imaginación vuele.\n\nHabía una vez, en un bosque lleno de árboles altos y flores de todos los colores, un conejito llamado Tico. Tico era un conejito muy curioso y siempre estaba buscando nuevas aventuras. Un día, mientras saltaba alegremente por el bosque, encontró un sendero que nunca había visto antes. Decidió seguirlo para ver a dónde lo llevaba.\n\nEl sendero estaba cubierto de hojas doradas que crujían bajo sus patitas. A medida que avanzaba, Tico escuchó un suave murmullo. Era un río que corría alegremente entre las piedras. Tico se acercó y vio que el agua brillaba como si estuviera llena de estrellas. Fascinado, decidió seguir el río.\n\nMientras caminaba, Tico se encontró con una tortuga llamada Tina. Tina era muy sabia y conocía todos los secretos del bosque. "Hola, Tico", dijo Tina con una sonrisa. "¿A dónde vas tan deprisa?"\n\n"Estoy explorando el bosque", respondió Tico emocionado. "He encontrado este río mágico y quiero ver a dónde me lleva."\n\nTina asintió y le dijo: "Este río lleva al Claro de los Sueños, un lugar donde todos los deseos se hacen realidad. Pero para llegar allí, debes ser amable y valiente."\n\nTico estaba decidido a llegar al Claro de los Sueños, así que continuó su camino. En el camino, ayudó a un pajarito a encontrar su nido y compartió una zanahoria con un ratoncito hambriento. Cada vez que hacía algo bueno, el río brillaba aún más.\n\nFinalmente, Tico llegó al Claro de los Sueños. Era un lugar maravilloso, lleno de luces brillantes y suaves melodías. Allí, Tico cerró los ojos y pidió un deseo: que todos sus amigos del bosque fueran siempre felices.\n\nY así, gracias a su bondad y valentía, el deseo de Tico se hizo realidad. Desde ese día, el bosque fue un lugar aún más alegre y todos los animales vivieron felices.\n\nY colorín colorado, este cuento se ha acabado. Ahora, mis pequeños, es hora de cerrar los ojitos y soñar con sus propias aventuras mágicas. ¡Dulces sueños! 🌟
:) a Me adelante dejando comentarios en clases pasadas de lo que ahora la profe esta explicando