diff --git a/docs/examples/memory/adding_memory.ipynb b/docs/examples/memory/adding_memory.ipynb new file mode 100644 index 00000000..c6f927b5 --- /dev/null +++ b/docs/examples/memory/adding_memory.ipynb @@ -0,0 +1,177 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "00695447", + "metadata": {}, + "source": [ + "# Adding Memory To an LLMChain\n", + "\n", + "This notebook goes over how to use the Memory class with an arbitrary chain. For the purposes of this walkthrough, we will add `ConversationBufferMemory` to a `LLMChain`." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9f1aaf47", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.chains.conversation.memory import ConversationBufferMemory\n", + "from langchain import OpenAI, LLMChain, PromptTemplate" + ] + }, + { + "cell_type": "markdown", + "id": "4b066ced", + "metadata": {}, + "source": [ + "The most important step is setting up the prompt correctly. In the below prompt, we have two input keys: one for the actual input, another for the input from the Memory class. Importantly, we make sure the keys in the PromptTemplate and the ConversationBufferMemory match up (`chat_history`)." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e5501eda", + "metadata": {}, + "outputs": [], + "source": [ + "template = \"\"\"You are a chatbot having a conversation with a human.\n", + "\n", + "{chat_history}\n", + "Human: {human_input}\n", + "Chatbot:\"\"\"\n", + "\n", + "prompt = PromptTemplate(\n", + " input_variables=[\"chat_history\", \"human_input\"], \n", + " template=template\n", + ")\n", + "memory = ConversationBufferMemory(dynamic_key=\"chat_history\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f6566275", + "metadata": {}, + "outputs": [], + "source": [ + "llm_chain = LLMChain(\n", + " llm=OpenAI(), \n", + " prompt=prompt, \n", + " verbose=True, \n", + " memory=memory,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "e2b189dc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\u001b[1m> Entering new chain...\u001b[0m\n", + "Prompt after formatting:\n", + "\u001b[32;1m\u001b[1;3mYou are a chatbot having a conversation with a human.\n", + "\n", + "\n", + "Human: Hi there my friend\n", + "Chatbot:\u001b[0m\n", + "\n", + "\u001b[1m> Finished chain.\u001b[0m\n" + ] + }, + { + "data": { + "text/plain": [ + "'\\n\\nHi there my friend! Thank you for talking with me.'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "llm_chain.predict(human_input=\"Hi there my friend\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "a902729f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\u001b[1m> Entering new chain...\u001b[0m\n", + "Prompt after formatting:\n", + "\u001b[32;1m\u001b[1;3mYou are a chatbot having a conversation with a human.\n", + "\n", + "\n", + "Human: Hi there my friend\n", + "AI: \n", + "\n", + "Hi there my friend! Thank you for talking with me.\n", + "Human: Not to bad - how are you?\n", + "Chatbot:\u001b[0m\n", + "\n", + "\u001b[1m> Finished chain.\u001b[0m\n" + ] + }, + { + "data": { + "text/plain": [ + "\"\\n\\nI'm doing well, thank you for asking. How about you?\"" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "llm_chain.predict(human_input=\"Not to bad - how are you?\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ae5309bb", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}