!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())

[Skip to main content](#__docusaurus_skipToContent_fallback)

LangChain v0.2 is coming soon! Preview the new docs [here](/v0.2/docs/introduction/).

[

![🦜️🔗 Langchain](/v0.1/img/brand/wordmark.png)![🦜️🔗 Langchain](/v0.1/img/brand/wordmark-dark.png)

](/v0.1/)[Docs](/v0.1/docs/get_started/introduction/)[Use cases](/v0.1/docs/use_cases/)[Integrations](/v0.1/docs/integrations/platforms/)[API Reference](https://api.js.langchain.com)

[More](#)

*   [People](/v0.1/docs/people/)
*   [Community](/v0.1/docs/community/)
*   [Tutorials](/v0.1/docs/additional_resources/tutorials/)
*   [Contributing](/v0.1/docs/contributing/)

[v0.1](#)

*   [v0.2](https://js.langchain.com/v0.2/docs/introduction)
*   [v0.1](/v0.1/docs/get_started/introduction/)

[🦜🔗](#)

*   [LangSmith](https://smith.langchain.com)
*   [LangSmith Docs](https://docs.smith.langchain.com)
*   [LangChain Hub](https://smith.langchain.com/hub)
*   [LangServe](https://github.com/langchain-ai/langserve)
*   [Python Docs](https://python.langchain.com/)

[Chat](https://chatjs.langchain.com)[](https://github.com/langchain-ai/langchainjs)

Search

*   [Get started](/v0.1/docs/get_started/)
    
    *   [Introduction](/v0.1/docs/get_started/introduction/)
    *   [Installation](/v0.1/docs/get_started/installation/)
    *   [Quickstart](/v0.1/docs/get_started/quickstart/)
*   [LangChain Expression Language](/v0.1/docs/expression_language/)
    
    *   [Get started](/v0.1/docs/expression_language/get_started/)
    *   [Why use LCEL?](/v0.1/docs/expression_language/why/)
    *   [Interface](/v0.1/docs/expression_language/interface/)
    *   [Streaming](/v0.1/docs/expression_language/streaming/)
    *   [How to](/v0.1/docs/expression_language/how_to/routing/)
        
    *   [Cookbook](/v0.1/docs/expression_language/cookbook/)
        
    *   [LangChain Expression Language (LCEL)](/v0.1/docs/expression_language/)
*   [Modules](/v0.1/docs/modules/)
    
    *   [Model I/O](/v0.1/docs/modules/model_io/)
        
    *   [Retrieval](/v0.1/docs/modules/data_connection/)
        
    *   [Chains](/v0.1/docs/modules/chains/)
    *   [Agents](/v0.1/docs/modules/agents/)
        
    *   [More](/v0.1/docs/modules/memory/)
        
        *   [Memory](/v0.1/docs/modules/memory/)
            
            *   [\[Beta\] Memory](/v0.1/docs/modules/memory/)
            *   [Chat Message History](/v0.1/docs/modules/memory/chat_messages/)
                
            *   [Memory types](/v0.1/docs/modules/memory/types/)
                
                *   [Conversation buffer memory](/v0.1/docs/modules/memory/types/buffer/)
                *   [Using Buffer Memory with Chat Models](/v0.1/docs/modules/memory/types/buffer_memory_chat/)
                *   [Conversation buffer window memory](/v0.1/docs/modules/memory/types/buffer_window/)
                *   [Entity memory](/v0.1/docs/modules/memory/types/entity_summary_memory/)
                *   [Combined memory](/v0.1/docs/modules/memory/types/multiple_memory/)
                *   [Conversation summary memory](/v0.1/docs/modules/memory/types/summary/)
                *   [Conversation summary buffer memory](/v0.1/docs/modules/memory/types/summary_buffer/)
                *   [Vector store-backed memory](/v0.1/docs/modules/memory/types/vectorstore_retriever_memory/)
        *   [Callbacks](/v0.1/docs/modules/callbacks/)
            
        *   [Experimental](/v0.1/docs/modules/experimental/)
            
*   [Security](/v0.1/docs/security/)
*   [Guides](/v0.1/docs/guides/)
    
*   [Ecosystem](/v0.1/docs/ecosystem/)
    
*   [LangGraph](/v0.1/docs/langgraph/)
*   * * *
    

*   [](/v0.1/)
*   [Modules](/v0.1/docs/modules/)
*   More
*   [Memory](/v0.1/docs/modules/memory/)
*   [Memory types](/v0.1/docs/modules/memory/types/)
*   Conversation summary memory

On this page

Conversation summary memory
===========================

Now let's take a look at using a slightly more complex type of memory - `ConversationSummaryMemory`. This type of memory creates a summary of the conversation over time. This can be useful for condensing information from the conversation over time. Conversation summary memory summarizes the conversation as it happens and stores the current summary in memory. This memory can then be used to inject the summary of the conversation so far into a prompt/chain. This memory is most useful for longer conversations, where keeping the past message history in the prompt verbatim would take up too many tokens.

Let's first explore the basic functionality of this type of memory.

Usage, with an LLM[​](#usage-with-an-llm "Direct link to Usage, with an LLM")
-----------------------------------------------------------------------------

tip

See [this section for general instructions on installing integration packages](/v0.1/docs/get_started/installation/#installing-integration-packages).

*   npm
*   Yarn
*   pnpm

    npm install @langchain/openai

    yarn add @langchain/openai

    pnpm add @langchain/openai

    import { OpenAI } from "@langchain/openai";import { ConversationSummaryMemory } from "langchain/memory";import { LLMChain } from "langchain/chains";import { PromptTemplate } from "@langchain/core/prompts";export const run = async () => {  const memory = new ConversationSummaryMemory({    memoryKey: "chat_history",    llm: new OpenAI({ model: "gpt-3.5-turbo", temperature: 0 }),  });  const model = new OpenAI({ temperature: 0.9 });  const prompt =    PromptTemplate.fromTemplate(`The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.  Current conversation:  {chat_history}  Human: {input}  AI:`);  const chain = new LLMChain({ llm: model, prompt, memory });  const res1 = await chain.invoke({ input: "Hi! I'm Jim." });  console.log({ res1, memory: await memory.loadMemoryVariables({}) });  /*  {    res1: {      text: " Hi Jim, I'm AI! It's nice to meet you. I'm an AI programmed to provide information about the environment around me. Do you have any specific questions about the area that I can answer for you?"    },    memory: {      chat_history: 'Jim introduces himself to the AI and the AI responds, introducing itself as a program designed to provide information about the environment. The AI offers to answer any specific questions Jim may have about the area.'    }  }  */  const res2 = await chain.invoke({ input: "What's my name?" });  console.log({ res2, memory: await memory.loadMemoryVariables({}) });  /*  {    res2: { text: ' You told me your name is Jim.' },    memory: {      chat_history: 'Jim introduces himself to the AI and the AI responds, introducing itself as a program designed to provide information about the environment. The AI offers to answer any specific questions Jim may have about the area. Jim asks the AI what his name is, and the AI responds that Jim had previously told it his name.'    }  }  */};

#### API Reference:

*   [OpenAI](https://api.js.langchain.com/classes/langchain_openai.OpenAI.html) from `@langchain/openai`
*   [ConversationSummaryMemory](https://api.js.langchain.com/classes/langchain_memory.ConversationSummaryMemory.html) from `langchain/memory`
*   [LLMChain](https://api.js.langchain.com/classes/langchain_chains.LLMChain.html) from `langchain/chains`
*   [PromptTemplate](https://api.js.langchain.com/classes/langchain_core_prompts.PromptTemplate.html) from `@langchain/core/prompts`

Usage, with a Chat Model[​](#usage-with-a-chat-model "Direct link to Usage, with a Chat Model")
-----------------------------------------------------------------------------------------------

    import { ChatOpenAI } from "@langchain/openai";import { ConversationSummaryMemory } from "langchain/memory";import { LLMChain } from "langchain/chains";import { PromptTemplate } from "@langchain/core/prompts";export const run = async () => {  const memory = new ConversationSummaryMemory({    memoryKey: "chat_history",    llm: new ChatOpenAI({ model: "gpt-3.5-turbo", temperature: 0 }),  });  const model = new ChatOpenAI();  const prompt =    PromptTemplate.fromTemplate(`The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.  Current conversation:  {chat_history}  Human: {input}  AI:`);  const chain = new LLMChain({ llm: model, prompt, memory });  const res1 = await chain.invoke({ input: "Hi! I'm Jim." });  console.log({ res1, memory: await memory.loadMemoryVariables({}) });  /*  {    res1: {      text: "Hello Jim! It's nice to meet you. My name is AI. How may I assist you today?"    },    memory: {      chat_history: 'Jim introduces himself to the AI and the AI greets him and offers assistance.'    }  }  */  const res2 = await chain.invoke({ input: "What's my name?" });  console.log({ res2, memory: await memory.loadMemoryVariables({}) });  /*  {    res2: {      text: "Your name is Jim. It's nice to meet you, Jim. How can I assist you today?"    },    memory: {      chat_history: 'Jim introduces himself to the AI and the AI greets him and offers assistance. The AI addresses Jim by name and asks how it can assist him.'    }  }  */};

#### API Reference:

*   [ChatOpenAI](https://api.js.langchain.com/classes/langchain_openai.ChatOpenAI.html) from `@langchain/openai`
*   [ConversationSummaryMemory](https://api.js.langchain.com/classes/langchain_memory.ConversationSummaryMemory.html) from `langchain/memory`
*   [LLMChain](https://api.js.langchain.com/classes/langchain_chains.LLMChain.html) from `langchain/chains`
*   [PromptTemplate](https://api.js.langchain.com/classes/langchain_core_prompts.PromptTemplate.html) from `@langchain/core/prompts`

* * *

#### Help us out by providing feedback on this documentation page:

[

Previous

Combined memory

](/v0.1/docs/modules/memory/types/multiple_memory/)[

Next

Conversation summary buffer memory

](/v0.1/docs/modules/memory/types/summary_buffer/)

*   [Usage, with an LLM](#usage-with-an-llm)
*   [Usage, with a Chat Model](#usage-with-a-chat-model)

Community

*   [Discord](https://discord.gg/cU2adEyC7w)
*   [Twitter](https://twitter.com/LangChainAI)

GitHub

*   [Python](https://github.com/langchain-ai/langchain)
*   [JS/TS](https://github.com/langchain-ai/langchainjs)

More

*   [Homepage](https://langchain.com)
*   [Blog](https://blog.langchain.dev)

Copyright © 2024 LangChain, Inc.