LangChain Expression LanguageCookbookAdding memoryAdding memoryThis shows how to add memory to an arbitrary chain. Right now, you can use the memory classes but need to hook it up manuallyfrom operator import itemgetterfrom langchain.chat_models import ChatOpenAIfrom langchain.memory import ConversationBufferMemoryfrom langchain.schema.runnable import RunnablePassthroughfrom langchain.prompts import ChatPromptTemplate, MessagesPlaceholdermodel = ChatOpenAI()prompt = ChatPromptTemplate.from_messages([    ("system", "You are a helpful chatbot"),    MessagesPlaceholder(variable_name="history"),    ("human", "{input}")])memory = ConversationBufferMemory(return_messages=True)memory.load_memory_variables({})    {'history': []}chain = RunnablePassthrough.assign(    memory=memory.load_memory_variables | itemgetter("history")) | prompt | modelinputs = {"input": "hi im bob"}response = chain.invoke(inputs)response    AIMessage(content='Hello Bob! How can I assist you today?', additional_kwargs={}, example=False)memory.save_context(inputs, {"output": response.content})memory.load_memory_variables({})    {'history': [HumanMessage(content='hi im bob', additional_kwargs={}, example=False),      AIMessage(content='Hello Bob! How can I assist you today?', additional_kwargs={}, example=False)]}inputs = {"input": "whats my name"}response = chain.invoke(inputs)response    AIMessage(content='Your name is Bob.', additional_kwargs={}, example=False)PreviousCode writingNextAdding moderation