Introducción a LangChain

1

Desarrollo de aplicaciones con LLM utilizando LangChain

2

Estructura y módulos de LangChain

3

Uso de modelos Open Source de Hugging Face

4

Uso de modelos de OpenAI API

5

Prompt templates de LangChain

6

Cadenas en LangChain

7

Utility chains

8

RetrievalQA chain

9

Foundational chains

Quiz: Introducción a LangChain

Casos de uso de LangChain

10

Casos de uso de LangChain

11

¿Cómo utilizar LangChain en mi equipo?

Quiz: Casos de uso de LangChain

Manejo de documentos con índices

12

¿Cómo manejar documentos con índices en LangChain?

13

La clase Document

14

Document Loaders: PDF

15

Document Loaders: CSV con Pandas DataFrames

16

Document Loaders: JSONL

17

Document Transformers: TextSplitters

18

Proyecto de Chatbot: configuración de entorno para LangChain y obtención de datos

19

Proyecto de Chatbot: creación de documents de Hugging Face

Quiz: Manejo de documentos con índices

Embeddings y bases de datos vectoriales

20

Uso de embeddings y bases de datos vectoriales con LangChain

21

¿Cómo usar embeddings de OpenAI en LangChain?

22

¿Cómo usar embeddings de Hugging Face en LangChaing?

23

Chroma vector store en LangChain

24

Proyecto de Chatbot: ingesta de documents en Chroma

25

RetrievalQA: cadena para preguntar

26

Proyecto de Chatbot: cadena de conversación

27

Proyecto de Chatbot: RetrievalQA chain

Quiz: Embeddings y bases de datos vectoriales

Chats y memoria con LangChain

28

¿Para qué sirve la memoria en cadenas y chats?

29

Uso de modelos de chat con LangChain

30

Chat prompt templates

31

ConversationBufferMemory

32

ConversationBufferWindowMemory

33

ConversationSummaryMemory

34

ConversationSummaryBufferMemory

35

Entity memory

36

Proyecto de Chatbot: chat history con ConversationalRetrievalChain

Quiz: Chats y memoria con LangChain

Evolución del uso de LLM

37

LangChain y LLM en evolución constante

No tienes acceso a esta clase

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

Curso de LangChain

Curso de LangChain

Omar Espejel

Omar Espejel

Prompt templates de LangChain

5/37
Recursos

Aportes 9

Preguntas 2

Ordenar por:

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

Algo interesante que también puedes hacer es pedirle que responda en algún formato especifico, como por ejemplo JSON, muy útil cuando lo que deseas generar es algún insumo para otro proceso (ingesta de datos, o cosas por el estilo)

Código utilizando la documentación actual:

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.messages import HumanMessage, SystemMessage

llm_gpt3_5 = ChatOpenAI(
    model='gpt-3.5-turbo',
    n=1,
    temperature=0.3

prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "Responde a la pregunta con base en el siguiente contexto:{contexto}, parce. Si la pregunta no puede ser respondida con la información proporcionada, responde con la siguiente frase No tengo ni idea, ome"),
         ("human", "{input}")
    ]
)


chain = prompt | llm_gpt3_5
response = chain.invoke(
    {
        "contexto": "Los Modelos de Lenguaje Grandes (LLMs) son los últimos modelos utilizados en PNL. Su rendimiento superior sobre los modelos más pequeños los ha hecho increíblemente útiles para los desarrolladores que construyen aplicaciones habilitadas para PNL. Estos modelos pueden ser accedidos a través de la biblioteca `transformers` de Hugging Face, a través de OpenAI usando la biblioteca `openai`, y a través de Cohere usando la biblioteca `cohere`.",
        "input": ["¿Que es un LLM?"]
    }
)
response.content
Que valioso es este curso, increible!

📝 Generación de Prompts

Los prompts de los LLM tienen una estructura fija basada en 4 componentes, la totalidad de esta dará información suficiente para retornar una respuesta.
.

  • Instrucción: una tarea o instrucción específica que desea que el modelo realice
  • Contexto: puede implicar información externa o contexto adicional que pueda dirigir el modelo hacia mejores respuestas
  • Datos de entrada: es la entrada o pregunta para la que estamos interesados en encontrar una respuesta
  • Indicador de salida: indica el tipo o el formato de la salida. No todos los componentes son necesarios para un aviso y el formato depende de la tarea en cuestión.

.
Para ello, empleamos PromptTemplate desde langchain/prompts:

import { PromptTemplate } from 'langchain/prompts'

const llm = new OpenAI({
	// code ...
})

const prompt = new PromptTemplate({
    template: 'Tell me a {adjective} joke about Disney.',
    inputVariables: ['adjective'],
})

const formattedPrompt = await prompt.format({
    adjective: 'funny',
})

console.log(await llm.predict(formattedPrompt))

Nota.
Mediante una plantilla template, se sustituye el placeholder {adjective} mediante el uso de inputVariables.
Con format, se reemplaza la referencia para generar una prompt formateado para ser empleado en la nueva petición a OpenAI.

![](https://static.platzi.com/media/user_upload/image-002a39e3-1a9b-4ea1-81cd-21e5d197281f.jpg) Pero adicionándole solo esa orden en la plantilla, ahora si solo se limita a respoder que no tiene ni idea, ome!! ![](https://static.platzi.com/media/user_upload/image-6ce956ff-0b52-4a50-a5b2-b1f93a5cb379.jpg)
Yo utilice una manera diferente, no se si le funcione a alguien: from getpass import getpass OPENAI\_API\_KEY = getpass() import os os.environ\['OPENAI\_API\_KEY'] = OPENAI\_API\_KEY from langchain.prompts.chat import ( ChatPromptTemplate, HumanMessagePromptTemplate, SystemMessagePromptTemplate) from langchain.schema import HumanMessage, SystemMessagefrom langchain\_openai import ChatOpenAI chat = ChatOpenAI( model = "gpt-3.5-turbo", temperature = 0, n = 1) messages = \[ SystemMessage( content="\*\*Contexto:\*\* Los modelos de lenguaje de gran escala (MLGEs) son lo último en modelos usados en el Procesamiento del Lenguaje Natural (NLP). Útiles para los desarrolladores que arman aplicaciones con NLP. Estos modelos se pueden acceder vía librería `transformers` de Hugging Face, vía OpenAI usando la librería `openai`, y vía Cohere usando la librería `cohere`." ), HumanMessage( content="\*\*Pregunta:\*\* ¿Qué librerías están cerca de Buenos Aires?" ), SystemMessage( content="\*\*Instrucción:\*\* Responde la pregunta basándote en el contexto de abajo. Si la pregunta no puede ser respondida usando la información proporcionada, responde con 'Ni idea, che'.", style="instruction" )] \# ESTA RESPUESTA TRAE TODO LO QUE # chat(messages) \# procesar los mensajesla\_respuesta = chat(messages)response = la\_respuesta.content print(response) \# SI QUIERO SABER EN TOTAL CUANTOS TOKENS UTILIZAMOS SERIAla\_respuesta.response\_metadata\['token\_usage']\['total\_tokens'] ```js from getpass import getpass OPENAI_API_KEY = getpass() import os os.environ['OPENAI_API_KEY'] = OPENAI_API_KEY from langchain.prompts.chat import ( ChatPromptTemplate, HumanMessagePromptTemplate, SystemMessagePromptTemplate ) from langchain.schema import HumanMessage, SystemMessage from langchain_openai import ChatOpenAI chat = ChatOpenAI( model = "gpt-3.5-turbo", temperature = 0, n = 1 ) messages = [ SystemMessage( content="**Contexto:** Los modelos de lenguaje de gran escala (MLGEs) son lo último en modelos usados en el Procesamiento del Lenguaje Natural (NLP). Útiles para los desarrolladores que arman aplicaciones con NLP. Estos modelos se pueden acceder vía librería `transformers` de Hugging Face, vía OpenAI usando la librería `openai`, y vía Cohere usando la librería `cohere`." ), HumanMessage( content="**Pregunta:** ¿Qué librerías están cerca de Buenos Aires?" ), SystemMessage( content="**Instrucción:** Responde la pregunta basándote en el contexto de abajo. Si la pregunta no puede ser respondida usando la información proporcionada, responde con 'Ni idea, che'.", style="instruction" ) ] # ESTA RESPUESTA TRAE TODO LO QUE # chat(messages) # procesar los mensajes la_respuesta = chat(messages) response = la_respuesta.content print(response) # SI QUIERO SABER EN TOTAL CUANTOS TOKENS UTILIZAMOS SERIA la_respuesta.response_metadata['token_usage']['total_tokens'] ```
Sería interesante actualizar el curso usando la función ChatOpenAI en convinación con system messages.
![](https://static.platzi.com/media/user_upload/image-4f438a9c-96cd-4087-8c1c-dee006ea482a.jpg) Bueno, aquí al mismo template de la clase, le hice una pregunta que no esta en el contexto dado de LLMs y me la respondío bien. Ahora supongo que porque la pregunta se puede determinar que esta dentro del contexto Colombiano.
\*combinación