AI-Master-Book
  • about AI-Master-Book
  • AI Master Book
    • 이상치 탐지 with Python
    • 베이지안 뉴럴네트워크 (BNN) with Python
    • 그래프 뉴럴네트워크 (GNN) with Python
    • 데이터 마케팅 분석 with Python
  • LLM MASTER BOOK
    • OpenAI API 쿡북 with Python
    • 기초부터 심화까지 RAG 쿡북 with Python
    • MCP 에이전트 쿡북 with Python
  • LLMs
    • OpenAI API
      • 1️⃣ChatCompletion
      • 2️⃣DALL-E
      • 3️⃣Text to Speech
      • 4️⃣Video to Transcripts
      • 5️⃣Assistants API
      • 6️⃣Prompt Engineering
      • 7️⃣OpenAI New GPT-4o
    • LangChain
      • LangChain Basic
        • 1️⃣Basic Modules
        • 2️⃣Model I/O
        • 3️⃣Prompts
        • 4️⃣Chains
        • 5️⃣Agents
        • 6️⃣Tools
        • 7️⃣Memory
      • LangChain Intermediate
        • 1️⃣OpenAI LLM
        • 2️⃣Prompt Template
        • 3️⃣Retrieval
        • 4️⃣RAG ChatBot
        • 5️⃣RAG with Gemini
        • 6️⃣New Huggingface-LangChain
        • 7️⃣Huggingface Hub
        • 8️⃣SQL Agent & Chain
        • 9️⃣Expression Language(LCEL)
        • 🔟Llama3-8B with LangChain
      • LangChain Advanced
        • 1️⃣LLM Evaluation
        • 2️⃣RAG Evaluation with RAGAS
        • 3️⃣LangChain with RAGAS
        • 4️⃣RAG Paradigms
        • 5️⃣LangChain: Advance Techniques
        • 6️⃣LangChain with NeMo-Guardrails
        • 7️⃣LangChain vs. LlamaIndex
        • 8️⃣LangChain LCEL vs. LangGraph
    • LlamaIndex
      • LlamaIndex Basic
        • 1️⃣Introduction
        • 2️⃣Customization
        • 3️⃣Data Connectors
        • 4️⃣Documents & Nodes
        • 5️⃣Naive RAG
        • 6️⃣Advanced RAG
        • 7️⃣Llama3-8B with LlamaIndex
        • 8️⃣LlmaPack
      • LlamaIndex Intermediate
        • 1️⃣QueryEngine
        • 2️⃣Agent
        • 3️⃣Evaluation
        • 4️⃣Evaluation-Driven Development
        • 5️⃣Fine-tuning
        • 6️⃣Prompt Compression with LLMLingua
      • LlamaIndex Advanced
        • 1️⃣Agentic RAG: Router Engine
        • 2️⃣Agentic RAG: Tool Calling
        • 3️⃣Building Agent Reasoning Loop
        • 4️⃣Building Multi-document Agent
    • Hugging Face
      • Huggingface Basic
        • 1️⃣Datasets
        • 2️⃣Tokenizer
        • 3️⃣Sentence Embeddings
        • 4️⃣Transformers
        • 5️⃣Sentence Transformers
        • 6️⃣Evaluate
        • 7️⃣Diffusers
      • Huggingface Tasks
        • NLP
          • 1️⃣Sentiment Analysis
          • 2️⃣Zero-shot Classification
          • 3️⃣Aspect-Based Sentiment Analysis
          • 4️⃣Feature Extraction
          • 5️⃣Intent Classification
          • 6️⃣Topic Modeling: BERTopic
          • 7️⃣NER: Token Classification
          • 8️⃣Summarization
          • 9️⃣Translation
          • 🔟Text Generation
        • Audio & Tabular
          • 1️⃣Text-to-Speech: TTS
          • 2️⃣Speech Recognition: Whisper
          • 3️⃣Audio Classification
          • 4️⃣Tabular Qustaion & Answering
        • Vision & Multimodal
          • 1️⃣Image-to-Text
          • 2️⃣Text to Image
          • 3️⃣Image to Image
          • 4️⃣Text or Image-to-Video
          • 5️⃣Depth Estimation
          • 6️⃣Image Classification
          • 7️⃣Object Detection
          • 8️⃣Segmentatio
      • Huggingface Optimization
        • 1️⃣Accelerator
        • 2️⃣Bitsandbytes
        • 3️⃣Flash Attention
        • 4️⃣Quantization
        • 5️⃣Safetensors
        • 6️⃣Optimum-ONNX
        • 7️⃣Optimum-NVIDIA
        • 8️⃣Optimum-Intel
      • Huggingface Fine-tuning
        • 1️⃣Transformer Fine-tuning
        • 2️⃣PEFT Fine-tuning
        • 3️⃣PEFT: Fine-tuning with QLoRA
        • 4️⃣PEFT: Fine-tuning Phi-2 with QLoRA
        • 5️⃣Axoltl Fine-tuning with QLoRA
        • 6️⃣TRL: RLHF Alignment Fine-tuning
        • 7️⃣TRL: DPO Fine-tuning with Phi-3-4k-instruct
        • 8️⃣TRL: ORPO Fine-tuning with Llama3-8B
        • 9️⃣Convert GGUF gemma-2b with llama.cpp
        • 🔟Apple Silicon Fine-tuning Gemma-2B with MLX
        • 🔢LLM Mergekit
    • Agentic LLM
      • Agentic LLM
        • 1️⃣Basic Agentic LLM
        • 2️⃣Multi-agent with CrewAI
        • 3️⃣LangGraph: Multi-agent Basic
        • 4️⃣LangGraph: Agentic RAG with LangChain
        • 5️⃣LangGraph: Agentic RAG with Llama3-8B by Groq
      • Autonomous Agent
        • 1️⃣LLM Autonomous Agent?
        • 2️⃣AutoGPT: Worldcup Winner Search with LangChain
        • 3️⃣BabyAGI: Weather Report with LangChain
        • 4️⃣AutoGen: Writing Blog Post with LangChain
        • 5️⃣LangChain: Autonomous-agent Debates with Tools
        • 6️⃣CAMEL Role-playing Autonomous Cooperative Agents
        • 7️⃣LangChain: Two-player Harry Potter D&D based CAMEL
        • 8️⃣LangChain: Multi-agent Bid for K-Pop Debate
        • 9️⃣LangChain: Multi-agent Authoritarian Speaker Selection
        • 🔟LangChain: Multi-Agent Simulated Environment with PettingZoo
    • Multimodal
      • 1️⃣PaliGemma: Open Vision LLM
      • 2️⃣FLUX.1: Generative Image
    • Building LLM
      • 1️⃣DSPy
      • 2️⃣DSPy RAG
      • 3️⃣DSPy with LangChain
      • 4️⃣Mamba
      • 5️⃣Mamba RAG with LangChain
      • 7️⃣PostgreSQL VectorDB with pgvorco.rs
Powered by GitBook
On this page
  • LangChain: Memory
  • 1. ConversationBufferMemory
  • 2. ConversationBufferWindowMemory
  • 3. ConversationTokenBufferMemory
  • 4. ConversationSummaryMemory
  • 5. ConversationSummaryBufferMemory
  1. LLMs
  2. LangChain
  3. LangChain Basic

Memory

PreviousToolsNextLangChain Intermediate

Last updated 1 year ago

LangChain: Memory

import os
from dotenv import load_dotenv  

load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")
# 패키지 설치
#%pip install tiktoken

1. ConversationBufferMemory

from langchain.memory import ConversationBufferMemory

# 메모리 생성
memory = ConversationBufferMemory()
memory.chat_memory.add_user_message("배고프다")
memory.chat_memory.add_ai_message("어디 가서 밥 먹을까?")
memory.chat_memory.add_user_message("라면 먹으러 가자")
memory.chat_memory.add_ai_message("지하철역 앞에 있는 분식집으로 가자")
memory.chat_memory.add_user_message("그럼 출발!")
memory.chat_memory.add_ai_message("OK!")
# 메모리 변수 가져오기
memory.load_memory_variables({})
{'history': 'Human: 배고프다\nAI: 어디 가서 밥 먹을까?\nHuman: 라면 먹으러 가자\nAI: 지하철역 앞에 있는 분식집으로 가자\nHuman: 그럼 출발!\nAI: OK!'}
from langchain.memory import ConversationBufferMemory

# 메모리 생성
memory = ConversationBufferMemory(return_messages=True)
memory.chat_memory.add_user_message("배고프다")
memory.chat_memory.add_ai_message("어디 가서 밥 먹을까?")
memory.chat_memory.add_user_message("라면 먹으러 가자")
memory.chat_memory.add_ai_message("역 앞에 있는 분식집으로 가자")
memory.chat_memory.add_user_message("그럼 출발!")
memory.chat_memory.add_ai_message("OK!")
# 메모리 변수 가져오기
memory.load_memory_variables({})
{'history': [HumanMessage(content='배고프다'),
  AIMessage(content='어디 가서 밥 먹을까?'),
  HumanMessage(content='라면 먹으러 가자'),
  AIMessage(content='역 앞에 있는 분식집으로 가자'),
  HumanMessage(content='그럼 출발!'),
  AIMessage(content='OK!')]}

2. ConversationBufferWindowMemory

from langchain.memory import ConversationBufferWindowMemory

# 메모리 생성
memory = ConversationBufferWindowMemory(k=2, return_messages=True)
memory.save_context({"input": "안녕!"}, {"ouput": "무슨 일이야?"})
memory.save_context({"input": "배고파"}, {"ouput": "나도"})
memory.save_context({"input": "밥 먹자"}, {"ouput": "OK!"})
# 메모리 변수 가져오기
memory.load_memory_variables({})
{'history': [HumanMessage(content='배고파'),
  AIMessage(content='나도'),
  HumanMessage(content='밥 먹자'),
  AIMessage(content='OK!')]}

3. ConversationTokenBufferMemory

from langchain.memory import ConversationTokenBufferMemory
from langchain.chat_models import ChatOpenAI

# 메모리 생성
memory = ConversationTokenBufferMemory(
    llm=ChatOpenAI(
        model="gpt-3.5-turbo",
        temperature=0
    ), 
    max_token_limit=50, 
    return_messages=True
)
memory.save_context({"input": "배고파"}, {"ouput": "어디 가서 밥 먹을까?"})
memory.save_context({"input": "라면 먹으러 가자"}, {"ouput": "역 앞에 있는 분식집으로 가자"})
memory.save_context({"input": "그럼 출발!"}, {"ouput": "OK!"})
# 메모리 변수 가져오기
memory.load_memory_variables({})
{'history': [AIMessage(content='역 앞에 있는 분식집으로 가자'),
  HumanMessage(content='그럼 출발!'),
  AIMessage(content='OK!')]}

4. ConversationSummaryMemory

from langchain.memory import ConversationSummaryMemory
from langchain.chat_models import ChatOpenAI

# 메모리 생성
memory = ConversationSummaryMemory(
    llm=ChatOpenAI(
        model="gpt-3.5-turbo",
        temperature=0
    ),
    return_messages=True
)
memory.save_context({"input": "배고파"}, {"ouput": "어디 가서 밥 먹을까?"})
memory.save_context({"input": "라면 먹으러 가자"}, {"ouput": "역 앞에 있는 분식집으로 가자"})
memory.save_context({"input": "그럼 출발!"}, {"ouput": "OK!"})
# 메모리 변수 가져오기
memory.load_memory_variables({})
{'history': [SystemMessage(content='The human says they are hungry and suggests going to eat ramen. The AI suggests going to the snack bar in front of the station. The human agrees to go and the AI responds with "OK!"')]}

5. ConversationSummaryBufferMemory

from langchain.memory import ConversationSummaryBufferMemory
from langchain.chat_models import ChatOpenAI

# 메모리 생성
memory = ConversationSummaryBufferMemory(
    llm=ChatOpenAI(
        model="gpt-3.5-turbo",
        temperature=0
    ), 
    max_token_limit=50, 
    return_messages=True
)
memory.save_context({"input": "안녕"}, {"ouput": "무슨 일이야?"})
memory.save_context({"input": "배고파"}, {"ouput": "나도"})
memory.save_context({"input": "밥 먹자"}, {"ouput": "OK!"})
# 메모리 변수 가져오기
memory.load_memory_variables({})
{'history': [SystemMessage(content="The human greets the AI in Korean. The AI responds by asking what's going on."),
  HumanMessage(content='배고파'),
  AIMessage(content='나도'),
  HumanMessage(content='밥 먹자'),
  AIMessage(content='OK!')]}
7️⃣
[Beta] Memory | 🦜️🔗 LangChain
Logo