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

Entity memory

35/37
Recursos

Aportes 2

Preguntas 1

Ordenar por:

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

📝 Memorización por Entidades

.

ℹ️ Summary

Esta guía proporciona un caso de uso sobre “Entity Memory”, una estrategia de memorización basada en la extracción de entidades clave en una conversación.
.

🗂️ Background

Las “Entity Memory” son una estrategia de memoria que se centra en los hechos de entidades específicas en la conversación. Se extrae la información sobre entidades (utilizando un LLM) y construye su conocimiento sobre esa entidad a lo largo del tiempo (también utilizando un LLM).
.
Esta estrategia es particularmente útil para chatbots que necesitan extraer y entender información clave, como nombres de personas, identificadores de productos y otros detalles importantes.
.
Helper Links:

.

🎯 Problem

Implementar un “Entity Memory” utilizando TypeScript para un Chat con IA, extrayendo campos de interés, como por ejemplo nombre y empresa en una conversación.
.

🚧 Solution

LangChain posee diferentes tipos de estrategias para la memorización de contextos. Así mismo, se poseen diferentes cadenas que, bajo su definición, nos proveen de interfaces a fines a la implementación.
.
LLMChain es una cadena que se enfoca en realizar consultas contra LLMs. Siendo la cadena más especializada en la obtención de información como recuperador.

const chain = new LLMChain({
    llm: new OpenAI({
        temperature: 0.9,
        openAIApiKey: API_TOKEN,
    }),
    memory,
    prompt,
    verbose: true,
})

Dependiendo del escenario, LangChain provee de plantillas que permiten inicializar los LLM bajo un contexto que se irá desarrollando durante el tiempo de servicio. Por ejemplo, la plantilla ENTITY_MEMORY_CONVERSATION_TEMPLATE, nos provee de un prompt para establecer el contexto en la resolución de tareas variadas, desde responder preguntas simples hasta proporcionar explicaciones detalladas y discusiones sobre una amplia gama de temas.

You are an assistant to a human, powered by a large language model trained by OpenAI.

You are designed to be able to assist with a wide range of tasks, from answering simple questions to providing in-depth explanations and discussions on a wide range of topics. As a language model, you are able to generate human-like text based on the input you receive, allowing you to engage in natural-sounding conversations and provide responses that are coherent and relevant to the topic at hand.
You are constantly learning and improving, and your capabilities are constantly evolving. You are able to process and understand large amounts of text, and can use this knowledge to provide accurate and informative responses to a wide range of questions. You have access to some personalized information provided by the human in the Context section below. Additionally, you are able to generate your own text based on the input you receive, allowing you to engage in discussions and provide explanations and descriptions on a wide range of topics.

Overall, you are a powerful tool that can help with a wide range of tasks and provide valuable insights and information on a wide range of topics. Whether the human needs help with a specific question or just wants to have a conversation about a particular topic, you are here to assist.

Context:
{entities}

Current conversation:
{history}

Last line:

Human: {input}

You:

Para la memorización, LangChain provee la clase EntityMemory para gestionar la extracción de entidades y el resumen en la memoria en aplicaciones de chatbot.

const memory = new EntityMemory({
    llm: new OpenAI({
        temperature: 0,
        openAIApiKey: API_TOKEN,
    }),
})

🍻 Discussion

El ajuste del atributo temperature en los modelos, establece la capacidad determinista del LLM. La recomendación para la EntityMemory es en 0 por la abstracción exacta entre cada interacción. Sin embargo, en la cadena, su LLM dependerá en la depuración a operar según su tipo (Funcional o Utility).

import { LLMChain } from 'langchain/chains'
import { OpenAI } from 'langchain/llms/openai'
import {
    EntityMemory,
    ENTITY_MEMORY_CONVERSATION_TEMPLATE,
} from 'langchain/memory'
import { PromptTemplate } from 'langchain/prompts'

const API_TOKEN = // 👈 Enter the API Token from OpenAI

const prompt = new PromptTemplate({
    inputVariables: ENTITY_MEMORY_CONVERSATION_TEMPLATE.inputVariables,
    template: ENTITY_MEMORY_CONVERSATION_TEMPLATE.template,
})

const memory = new EntityMemory({
    llm: new OpenAI({
        temperature: 0,
        openAIApiKey: API_TOKEN,
    }),
})

const chain = new LLMChain({
    llm: new OpenAI({
        temperature: 0.9,
        openAIApiKey: API_TOKEN,
    }),
    memory,
    prompt,
    verbose: true,
})
await chain.call({ input: "Hi! I'm Jim." })
await chain.call({ input: 'I work in sales. What about you?' })
await chain.call({
    input: 'My office is the Utica branch of Dunder Mifflin. What about you?',
})
console.log(await memory.loadMemoryVariables({ input: 'Who is Jim?' }))
{
  history: "Human: Hi! I'm Jim.\nAI:  Hi Jim! It's nice to meet you. How can I help you today?\nHuman: I work in sales. What about you?\nAI:  I'm an assistant powered by a language model trained by OpenAI. I'm here to help you with any questions or tasks you may have related to the topics I'm familiar with. How can I assist you today?\nHuman: My office is the Utica branch of Dunder Mifflin. What about you?\nAI:  I don't have an office, but I can help you with any questions or tasks related to the topics I'm familiar with. So, what can I do for you today?",

  entities: {
    Jim: "Jim is a human who works in sales and is based in the Utica branch of Dunder Mifflin.",
    Utica: "Utica is the location of the Dunder Mifflin branch where Jim works.",
    "Dunder Mifflin": "Dunder Mifflin is a company with a Utica branch."
  }

}
A mi me sale NotFoundError Traceback (most recent call last) [\<ipython-input-16-750be73a0d15>](https://localhost:8080/#) in \<cell line: 1>() \----> 1 conversation.predict(input="Que onda, mi máquina para hacer micheladas no está funcionando. Ando enojado.") 23 frames[/usr/local/lib/python3.10/dist-packages/openai/\_base\_client.py](https://localhost:8080/#) in \_request(self, cast\_to, options, remaining\_retries, stream, stream\_cls) 986 987 log.debug("Re-raising status error") \--> 988 raise self.\_make\_status\_error\_from\_response(err.response) from None 989 990 return self.\_process\_response( NotFoundError: Error code: 404 - {'error': {'message': 'The model `text-davinci-003` has been deprecated, learn more here: <https://platform.openai.com/docs/deprecations>', 'type': 'invalid\_request\_error', 'param': None, 'code': 'model\_not\_found'}}... alguien sabe como solucionar, lo reemplacé por gpt-4 pero sigue saliendo el mimsmo mensaje