From 1c3d82613e8bff56086e929c0e72e9c0dc65311c Mon Sep 17 00:00:00 2001 From: Tyler Hutcherson Date: Fri, 6 Jun 2025 11:05:28 -0400 Subject: [PATCH 1/4] Add updated agent example --- python-recipes/agents/03_memory_agent.ipynb | 3499 +++++++++-------- .../agents/resources/long-term-memory.png | Bin 0 -> 190143 bytes .../agents/resources/memory-agents.png | Bin 0 -> 302220 bytes .../agents/resources/short-term-memory.png | Bin 0 -> 145141 bytes 4 files changed, 1895 insertions(+), 1604 deletions(-) create mode 100644 python-recipes/agents/resources/long-term-memory.png create mode 100644 python-recipes/agents/resources/memory-agents.png create mode 100644 python-recipes/agents/resources/short-term-memory.png diff --git a/python-recipes/agents/03_memory_agent.ipynb b/python-recipes/agents/03_memory_agent.ipynb index 9aff82d5..e01ff865 100644 --- a/python-recipes/agents/03_memory_agent.ipynb +++ b/python-recipes/agents/03_memory_agent.ipynb @@ -1,1607 +1,1898 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![Redis](https://redis.io/wp-content/uploads/2024/04/Logotype.svg?auto=webp&quality=85,75&width=120)\n", - "\n", - "# Agent Memory Using Redis and LangGraph\n", - "This notebook demonstrates how to manage short-term and long-term agent memory using Redis and LangGraph. We'll explore:\n", - "\n", - "1. Short-term memory management using LangGraph's checkpointer\n", - "2. Long-term memory storage and retrieval using RedisVL\n", - "3. Managing long-term memory manually vs. exposing tool access (AKA function-calling)\n", - "4. Managing conversation history size with summarization\n", - "5. Memory consolidation\n", - "\n", - "\n", - "## What We'll Build\n", - "\n", - "We're going to build two versions of a travel agent, one that manages long-term\n", - "memory manually and one that does so using tools the LLM calls.\n", - "\n", - "Here are two diagrams showing the components used in both agents:\n", - "\n", - "![diagram](../../assets/memory-agents.png)\n", - "\n", - "## Let's Begin!\n", - "\"Open" - ] + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "sxdnLVT31nfd" + }, + "source": [ + "![Redis](https://redis.io/wp-content/uploads/2024/04/Logotype.svg?auto=webp&quality=85,75&width=120)\n", + "\n", + "# Agent Memory with Redis\n", + "\n", + "## Introduction\n", + "\n", + "Without memory, AI agents are like goldfish - they forget everything after each conversation and can't learn from past interactions or maintain context across sessions. Agentic systems require both **short-term** and **long-term** memory in order to complete tasks in a personalized and resilient manner. Memory is all about state management and [**Redis**](https://redis.io/try-free/?utm_source=nir&utm_medium=cpa&utm_campaign=2025-05-ai_in_production-influencer-nir&utm_content=sd-software_download-7013z000001WaRY) is the well-known in-memory database for exaclty this kind of use case today in production systems.\n", + "\n", + "## What We'll Build\n", + "\n", + "This tutorial demonstrates how to build a **memory-enabled travel agent** with **Redis** and **LangGraph** that remembers user preferences and provides personalized recommendations. This is a **horizontal concept** that you can take and apply to your own agent use cases.\n", + "\n", + "We'll explore:\n", + "\n", + "1. Short-term memory management using LangGraph's checkpointer\n", + "2. Long-term memory storage and retrieval using RedisVL\n", + "3. Managing long-term memory as a tool for a ReAct agent\n", + "4. Managing conversation history size with summarization" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Ee3ltHdVvKOD" + }, + "source": [ + "# 🧠 Memory architecture overview\n", + "\n", + "Our agent uses a dual-memory system:\n", + "- **Short-term**: Manages conversation context\n", + "- **Long-term**: Stores persistent knowledge\n", + "\n", + "## Short-term Memory\n", + "The agent tracks chat history using Redis through LangGraph's [checkpointer](https://github.com/redis-developer/langgraph-redis). Each node in the graph (Retrieve Memories, Respond, Summarize) saves its state to Redis, including conversation history and thread metadata.\n", + "\n", + "\n", + "\n", + "To prevent context window pollution, the agent summarizes conversations when they exceed a configurable length.\n", + "\n", + "## Long-term Memory\n", + "\n", + "Long-term memories are stored & indexed in Redis using the RedisVL client, with two types:\n", + "- **Episodic**: User preferences and experiences\n", + "- **Semantic**: General travel knowledge\n", + "\n", + "\n", + "\n", + ">**NOTE**: These memory types align with the [CoALA](https://arxiv.org/abs/2309.02427) paper's concepts. Our agent's procedural memory is encoded in its Python workflow." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0KciGua91nfe" + }, + "source": [ + "---\n", + "\n", + "# Set up our environment\n", + "\n", + "Before diving into the code, let's set up our development environment with the right Python libraries.\n", + "\n", + ">**NOTE**: You may need to restart your kernal after installing libraries." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0zTUm35H1nfe" + }, + "outputs": [], + "source": [ + "%pip install langchain-openai langgraph-checkpoint langgraph langgraph-checkpoint-redis langchain-redis" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8R1hEM7s1nff" + }, + "source": [ + "## Required API keys\n", + "\n", + "You must add an [OpenAI API](https://platform.openai.com/signup) key with billing information for this tutorial." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "365fzPsj1nff" + }, + "outputs": [], + "source": [ + "import getpass\n", + "import os\n", + "\n", + "def _set_env(key: str):\n", + " if key not in os.environ:\n", + " os.environ[key] = getpass.getpass(f\"{key}:\")\n", + "\n", + "\n", + "_set_env(\"OPENAI_API_KEY\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NLkF4GB_1nff" + }, + "source": [ + "## Setup Redis\n", + "\n", + "You have two options for running Redis:\n", + "\n", + "1. **Redis Cloud**: For a fully-managed, seamless experience, use [a free instance of Redis Cloud](https://redis.io/try-free/?utm_source=nir&utm_medium=cpa&utm_campaign=2025-05-ai_in_production-influencer-nir&utm_content=sd-software_download-7013z000001WaRY).\n", + "2. **Local Redis**: For a simple, local (non-persistent) Redis instance, run the cell below." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zgKbb4ol1nff" + }, + "source": [ + "Run the cell below to get a localized Redis instance on your Google colab server." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "xs7bi1kr1nff" + }, + "outputs": [], + "source": [ + "%%sh\n", + "curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg\n", + "echo \"deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main\" | sudo tee /etc/apt/sources.list.d/redis.list\n", + "sudo apt-get update > /dev/null 2>&1\n", + "sudo apt-get install redis-stack-server > /dev/null 2>&1\n", + "redis-stack-server --daemonize yes" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-B8XRKHR1nff" + }, + "source": [ + "Let's test out Redis connection and create a client to communicate with the server." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "dauPT3PT1nff" + }, + "outputs": [], + "source": [ + "import os\n", + "\n", + "from redis import Redis\n", + "\n", + "# Use the environment variable if set, otherwise default to localhost\n", + "REDIS_URL = os.getenv(\"REDIS_URL\", \"redis://localhost:6379\")\n", + "\n", + "redis_client = Redis.from_url(REDIS_URL)\n", + "redis_client.ping()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "aRxYTTOf1nfg" + }, + "source": [ + "## Prepare memory data models\n", + "\n", + "In this section, we'll create a robust data modeling system for our agent's memory using `Pydantic`. These models will ensure type safety and provide clear data structures for storing and retrieving memories from Redis.\n", + "\n", + "We'll implement four key components:\n", + "\n", + "1. `MemoryType` - An enumeration that categorizes memories into two types:\n", + " - Episodic: Personal experiences and user preferences\n", + " - Semantic: General knowledge and domain facts\n", + "\n", + "2. `Memory` - The core model representing a single memory entry with its content and metadata\n", + "\n", + "3. `Memories` - A container model that holds collections of memory objects\n", + "\n", + "4. `StoredMemory` - A specialized model for memories that have been persisted to Redis\n", + "\n", + "These models work together to create a complete memory lifecycle, from creation to storage and retrieval." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "Ix6Pe6qG1nfg" + }, + "outputs": [], + "source": [ + "import ulid\n", + "\n", + "from datetime import datetime\n", + "from enum import Enum\n", + "from typing import List, Optional\n", + "from pydantic import BaseModel, Field\n", + "\n", + "\n", + "class MemoryType(str, Enum):\n", + " \"\"\"\n", + " Defines the type of long-term memory for categorization and retrieval.\n", + "\n", + " EPISODIC: Personal experiences and user-specific preferences\n", + " (e.g., \"User prefers Delta airlines\", \"User visited Paris last year\")\n", + "\n", + " SEMANTIC: General domain knowledge and facts\n", + " (e.g., \"Singapore requires passport\", \"Tokyo has excellent public transit\")\n", + "\n", + " The type of a long-term memory.\n", + "\n", + " EPISODIC: User specific experiences and preferences\n", + "\n", + " SEMANTIC: General knowledge on top of the user's preferences and LLM's\n", + " training data.\n", + " \"\"\"\n", + "\n", + " EPISODIC = \"episodic\"\n", + " SEMANTIC = \"semantic\"\n", + "\n", + "\n", + "class Memory(BaseModel):\n", + " \"\"\"Represents a single long-term memory.\"\"\"\n", + "\n", + " content: str\n", + " memory_type: MemoryType\n", + " metadata: str\n", + "\n", + "\n", + "class Memories(BaseModel):\n", + " \"\"\"\n", + " A list of memories extracted from a conversation by an LLM.\n", + "\n", + " NOTE: OpenAI's structured output requires us to wrap the list in an object.\n", + " \"\"\"\n", + "\n", + " memories: List[Memory]\n", + "\n", + "\n", + "class StoredMemory(Memory):\n", + " \"\"\"A stored long-term memory\"\"\"\n", + "\n", + " id: str # The redis key\n", + " memory_id: ulid.ULID = Field(default_factory=lambda: ulid.ULID())\n", + " created_at: datetime = Field(default_factory=datetime.now)\n", + " user_id: Optional[str] = None\n", + " thread_id: Optional[str] = None\n", + " memory_type: Optional[MemoryType] = None" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "P6a03f4b1nfg" + }, + "source": [ + "Now we have type-safe data models that handle the complete memory lifecycle from LLM extraction to Redis storage, with proper metadata tracking for production use. Next, we'll set up the Redis infrastructure to store and search these memories using vector embeddings." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "T0FBUdRY1nfg" + }, + "source": [ + "# Memory Storage\n", + "\n", + "- **Short-term memory** is handled automatically by `RedisSaver` from `langgraph-checkpoint-redis`.\n", + "- For **long-term memory**, we'll use RedisVL with vector embeddings to enable semantic search of past experiences and knowledge.\n", + "\n", + "Below, we will create a search index schema in Redis to hold our long term memories. The schema has a few different fields including content, memory type, metadata, timestamps, user id, memory id, and the embedding of the memory." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "D-bfk_Ro1nfg" + }, + "outputs": [], + "source": [ + "from redisvl.index import SearchIndex\n", + "from redisvl.schema.schema import IndexSchema\n", + "\n", + "\n", + "# Define the schema for our vector search index\n", + "# This creates the structure for storing and querying memories\n", + "memory_schema = IndexSchema.from_dict({\n", + " \"index\": {\n", + " \"name\": \"agent_memories\", # Index name for identification\n", + " \"prefix\": \"memory\", # Redis key prefix (memory:1, memory:2, etc.)\n", + " \"key_separator\": \":\",\n", + " \"storage_type\": \"json\",\n", + " },\n", + " \"fields\": [\n", + " {\"name\": \"content\", \"type\": \"text\"},\n", + " {\"name\": \"memory_type\", \"type\": \"tag\"},\n", + " {\"name\": \"metadata\", \"type\": \"text\"},\n", + " {\"name\": \"created_at\", \"type\": \"text\"},\n", + " {\"name\": \"user_id\", \"type\": \"tag\"},\n", + " {\"name\": \"memory_id\", \"type\": \"tag\"},\n", + " {\n", + " \"name\": \"embedding\",\n", + " \"type\": \"vector\",\n", + " \"attrs\": {\n", + " \"algorithm\": \"flat\",\n", + " \"dims\": 1536, # OpenAI embedding dimension\n", + " \"distance_metric\": \"cosine\",\n", + " \"datatype\": \"float32\",\n", + " },\n", + " },\n", + " ],\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IHUC6A6tvKOF" + }, + "source": [ + "Below we create the `SearchIndex` from the `IndexSchema` and our Redis client connection object. We will overwrite the index spec if its already created!" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "iMHgajwyvKOF", + "outputId": "bc3892c0-6139-4458-e79d-de2249d1da0d" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Long-term memory index ready\n" + ] + } + ], + "source": [ + "try:\n", + " long_term_memory_index = SearchIndex(\n", + " schema=memory_schema,\n", + " redis_client=redis_client,\n", + " validate_on_load=True\n", + " )\n", + " long_term_memory_index.create(overwrite=True)\n", + " print(\"Long-term memory index ready\")\n", + "except Exception as e:\n", + " print(f\"Error creating index: {e}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "q9J3oIwN24M-" + }, + "source": [ + "Now that the index is created, we can inspect the long term memory index in Redis using the `rvl` cli:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "smnQbc5-2y_C", + "outputId": "221e0ccd-3857-4983-d500-5095a075e601" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Index Information:\n", + "╭────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬\b╮\n", + "│ Index Name │ Storage Type │ Prefixes │ Index Options │ Indexing │\n", + "├────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼\b┤\n", + "| agent_memories | JSON | ['memory'] | [] | 0 |\n", + "╰────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴\b╯\n", + "Index Fields:\n", + "╭─────────────────┬─────────────────┬─────────────────┬─────────────────┬─────────────────┬─────────────────┬─────────────────┬─────────────────┬─────────────────┬─────────────────┬─────────────────┬\b╮\n", + "│ Name │ Attribute │ Type │ Field Option │ Option Value │ Field Option │ Option Value │ Field Option │ Option Value │ Field Option │ Option Value │\n", + "├─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼\b┤\n", + "│ $.content │ content │ TEXT │ WEIGHT │ 1 │ │ │ │ │ │ │\n", + "│ $.memory_type │ memory_type │ TAG │ SEPARATOR │ , │ │ │ │ │ │ │\n", + "│ $.metadata │ metadata │ TEXT │ WEIGHT │ 1 │ │ │ │ │ │ │\n", + "│ $.created_at │ created_at │ TEXT │ WEIGHT │ 1 │ │ │ │ │ │ │\n", + "│ $.user_id │ user_id │ TAG │ SEPARATOR │ , │ │ │ │ │ │ │\n", + "│ $.memory_id │ memory_id │ TAG │ SEPARATOR │ , │ │ │ │ │ │ │\n", + "│ $.embedding │ embedding │ VECTOR │ algorithm │ FLAT │ data_type │ FLOAT32 │ dim │ 1536 │ distance_metric │ COSINE │\n", + "╰─────────────────┴─────────────────┴─────────────────┴─────────────────┴─────────────────┴─────────────────┴─────────────────┴─────────────────┴─────────────────┴─────────────────┴─────────────────┴\b╯\n" + ] + } + ], + "source": [ + "!rvl index info -i agent_memories" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "r5ybTN2l1nfg" + }, + "source": [ + "## Functions to access memories\n", + "\n", + "Next, we provide three core functions to access, store and retrieve memories. We will eventually use these in tools for the LLM to call. We will start by loading a vectorizer class to create OpenAI embeddings.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "id": "ruYpDU_lvKOF" + }, + "outputs": [], + "source": [ + "from redisvl.utils.vectorize.text.openai import OpenAITextVectorizer\n", + "\n", + "openai_embed = OpenAITextVectorizer(model=\"text-embedding-ada-002\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HXLu70owvKOF" + }, + "source": [ + "Next we will set up a simple logger so our functions will record log activity of whats happening." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "-XIpiadMvKOF" + }, + "outputs": [], + "source": [ + "import logging\n", + "\n", + "# Set up a logger\n", + "logger = logging.getLogger(__name__)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eMBbx2MkvKOF" + }, + "source": [ + "### 1. Check for similar memories\n", + "First, we'll write a utility function to check if a memory similar to a given\n", + "memory already exists in the index.\n", + "\n", + "This function checks for duplicate memories in Redis by:\n", + "1. Converting the input content into a vector embedding\n", + "2. Creating filters for user_id and memory_type\n", + "3. Using vector similarity search with a vector range query to find any existing + similar memories\n", + "4. Returning True if a similar memory exists, False otherwise\n", + "\n", + "This helps prevent storing redundant information in the agent's memory." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "GN9zPAWO1nfg" + }, + "outputs": [], + "source": [ + "from redisvl.query import VectorRangeQuery\n", + "from redisvl.query.filter import Tag\n", + "\n", + "\n", + "# If we have any memories that aren't associated with a user, we'll use this ID.\n", + "SYSTEM_USER_ID = \"system\"\n", + "\n", + "\n", + "def similar_memory_exists(\n", + " content: str,\n", + " memory_type: MemoryType,\n", + " user_id: str = SYSTEM_USER_ID,\n", + " thread_id: Optional[str] = None,\n", + " distance_threshold: float = 0.1,\n", + ") -> bool:\n", + " \"\"\"Check if a similar long-term memory already exists in Redis.\"\"\"\n", + " content_embedding = openai_embed.embed(content)\n", + "\n", + " filters = (Tag(\"user_id\") == user_id) & (Tag(\"memory_type\") == memory_type)\n", + "\n", + " if thread_id:\n", + " filters = filters & (Tag(\"thread_id\") == thread_id)\n", + "\n", + " # Search for similar memories\n", + " vector_query = VectorRangeQuery(\n", + " vector=content_embedding,\n", + " num_results=1,\n", + " vector_field_name=\"embedding\",\n", + " filter_expression=filters,\n", + " distance_threshold=distance_threshold,\n", + " return_fields=[\"id\"],\n", + " )\n", + " results = long_term_memory_index.query(vector_query)\n", + " logger.debug(f\"Similar memory search results: {results}\")\n", + "\n", + " if results:\n", + " logger.debug(\n", + " f\"{len(results)} similar {'memory' if results.count == 1 else 'memories'} found. First: \"\n", + " f\"{results[0]['id']}. Skipping storage.\"\n", + " )\n", + " return True\n", + "\n", + " return False" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_zqJwlXx1nfg" + }, + "source": [ + "### 2. Store long-term memories" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KIu2CrUq1nfg" + }, + "source": [ + "Below is a function that handles storing long-term memories in Redis with built-in deduplication.\n", + "\n", + "It's a key part of our memory system that:\n", + "1. Prevents duplicate memories by checking for similar content\n", + "2. Creates vector embeddings for semantic search capabilities\n", + "3. Stores the memory with relevant metadata for future retrieval\n", + "\n", + "We'll use the `similar_memory_exists()` function when we store memories in order to perform in-line memory deduplication." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "id": "oKA39Qp21nfh" + }, + "outputs": [], + "source": [ + "\n", + "\n", + "from datetime import datetime\n", + "from typing import List, Optional, Union\n", + "\n", + "import ulid\n", + "\n", + "\n", + "def store_memory(\n", + " content: str,\n", + " memory_type: MemoryType,\n", + " user_id: str = SYSTEM_USER_ID,\n", + " thread_id: Optional[str] = None,\n", + " metadata: Optional[str] = None,\n", + "):\n", + " \"\"\"Store a long-term memory in Redis with deduplication.\n", + "\n", + " This function:\n", + " 1. Checks for similar existing memories to avoid duplicates\n", + " 2. Generates vector embeddings for semantic search\n", + " 3. Stores the memory with metadata for retrieval\n", + " \"\"\"\n", + " if metadata is None:\n", + " metadata = \"{}\"\n", + "\n", + " logger.info(f\"Preparing to store memory: {content}\")\n", + "\n", + " if similar_memory_exists(content, memory_type, user_id, thread_id):\n", + " logger.info(\"Similar memory found, skipping storage\")\n", + " return\n", + "\n", + " embedding = openai_embed.embed(content)\n", + "\n", + " memory_data = {\n", + " \"user_id\": user_id or SYSTEM_USER_ID,\n", + " \"content\": content,\n", + " \"memory_type\": memory_type.value,\n", + " \"metadata\": metadata,\n", + " \"created_at\": datetime.now().isoformat(),\n", + " \"embedding\": embedding,\n", + " \"memory_id\": str(ulid.ULID()),\n", + " \"thread_id\": thread_id,\n", + " }\n", + "\n", + " try:\n", + " long_term_memory_index.load([memory_data])\n", + " except Exception as e:\n", + " logger.error(f\"Error storing memory: {e}\")\n", + " return\n", + "\n", + " logger.info(f\"Stored {memory_type} memory: {content}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0cpk-m7Z1nfh" + }, + "source": [ + "### 3. Retrieve relevant long-term memories\n", + "And now that we're storing memories, we can retrieve them using vector similarity search with metadata filters using RedisVL.\n", + "\n", + "This function:\n", + "1. Takes a query string, optional filters (memory type, user ID, thread ID), and a distance threshold (semantic)\n", + "2. Creates a vector range query using the query's embedding\n", + "3. Builds a filter object based on passed options\n", + "4. Filters to narrow down the search results\n", + "4. Executes the search and returns parsed memory objects" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "id": "xuEAMNjq1nfh" + }, + "outputs": [], + "source": [ + "def retrieve_memories(\n", + " query: str,\n", + " memory_type: Union[Optional[MemoryType], List[MemoryType]] = None,\n", + " user_id: str = SYSTEM_USER_ID,\n", + " thread_id: Optional[str] = None,\n", + " distance_threshold: float = 0.1,\n", + " limit: int = 5,\n", + ") -> List[StoredMemory]:\n", + " \"\"\"Retrieve relevant memories from Redis using vector similarity search.\n", + "\n", + " \"\"\"\n", + " # Create vector query using query embedding\n", + " logger.debug(f\"Retrieving memories for query: {query}\")\n", + " vector_query = VectorRangeQuery(\n", + " vector=openai_embed.embed(query),\n", + " return_fields=[\n", + " \"content\",\n", + " \"memory_type\", \n", + " \"metadata\",\n", + " \"created_at\",\n", + " \"memory_id\",\n", + " \"thread_id\",\n", + " \"user_id\",\n", + " ],\n", + " num_results=limit,\n", + " vector_field_name=\"embedding\",\n", + " dialect=2,\n", + " distance_threshold=distance_threshold,\n", + " )\n", + "\n", + " # Build filter conditions\n", + " base_filters = [f\"@user_id:{{{user_id or SYSTEM_USER_ID}}}\"]\n", + "\n", + " if memory_type:\n", + " if isinstance(memory_type, list):\n", + " base_filters.append(f\"@memory_type:{{{'|'.join(memory_type)}}}\")\n", + " else:\n", + " base_filters.append(f\"@memory_type:{{{memory_type.value}}}\")\n", + "\n", + " if thread_id:\n", + " base_filters.append(f\"@thread_id:{{{thread_id}}}\")\n", + "\n", + " vector_query.set_filter(\" \".join(base_filters))\n", + "\n", + " # Execute vector similarity search\n", + " results = long_term_memory_index.query(vector_query)\n", + "\n", + " # Parse results into StoredMemory objects\n", + " memories = []\n", + " for doc in results:\n", + " try:\n", + " memory = StoredMemory(\n", + " id=doc[\"id\"],\n", + " memory_id=doc[\"memory_id\"],\n", + " user_id=doc[\"user_id\"],\n", + " thread_id=doc.get(\"thread_id\", None),\n", + " memory_type=MemoryType(doc[\"memory_type\"]),\n", + " content=doc[\"content\"],\n", + " created_at=doc[\"created_at\"],\n", + " metadata=doc[\"metadata\"],\n", + " )\n", + " memories.append(memory)\n", + " except Exception as e:\n", + " logger.error(f\"Error parsing memory: {e}\")\n", + " continue\n", + " return memories" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YinPoLcc1nfh" + }, + "source": [ + "## 🛠️ Managing Long-Term Memory with Tools\n", + "\n", + "Memory operations are exposed as **tools** that the LLM can call to store or retrieve memories.\n", + "\n", + "**Tool-based memory management:**\n", + "- LLM decides when to store/retrieve memories\n", + "- Fewer Redis calls but may miss some context\n", + "- Adds some latency due to LLM decision-making\n", + "\n", + "Alternatively, you can always manually manage memories in your workflows.\n", + "\n", + "**Manual memory management:**\n", + "- More Redis calls but faster response times\n", + "- Extracts more memories, providing richer context\n", + "- Higher token usage due to more context\n", + "\n", + "> NOTE: **This tutorial uses tool-based memory** for optimal balance of control and efficiency.\n", + "\n", + "\"Memory" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BmwB-sUJ1nfh" + }, + "source": [ + "### Define Agent Tools\n", + "\n", + "Now that we have our storage functions defined, we can create the tools that will enable our agent to interact with the memory system. These tools will be used by the LLM to manage memories during conversations.\n", + "\n", + "Let's start with the Store Memory Tool:\n", + "\n", + "#### Store Memory Tool\n", + "\n", + "This tool enables the agent to save important information as long-term memories in Redis. It's particularly useful for capturing:\n", + "- User preferences and habits\n", + "- Personal experiences and anecdotes\n", + "- Important facts and knowledge shared during conversations\n", + "\n", + "The tool accepts the following parameters:\n", + "- `content`: The actual memory content to store (e.g., \"User prefers window seats on flights\")\n", + "- `memory_type`: The type of memory (e.g., `MemoryType.EPISODIC` for personal experiences, `MemoryType.SEMANTIC` for general knowledge)\n", + "- `metadata`: Optional dictionary for additional context (e.g., timestamps, source, confidence)\n", + "- `config`: Optional configuration for user/thread context (automatically handled by the agent)\n", + "\n", + "When called, the tool:\n", + "1. Validates the input parameters\n", + "2. Stores the memory in Redis with proper indexing\n", + "3. Returns a success message with the stored content\n", + "4. Handles errors gracefully with informative messages\n", + "\n", + "This tool is designed to be used by the LLM to build a persistent memory of the user's preferences and experiences, enabling more personalized and context-aware interactions over time." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "T-S0eN4B1nfh" + }, + "outputs": [], + "source": [ + "from typing import Dict, Optional\n", + "\n", + "from langchain_core.tools import tool\n", + "from langchain_core.runnables.config import RunnableConfig\n", + "\n", + "\n", + "@tool\n", + "def store_memory_tool(\n", + " content: str,\n", + " memory_type: MemoryType,\n", + " metadata: Optional[Dict[str, str]] = None,\n", + " config: Optional[RunnableConfig] = None,\n", + ") -> str:\n", + " \"\"\"\n", + " Store a long-term memory in the system.\n", + "\n", + " Use this tool to save important information about user preferences,\n", + " experiences, or general knowledge that might be useful in future\n", + " interactions.\n", + " \"\"\"\n", + " config = config or RunnableConfig()\n", + " user_id = config.get(\"user_id\", SYSTEM_USER_ID)\n", + " thread_id = config.get(\"thread_id\")\n", + "\n", + " try:\n", + " # Store in long-term memory\n", + " store_memory(\n", + " content=content,\n", + " memory_type=memory_type,\n", + " user_id=user_id,\n", + " thread_id=thread_id,\n", + " metadata=str(metadata) if metadata else None,\n", + " )\n", + "\n", + " return f\"Successfully stored {memory_type} memory: {content}\"\n", + " except Exception as e:\n", + " return f\"Error storing memory: {str(e)}\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9Am1Z_hItKpc" + }, + "source": [ + "Test the tool:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "id": "H1-HPwag-im_", + "outputId": "4b883edc-29e2-4666-84ae-4e156b03661c" + }, + "outputs": [ + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + }, + "text/plain": [ + "'Successfully stored MemoryType.EPISODIC memory: I like flying on Delta when possible'" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "store_memory_tool.invoke({\"content\": \"I like flying on Delta when possible\", \"memory_type\": \"episodic\"})" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MkjIWht9vKOG" + }, + "source": [ + "Now that we've seen how to store memories, let's look at how to retrieve them.\n", + "\n", + "#### Retrieve Memoreis Tool\n", + "This tool allows us to search through our stored memories using semantic similarity and filtering.\n", + "\n", + "This tool is particularly useful when you want to:\n", + "- Find relevant past experiences or preferences\n", + "- Filter memories by type (episodic or semantic)\n", + "- Get user-specific information\n", + "- Limit the number of results to keep responses focused\n", + "\n", + "The tool works by:\n", + "1. Taking a query string and searching for semantically similar memories\n", + "2. Filtering results based on memory type\n", + "3. Applying a similarity threshold to ensure relevance\n", + "4. Formatting the results in a clear, readable way" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "NEqm-q1ovKOG" + }, + "outputs": [], + "source": [ + "@tool\n", + "def retrieve_memories_tool(\n", + " query: str,\n", + " memory_type: List[MemoryType],\n", + " limit: int = 5,\n", + " config: Optional[RunnableConfig] = None,\n", + ") -> str:\n", + " \"\"\"\n", + " Retrieve long-term memories relevant to the query.\n", + "\n", + " Use this tool to access previously stored information about user\n", + " preferences, experiences, or general knowledge.\n", + " \"\"\"\n", + " config = config or RunnableConfig()\n", + " user_id = config.get(\"user_id\", SYSTEM_USER_ID)\n", + "\n", + " try:\n", + " # Get long-term memories\n", + " stored_memories = retrieve_memories(\n", + " query=query,\n", + " memory_type=memory_type,\n", + " user_id=user_id,\n", + " limit=limit,\n", + " distance_threshold=0.3,\n", + " )\n", + "\n", + " # Format the response\n", + " response = []\n", + "\n", + " if stored_memories:\n", + " response.append(\"Long-term memories:\")\n", + " for memory in stored_memories:\n", + " response.append(f\"- [{memory.memory_type}] {memory.content}\")\n", + "\n", + " return \"\\n\".join(response) if response else \"No relevant memories found.\"\n", + "\n", + " except Exception as e:\n", + " return f\"Error retrieving memories: {str(e)}\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4irYew3pvKON" + }, + "source": [ + "Test the tool:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "id": "CMlAHmTe9vhN", + "outputId": "95304a90-39c3-42d3-bcdc-d7d6ea6e2191" + }, + "outputs": [ + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + }, + "text/plain": [ + "'Long-term memories:\\n- [MemoryType.EPISODIC] I like flying on Delta when possible'" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "retrieve_memories_tool.invoke({\"query\": \"Airline preferences\", \"memory_type\": [\"episodic\"]})" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PftV2tTG1nfh" + }, + "source": [ + "# 🌎 Build the Travel Agent\n", + "\n", + "## Setting Up the ReAct Agent\n", + "\n", + "We'll use LangGraph's prebuilt components to create a ReAct agent with memory capabilities:\n", + "\n", + "1. **Short-term Memory**: A checkpoint saver tracks conversation history per thread\n", + "2. **Long-term Memory**: We'll extract and store key information from conversations\n", + " - Episodic memories: User preferences and experiences\n", + " - Semantic memories: General travel knowledge\n", + "\n", + "The system will automatically summarize conversations to manage context while preserving important details in long-term storage.\n", + "\n", + "Below we start with setting up the Redis checkpointer (`RedisSaver`) that will handle short term memory for the agent." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "id": "QSouau_jvKON" + }, + "outputs": [], + "source": [ + "from langchain_core.messages import AIMessage, SystemMessage\n", + "from langchain_openai import ChatOpenAI\n", + "from langgraph.prebuilt.chat_agent_executor import create_react_agent\n", + "from langgraph.checkpoint.redis import RedisSaver\n", + "\n", + "# Set up the Redis checkpointer for short term memory\n", + "redis_saver = RedisSaver(redis_client=redis_client)\n", + "redis_saver.setup()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "a8LEro_PvKON" + }, + "source": [ + "Next we define the set of tools for the agent." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "id": "EtZo92KuvKON" + }, + "outputs": [], + "source": [ + "# Define the set of tools\n", + "tools = [store_memory_tool, retrieve_memories_tool]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e-2IMJaLvKON" + }, + "source": [ + "Configure the LLM from OpenAI." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "id": "kWz7rC5_vKON" + }, + "outputs": [], + "source": [ + "# Configure an LLM for the agent with a more creative temperature.\n", + "llm = ChatOpenAI(model=\"gpt-4o\", temperature=0.7).bind_tools(tools)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JLKB-V9HvKON" + }, + "source": [ + "Assemble the ReAct agent combining the LLM, tools, checkpointer, and system prompt!" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "id": "e-TpYxYb1nfh" + }, + "outputs": [], + "source": [ + "# Defint the travel agent\n", + "travel_agent = create_react_agent(\n", + " model=llm,\n", + " tools=tools, # Long-term memory: provided as a set of custom tools\n", + " checkpointer=redis_saver, # Short-term memory: the conversation history\n", + " prompt=SystemMessage(\n", + " content=\"\"\"\n", + " You are a travel assistant helping users plan their trips. You remember user preferences\n", + " and provide personalized recommendations based on past interactions.\n", + "\n", + " You have access to the following types of memory:\n", + " 1. Short-term memory: The current conversation thread\n", + " 2. Long-term memory:\n", + " - Episodic: User preferences and past trip experiences (e.g., \"User prefers window seats\")\n", + " - Semantic: General knowledge about travel destinations and requirements\n", + "\n", + " Your procedural knowledge (how to search, book flights, etc.) is built into your tools and prompts.\n", + "\n", + " Always be helpful, personal, and context-aware in your responses.\n", + " \"\"\"\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "htuJmhkY1nfi" + }, + "source": [ + "✅ Now that we have the basic agent in place, we will build a LangGraph workflow that invokes this agent as a node. The graph will consist of three nodes in total. We will move through each one separately." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "R2mZwvHj1nfi" + }, + "source": [ + "## Node 1: Respond to the user\n", + "In LangGraph, a **node** represents a discrete unit of processing in a workflow. Each node is a function that takes a state object and configuration as input, processes the data, and returns an updated state. Nodes can be connected to form a directed graph that defines the flow of execution.\n", + "\n", + "The `respond_to_user` node (below) is our first node in the travel agent workflow. It serves as the entry point for user interactions and handles the core conversation flow. Here's how it works:\n", + "\n", + "1. It receives the current conversation state and configuration\n", + "2. Extracts any human messages from the state\n", + "3. Invokes our travel agent to generate a response\n", + "4. Handles any errors gracefully\n", + "5. Updates the conversation state with the agent's response\n", + "\n", + "The node uses a custom `RuntimeState` class that inherits from `MessagesState` to maintain the conversation history. This state object is passed between nodes in the graph, allowing each node to access and modify the conversation context as needed." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "id": "PFdGi8fd1nfi" + }, + "outputs": [], + "source": [ + "\n", + "from langchain_core.messages import HumanMessage\n", + "from langgraph.graph.message import MessagesState\n", + "\n", + "\n", + "class RuntimeState(MessagesState):\n", + " \"\"\"Runtime state for the travel agent.\"\"\"\n", + " pass\n", + "\n", + "\n", + "def respond_to_user(state: RuntimeState, config: RunnableConfig) -> RuntimeState:\n", + " \"\"\"Invoke the travel agent to generate a response.\"\"\"\n", + " human_messages = [m for m in state[\"messages\"] if isinstance(m, HumanMessage)]\n", + " if not human_messages:\n", + " logger.warning(\"No HumanMessage found in state\")\n", + " return state\n", + "\n", + " try:\n", + " # Single agent invocation, not streamed (simplified for reliability)\n", + " result = travel_agent.invoke({\"messages\": state[\"messages\"]}, config=config)\n", + " agent_message = result[\"messages\"][-1]\n", + " state[\"messages\"].append(agent_message)\n", + " except Exception as e:\n", + " logger.error(f\"Error invoking travel agent: {e}\")\n", + " agent_message = AIMessage(\n", + " content=\"I'm sorry, I encountered an error processing your request.\"\n", + " )\n", + " state[\"messages\"].append(agent_message)\n", + "\n", + " return state" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kZyQE3MeyoQw" + }, + "source": [ + "## Node 2: Execute Tools\n", + "\n", + "The `execute_tools` node is a critical component in our travel agent's workflow that bridges the gap between the LLM's decisions and actual tool execution. Positioned after the `respond_to_user` node, it handles the practical side of the agent's tool-using capabilities.\n", + "\n", + "When the LLM determines it needs to use a tool, it includes tool calls in its response. This node then:\n", + "\n", + "1. Scans the conversation history to find the most recent AI message containing tool calls\n", + "2. For each tool call found:\n", + " - Extracts the tool name, arguments, and call ID from the message\n", + " - Matches the tool name against our available tools\n", + " - Executes the tool with the provided arguments\n", + " - Creates a ToolMessage containing the result\n", + "3. Handles any errors that occur during tool execution\n", + "4. Adds all tool results back to the conversation history\n", + "\n", + "This node is essential because it enables our agent to interact with external systems and services while maintaining a coherent conversation flow. Without it, the agent would be limited to just generating text responses without the ability to perform actual actions or retrieve real-time information.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "id": "bkFA2_vgyrdZ" + }, + "outputs": [], + "source": [ + "from langchain_core.messages import ToolMessage\n", + "\n", + "\n", + "def execute_tools(state: RuntimeState, config: RunnableConfig) -> RuntimeState:\n", + " \"\"\"Execute tools specified in the latest AIMessage and append ToolMessages.\"\"\"\n", + " messages = state[\"messages\"]\n", + " latest_ai_message = next(\n", + " (m for m in reversed(messages) if isinstance(m, AIMessage) and m.tool_calls),\n", + " None\n", + " )\n", + "\n", + " if not latest_ai_message:\n", + " return state # No tool calls to process\n", + "\n", + " tool_messages = []\n", + " for tool_call in latest_ai_message.tool_calls:\n", + " tool_name = tool_call[\"name\"]\n", + " tool_args = tool_call[\"args\"]\n", + " tool_id = tool_call[\"id\"]\n", + "\n", + " # Find the corresponding tool\n", + " tool = next((t for t in tools if t.name == tool_name), None)\n", + " if not tool:\n", + " continue # Skip if tool not found\n", + "\n", + " try:\n", + " # Execute the tool with the provided arguments\n", + " result = tool.invoke(tool_args, config=config)\n", + " # Create a ToolMessage with the result\n", + " tool_message = ToolMessage(\n", + " content=str(result),\n", + " tool_call_id=tool_id,\n", + " name=tool_name\n", + " )\n", + " tool_messages.append(tool_message)\n", + " except Exception as e:\n", + " # Handle tool execution errors\n", + " error_message = ToolMessage(\n", + " content=f\"Error executing tool '{tool_name}': {str(e)}\",\n", + " tool_call_id=tool_id,\n", + " name=tool_name\n", + " )\n", + " tool_messages.append(error_message)\n", + "\n", + " # Append the ToolMessages to the message history\n", + " messages.extend(tool_messages)\n", + " state[\"messages\"] = messages\n", + " return state" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "LM3oPg101nfi" + }, + "source": [ + "## Node 3: Conversation Summarization\n", + "\n", + "While our Redis-based long-term memory system helps store important information, we still need to manage the immediate conversation context. As the chat progresses, the message history grows, potentially overwhelming the LLM's context window. This is where our third node comes in.\n", + "\n", + "The conversation summarization node acts as a context manager, periodically condensing the chat history into a concise summary. Here's how it works:\n", + "\n", + "1. **Trigger**: The node monitors the message count and triggers summarization after every 6 messages (configurable via `MESSAGE_SUMMARIZATION_THRESHOLD`)\n", + "\n", + "2. **Summarization Process**:\n", + " - Uses GPT-4o with a low temperature (0.3) to ensure consistent, focused summaries\n", + " - Preserves critical information like travel preferences, trip details, and pending questions\n", + " - Replaces older messages with the summary while keeping recent context\n", + "\n", + "3. **Benefits**:\n", + " - Prevents context window overflow\n", + " - Maintains conversation coherence\n", + " - Optimizes token usage while preserving essential context\n", + "\n", + "The resulting summary becomes part of the conversation history, allowing the agent to reference past interactions without carrying the full message load." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "id": "KUYw18Xb1nfi" + }, + "outputs": [], + "source": [ + "from langchain_core.messages import RemoveMessage\n", + "\n", + "# An LLM configured for summarization.\n", + "summarizer = ChatOpenAI(model=\"gpt-4o\", temperature=0.3)\n", + "\n", + "# The number of messages after which we'll summarize the conversation.\n", + "MESSAGE_SUMMARIZATION_THRESHOLD = 6\n", + "\n", + "\n", + "def summarize_conversation(\n", + " state: RuntimeState, config: RunnableConfig\n", + ") -> RuntimeState:\n", + " \"\"\"\n", + " Summarize a list of messages into a concise summary to reduce context length\n", + " while preserving important information.\n", + " \"\"\"\n", + " messages = state[\"messages\"]\n", + " current_message_count = len(messages)\n", + " if current_message_count < MESSAGE_SUMMARIZATION_THRESHOLD:\n", + " logger.debug(f\"Not summarizing conversation: {current_message_count}\")\n", + " return state\n", + "\n", + " system_prompt = \"\"\"\n", + " You are a conversation summarizer. Create a concise summary of the previous\n", + " conversation between a user and a travel assistant.\n", + "\n", + " The summary should:\n", + " 1. Highlight key topics, preferences, and decisions\n", + " 2. Include any specific trip details (destinations, dates, preferences)\n", + " 3. Note any outstanding questions or topics that need follow-up\n", + " 4. Be concise but informative\n", + "\n", + " Format your summary as a brief narrative paragraph.\n", + " \"\"\"\n", + "\n", + " message_content = \"\\n\".join(\n", + " [\n", + " f\"{'User' if isinstance(msg, HumanMessage) else 'Assistant'}: {msg.content}\"\n", + " for msg in messages\n", + " ]\n", + " )\n", + "\n", + " # Invoke the summarizer\n", + " summary_messages = [\n", + " SystemMessage(content=system_prompt),\n", + " HumanMessage(\n", + " content=f\"Please summarize this conversation:\\n\\n{message_content}\"\n", + " ),\n", + " ]\n", + "\n", + " summary_response = summarizer.invoke(summary_messages)\n", + "\n", + " logger.info(f\"Summarized {len(messages)} messages into a conversation summary\")\n", + "\n", + " summary_message = SystemMessage(\n", + " content=f\"\"\"\n", + " Summary of the conversation so far:\n", + "\n", + " {summary_response.content}\n", + "\n", + " Please continue the conversation based on this summary and the recent messages.\n", + " \"\"\"\n", + " )\n", + " remove_messages = [\n", + " RemoveMessage(id=msg.id) for msg in messages if msg.id is not None\n", + " ]\n", + "\n", + " state[\"messages\"] = [ # type: ignore\n", + " *remove_messages,\n", + " summary_message,\n", + " state[\"messages\"][-1],\n", + " ]\n", + "\n", + " return state.copy()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dpzjQxXi1nfi" + }, + "source": [ + "## Assemble the full graph\n", + "\n", + "🚧 It's time to assemble our graph for end-to-end agent execution. We will attach all three **nodes** we defined above." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "h6TvQaob1nfi" + }, + "outputs": [], + "source": [ + "from langgraph.graph import StateGraph, END\n", + "\n", + "workflow = StateGraph(RuntimeState)\n", + "\n", + "# Add nodes to the graph\n", + "workflow.add_node(\"agent\", respond_to_user)\n", + "workflow.add_node(\"execute_tools\", execute_tools)\n", + "workflow.add_node(\"summarize_conversation\", summarize_conversation)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cYGE-DLuvKOO" + }, + "source": [ + "Next, we will tie the nodes together using **edges** which control process flow. There is a conditional edge between the agent node and what comes next. What comes next is based on whether we need to handle + execute a tool call or proceed..." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "61Un_szhvKOO" + }, + "outputs": [], + "source": [ + "def decide_next_step(state):\n", + " latest_ai_message = next((m for m in reversed(state[\"messages\"]) if isinstance(m, AIMessage)), None)\n", + " if latest_ai_message and latest_ai_message.tool_calls:\n", + " return \"execute_tools\"\n", + " return \"summarize_conversation\"\n", + "\n", + "\n", + "workflow.set_entry_point(\"agent\")\n", + "workflow.add_conditional_edges(\n", + " \"agent\",\n", + " decide_next_step,\n", + " {\"execute_tools\": \"execute_tools\", \"summarize_conversation\": \"summarize_conversation\"},\n", + ")\n", + "workflow.add_edge(\"execute_tools\", \"agent\")\n", + "workflow.add_edge(\"summarize_conversation\", END)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3L_OEc80vKOO" + }, + "source": [ + "Compile the graph!" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "id": "kuwdsVhYvKOO" + }, + "outputs": [], + "source": [ + "graph = workflow.compile(checkpointer=redis_saver)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sQSfnQDK1nfo" + }, + "source": [ + "## Testing the Main Agent Loop\n", + "\n", + "Now that we have our workflow graph set up, let's test the main interaction loop. This loop will:\n", + "1. Initialize the conversation state and configuration\n", + "2. Process user input through our workflow\n", + "3. Display the agent's responses\n", + "4. Handle any errors gracefully\n", + "\n", + "The main loop implements the following workflow:\n", + "\n", + "1. Initialization\n", + " - Creates a unique thread ID for conversation tracking\n", + " - Initializes an empty message state for the conversation\n", + "\n", + "2. Input Processing\n", + " - Prompts for user input in a continuous loop\n", + " - Handles empty inputs by skipping to next iteration\n", + " - Provides exit commands (\"exit\" or \"quit\") to end the session\n", + "\n", + "3. Message Flow\n", + " - Converts user input into a HumanMessage\n", + " - Streams the message through our workflow graph\n", + " - Updates conversation state with each processing step\n", + " - Maintains conversation history for context\n", + "\n", + "4. Response Generation\n", + " - Processes the state through our agent workflow\n", + " - Extracts the most recent AI response\n", + " - Displays the response to the user\n", + " - Handles cases where no response is generated\n", + "\n", + "5. Error Handling\n", + " - Catches and logs any processing errors\n", + " - Provides user-friendly error messages\n", + " - Preserves conversation state even when errors occur\n", + " - Ensures graceful recovery from failures" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "id": "xD1BTjXY1nfp" + }, + "outputs": [], + "source": [ + "def main(thread_id: str = \"book_flight\", user_id: str = \"demo_user\"):\n", + " \"\"\"Main interaction loop for the travel agent\"\"\"\n", + "\n", + " print(\"Welcome to the Travel Assistant! (Type 'exit' to quit)\")\n", + "\n", + " config = RunnableConfig(configurable={\"thread_id\": thread_id, \"user_id\": user_id})\n", + " state = RuntimeState(messages=[])\n", + "\n", + " while True:\n", + " user_input = input(\"\\nYou (type 'quit' to quit): \")\n", + "\n", + " if not user_input:\n", + " continue\n", + "\n", + " if user_input.lower() in [\"exit\", \"quit\"]:\n", + " print(\"Thank you for using the Travel Assistant. Goodbye!\")\n", + " break\n", + "\n", + " state[\"messages\"].append(HumanMessage(content=user_input))\n", + "\n", + " try:\n", + " # Process user input through the graph\n", + " for result in graph.stream(state, config=config, stream_mode=\"values\"):\n", + " state = RuntimeState(**result)\n", + "\n", + " logger.debug(f\"# of messages after run: {len(state['messages'])}\")\n", + "\n", + " # Find the most recent AI message, so we can print the response\n", + " ai_messages = [m for m in state[\"messages\"] if isinstance(m, AIMessage)]\n", + " if ai_messages:\n", + " message = ai_messages[-1].content\n", + " else:\n", + " logger.error(\"No AI messages after run\")\n", + " message = \"I'm sorry, I couldn't process your request properly.\"\n", + " # Add the error message to the state\n", + " state[\"messages\"].append(AIMessage(content=message))\n", + "\n", + " print(f\"\\nAssistant: {message}\")\n", + "\n", + " except Exception as e:\n", + " logger.exception(f\"Error processing request: {e}\")\n", + " error_message = \"I'm sorry, I encountered an error processing your request.\"\n", + " print(f\"\\nAssistant: {error_message}\")\n", + " # Add the error message to the state\n", + " state[\"messages\"].append(AIMessage(content=error_message))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "P51RdhnzfZa1" + }, + "source": [ + "Before you try your own, take a look at the current conversation between Tyler and the travel agent. Notice the memory storage actions, the calls to the LLM, and also the conversation summarization that take place during the workflow!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "C5fg4PH97YGY", + "outputId": "1a6fd03c-e0f5-46a8-9462-76f46260e901" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Enter a user ID: tyler\n", + "Enter a thread ID: 123\n", + "Welcome to the Travel Assistant! (Type 'exit' to quit)\n", + "13:51:57 __main__ INFO Starting memory consolidation for user tyler\n", + "\n", + "You (type 'quit' to quit): Hi I plan to go to singapore with my wife this summer. We love outdoors activities and trying new kinds of foods. Any good recommendations?\n", + "13:52:30 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "13:52:30 __main__ INFO Preparing to store memory: User plans to visit Singapore this summer with his wife and they love outdoor activities and trying new kinds of foods.\n", + "13:52:31 httpx INFO HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n", + "13:52:31 httpx INFO HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n", + "13:52:31 httpx INFO HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n", + "13:52:31 __main__ INFO Stored MemoryType.EPISODIC memory: User plans to visit Singapore this summer with his wife and they love outdoor activities and trying new kinds of foods.\n", + "13:52:37 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "\n", + "Assistant: Singapore is a fantastic destination for outdoor activities and culinary adventures! Here are some recommendations that you and your wife might enjoy:\n", + "\n", + "### Outdoor Activities:\n", + "1. **Gardens by the Bay**: Explore the stunning gardens and the iconic Supertree Grove. You can also walk along the OCBC Skyway for a breathtaking view of the Marina Bay area.\n", + "\n", + "2. **Sentosa Island**: Enjoy a day at the beach, try zip-lining, or explore the numerous attractions like Universal Studios Singapore.\n", + "\n", + "3. **MacRitchie Reservoir**: Go for a hike along the MacRitchie Trails and experience the TreeTop Walk, a suspension bridge spanning the forest canopy.\n", + "\n", + "4. **Pulau Ubin**: Rent a bicycle and explore this rustic island. It's a great place to enjoy nature and see what Singapore was like in the past.\n", + "\n", + "### Food Experiences:\n", + "1. **Hawker Centers**: Visit places like Maxwell Food Centre or Lau Pa Sat to try local dishes such as Hainanese chicken rice, laksa, and chili crab.\n", + "\n", + "2. **Peranakan Cuisine**: Try something different with Peranakan or Nyonya food, which is a blend of Chinese and Malay culinary traditions. \n", + "\n", + "3. **Jumbo Seafood**: Known for their chili crab, this is a must-try for seafood lovers. There are several locations around the city.\n", + "\n", + "4. **Food Tours**: Consider joining a food tour to explore the diverse culinary scene in Singapore and learn about the history and culture behind each dish.\n", + "\n", + "Feel free to ask if you need more details or have specific interests!\n", + "\n", + "You (type 'quit' to quit): Excellent thank you. I would love help booking flights. What are the best routes typically flown from Atlanta to Singapore?\n", + "13:53:24 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "\n", + "Assistant: Flying from Atlanta to Singapore usually involves at least one stopover, as there are no direct flights. Here are some of the best routes typically flown:\n", + "\n", + "1. **Atlanta (ATL) to Singapore (SIN) via Tokyo (NRT/HND)**:\n", + " - Airlines: Delta Air Lines, Japan Airlines\n", + " - This route often involves a stop in Tokyo, which can be a great opportunity to explore Japan if you have a long layover.\n", + "\n", + "2. **Atlanta (ATL) to Singapore (SIN) via Seoul (ICN)**:\n", + " - Airlines: Korean Air, Delta Air Lines\n", + " - A stopover in Seoul offers another chance for a brief visit in South Korea.\n", + "\n", + "3. **Atlanta (ATL) to Singapore (SIN) via Doha (DOH)**:\n", + " - Airline: Qatar Airways\n", + " - Qatar Airways offers a stop in Doha, which is known for its luxurious airport and facilities.\n", + "\n", + "4. **Atlanta (ATL) to Singapore (SIN) via Dubai (DXB)**:\n", + " - Airline: Emirates\n", + " - Stopping in Dubai can be a fantastic experience with plenty of attractions to explore.\n", + "\n", + "5. **Atlanta (ATL) to Singapore (SIN) via Frankfurt (FRA) or Munich (MUC)**:\n", + " - Airlines: Lufthansa, Singapore Airlines\n", + " - A European stopover provides a different cultural experience.\n", + "\n", + "When booking flights, it's a good idea to consider the total travel time, layover duration, and the amenities offered by the airlines. Let me know if you would like assistance with booking or have any preferences, such as specific airlines or layover cities!\n", + "\n", + "You (type 'quit' to quit): Ok great. As you know we like Delta. But we also prefer to sit first class if possible. Do these kinds of routes offer upgrades normally?\n", + "13:53:32 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "13:53:32 httpx INFO HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n", + "13:53:37 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "13:53:41 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "13:53:41 __main__ INFO Summarized 6 messages into a conversation summary\n", + "\n", + "Assistant: Since you prefer Delta Air Lines, you might consider the following route:\n", + "\n", + "### Atlanta (ATL) to Singapore (SIN) via Tokyo (NRT/HND):\n", + "- **Airlines**: Delta Air Lines, Japan Airlines\n", + "- **Class Options**: Delta offers Delta One, their premium cabin, which includes lie-flat seats, premium dining, and other luxury amenities.\n", + "\n", + "Delta typically allows for upgrades to first-class or their premium Delta One cabin, especially if you're a SkyMiles member or have elite status. Upgrades can often be requested at the time of booking or closer to the departure date, depending on availability.\n", + "\n", + "For the best chance of securing an upgrade, consider:\n", + "- Booking early and using any available miles or upgrade certificates.\n", + "- Checking the Delta app or website regularly for upgrade availability.\n", + "- Contacting Delta customer service if you have specific requests or need assistance with your booking.\n", + "\n", + "Let me know if you need help with booking or have any other questions!\n", + "\n", + "You (type 'quit' to quit): Let's hold on booking for now. Back to activities. Based on what you know about me, what do you think we should do? Design the perfect Sunday for me and my wife in Singapore.\n", + "13:54:05 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "13:54:06 httpx INFO HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n", + "13:54:13 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "\n", + "Assistant: Here's a perfect Sunday itinerary in Singapore, tailored to your love for outdoor activities and culinary experiences:\n", + "\n", + "### Morning:\n", + "- **Breakfast at Tiong Bahru Bakery**: Start your day with a delicious breakfast at this popular bakery known for its croissants and artisanal coffee.\n", + "- **Visit Gardens by the Bay**: Spend the morning exploring this iconic attraction. Don't miss the Supertree Grove and Cloud Forest Dome for a mix of nature and futuristic architecture.\n", + "\n", + "### Midday:\n", + "- **Lunch at Lau Pa Sat Hawker Centre**: Head to this historic food market for a taste of Singapore's diverse street food. Try local favorites like Hainanese chicken rice, satay, and laksa.\n", + "- **Stroll Along Marina Bay**: Enjoy a leisurely walk along Marina Bay and take in the stunning skyline views. You can also visit the Merlion Park for some iconic photo opportunities.\n", + "\n", + "### Afternoon:\n", + "- **Biking at East Coast Park**: Rent a bike and enjoy a ride along the scenic coastline. The park offers a beautiful setting for outdoor activities and relaxation.\n", + "- **Explore Katong and Joo Chiat**: Discover the colorful shophouses and Peranakan culture in these charming neighborhoods. You can also stop by for some traditional Peranakan snacks.\n", + "\n", + "### Evening:\n", + "- **Dinner at a Rooftop Restaurant**: End your day with a romantic dinner at a rooftop restaurant like Level33 or Ce La Vi, offering panoramic views of the city skyline.\n", + "- **Night Safari at Singapore Zoo**: If you're up for some adventure, consider the Night Safari for a unique experience of seeing nocturnal animals in their natural habitat.\n", + "\n", + "This itinerary combines your love for the outdoors with Singapore's rich culinary scene, ensuring a memorable day for you and your wife. Let me know if you'd like more details or adjustments!\n", + "\n", + "You (type 'quit' to quit): Great as long as there are no shellfish items featured as my wife is very allergic.\n", + "13:54:52 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "13:54:52 __main__ INFO Preparing to store memory: User's wife is allergic to shellfish.\n", + "13:54:58 httpx INFO HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n", + "13:54:58 httpx INFO HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n", + "13:54:58 __main__ INFO Stored MemoryType.EPISODIC memory: User's wife is allergic to shellfish.\n", + "13:55:00 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "13:55:03 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "13:55:03 __main__ INFO Summarized 6 messages into a conversation summary\n", + "\n", + "Assistant: I've noted that your wife is allergic to shellfish. When dining at places like hawker centers or restaurants, it's a good idea to inform the staff about her allergy to ensure a safe dining experience. \n", + "\n", + "If you need more personalized recommendations or adjustments to your itinerary, feel free to ask!\n", + "\n", + "You (type 'quit' to quit): Excellent. Back to booking flights. For our preferred airline, will you recommend best route to get there from the US?\n", + "13:55:32 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "13:55:32 httpx INFO HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n", + "13:55:34 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "\n", + "Assistant: Given your preference for Delta Air Lines, I recommend flying from Atlanta (ATL) to Singapore (SIN) with a layover in Tokyo (NRT). Delta offers convenient connections through Tokyo, and this route is popular for travelers heading to Singapore.\n", + "\n", + "Would you like me to assist with finding specific flight options or any other details regarding the booking?\n", + "\n", + "You (type 'quit' to quit): Sounds great. We will go with this one. I havent been to Singapore since I was 15 years old when I went with my family during my dads business trip. We had such a great time. I think you are going to help us have a fantastic trip!!\n", + "13:55:52 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "13:55:52 __main__ INFO Preparing to store memory: User visited Singapore at the age of 15 with their family during their dad's business trip and had a great time.\n", + "13:55:52 httpx INFO HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n", + "13:55:52 httpx INFO HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n", + "13:55:52 __main__ INFO Stored MemoryType.EPISODIC memory: User visited Singapore at the age of 15 with their family during their dad's business trip and had a great time.\n", + "13:55:54 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "13:55:57 httpx INFO HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "13:55:57 __main__ INFO Summarized 6 messages into a conversation summary\n", + "\n", + "Assistant: I'm thrilled to be part of planning your trip back to Singapore! It sounds like you have fond memories from your last visit, and I'm here to help make this trip just as memorable. If you need any more assistance with flights or have questions about your itinerary, just let me know!\n", + "\n", + "You (type 'quit' to quit): quit\n", + "Thank you for using the Travel Assistant. Goodbye!\n" + ] + } + ], + "source": [ + "try:\n", + " user_id = input(\"Enter a user ID: \") or \"demo_user\"\n", + " thread_id = input(\"Enter a thread ID: \") or \"demo_thread\"\n", + "except Exception:\n", + " # If we're running in CI, we don't have a terminal to input from, so just exit\n", + " exit()\n", + "else:\n", + " main(thread_id, user_id)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xmFwUzVo2qxB" + }, + "source": [ + "Let's review what the agent learned about me during the process!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "-txziZxw2jik", + "outputId": "1ac4bf0b-ec10-4fd2-ae28-8568e9be5829" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "13:56:11 httpx INFO HTTP Request: POST https://api.openai.com/v1/embeddings \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "data": { + "text/plain": [ + "['Long-term memories:',\n", + " '- [MemoryType.EPISODIC] User plans to visit Singapore this summer with his wife and they love outdoor activities and trying new kinds of foods.',\n", + " \"- [MemoryType.EPISODIC] User visited Singapore at the age of 15 with their family during their dad's business trip and had a great time.\",\n", + " '- [MemoryType.EPISODIC] I like flying on Delta when possible',\n", + " \"- [MemoryType.EPISODIC] User's wife is allergic to shellfish.\"]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res = retrieve_memories_tool.invoke({\"query\": \"Travel, activity, and dietary preferences\", \"memory_type\": [\"episodic\", \"semantic\"]})\n", + "res.split(\"\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "M2UrJxte5HRT" + }, + "source": [ + "Don't forget, we have the RedisVL index we can use to manually query or work with as needed:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "qYm3HQj54WPX", + "outputId": "5db66cb4-e07b-40dd-e4ae-35fed24e283d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from redisvl.query import CountQuery\n", + "\n", + "# count total long-term memories in Redis\n", + "long_term_memory_index.query(CountQuery())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "recap-summary" + }, + "source": [ + "___\n", + "\n", + "# 🎓 Recap\n", + "\n", + "You've now learned the fundamentals from scratch and built a **production-ready memory-enabled AI agent** from the ground up. Let's recap the key accomplishments:\n", + "\n", + "## 🏗️ What we built\n", + "\n", + "1. ✅ **Dual-Memory Architecture**: Short-term conversation state + long-term persistent knowledge with LangGraph and Redis\n", + "2. ✅ **Vector-Powered Memory**: Semantic search using RedisVL\n", + "3. ✅ **Smart Deduplication**: Prevents storing similar memories multiple times \n", + "4. ✅ **Tool-Based Memory Management**: LLM controls when to store/retrieve memories \n", + "5. ✅ **Conversation Summarization**: Automatic context window management \n", + "\n", + "**Why Redis?**\n", + "\n", + "- **Performance**: Sub-millisecond memory retrieval at scale \n", + "- **Versatility**: Handles both structured state (checkpoints) and unstructured data (vectors) \n", + "- **Production-Ready**: Built-in persistence, clustering, and high availability \n", + "- **Developer Experience**: Rich ecosystem with tools like RedisVL and AI framework integrations \n", + "\n", + "## 🔧 Alternative memory dev frameworks\n", + "\n", + "While this tutorial shows hands-on implementation, consider these frameworks for faster development:\n", + "\n", + "- **[LangMem](https://github.com/langchain-ai/langmem)**: LangChain's official memory framework\n", + "- **[Mem0](https://github.com/mem0-ai/mem0)**: Dedicated memory layer for AI applications\n", + "\n", + "**When to Use Each Approach:**\n", + "- **Custom Implementation** (this tutorial): Maximum control, specific requirements, learning\n", + "- **LangMem**: LangChain ecosystem integration, rapid prototyping\n", + "- **Mem0**: Multi-application memory sharing, enterprise features\n", + "\n", + "## 🔄 Next Steps\n", + "\n", + "You now have the foundation to build sophisticated, memory-enabled AI agents that feel truly intelligent and personalized.\n", + "\n", + "**Want to learn more?**\n", + "1. [Read more](https://redis.io/blog/build-smarter-ai-agents-manage-short-term-and-long-term-memory-with-redis/) about agent memory patterns with Redis\n", + "2. [Meet with our experts](https://redis.io/meeting/?utm_source=nir&utm_medium=cpa&utm_campaign=2025-06-ai_in_production&utm_content=cr-all_contact_us_forms-7013z000000evRk) to get a consultation on your architecture and where Redis can help." + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": ".venv", + "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.11.11" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "### Packages" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%pip install -q langchain-openai langgraph-checkpoint langgraph-checkpoint-redis \"langchain-community>=0.2.11\" tavily-python langchain-redis pydantic ulid" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Required API Keys\n", - "\n", - "You must add an OpenAI API key with billing information for this lesson. You will also need\n", - "a Tavily API key. Tavily API keys come with free credits at the time of this writing." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "# NBVAL_SKIP\n", - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(key: str):\n", - " if key not in os.environ:\n", - " os.environ[key] = getpass.getpass(f\"{key}:\")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")\n", - "\n", - "# Uncomment this if you have a Tavily API key and want to\n", - "# use the web search tool.\n", - "# _set_env(\"TAVILY_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Run redis\n", - "\n", - "### For colab\n", - "\n", - "Convert the following cell to Python to run it in Colab." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "%%sh\n", - "# Exit if this is not running in Colab\n", - "if [ -z \"$COLAB_RELEASE_TAG\" ]; then\n", - " exit 0\n", - "fi\n", - "\n", - "curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg\n", - "echo \"deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main\" | sudo tee /etc/apt/sources.list.d/redis.list\n", - "sudo apt-get update > /dev/null 2>&1\n", - "sudo apt-get install redis-stack-server > /dev/null 2>&1\n", - "redis-stack-server --daemonize yes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### For Alternative Environments\n", - "There are many ways to get the necessary redis-stack instance running\n", - "1. On cloud, deploy a [FREE instance of Redis in the cloud](https://redis.com/try-free/). Or, if you have your\n", - "own version of Redis Enterprise running, that works too!\n", - "2. Per OS, [see the docs](https://redis.io/docs/latest/operate/oss_and_stack/install/install-stack/)\n", - "3. With docker: `docker run -d --name redis-stack-server -p 6379:6379 redis/redis-stack-server:latest`\n", - "\n", - "## Test connection" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "from redis import Redis\n", - "\n", - "# Use the environment variable if set, otherwise default to localhost\n", - "REDIS_URL = os.getenv(\"REDIS_URL\", \"redis://localhost:6379\")\n", - "\n", - "redis_client = Redis.from_url(REDIS_URL)\n", - "redis_client.ping()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Short-Term vs. Long-Term Memory\n", - "\n", - "The agent uses **short-term memory** and **long-term memory**. The implementations\n", - "of short-term and long-term memory differ, as does how the agent uses them. Let's\n", - "dig into the details. We'll return to code soon!\n", - "\n", - "### Short-Term Memory\n", - "\n", - "For short-term memory, the agent keeps track of conversation history with Redis.\n", - "Because this is a LangGraph agent, we use the `RedisSaver` class to achieve\n", - "this. `RedisSaver` is what LangGraph refers to as a _checkpointer_. You can read\n", - "more about checkpointers in the [LangGraph\n", - "documentation](https://langchain-ai.github.io/langgraph/concepts/persistence/).\n", - "In short, they store state for each node in the graph, which for this agent\n", - "includes conversation history.\n", - "\n", - "Here's a diagram showing how the agent uses Redis for short-term memory. Each node\n", - "in the graph (Retrieve Users, Respond, Summarize Conversation) persists its \"state\"\n", - "to Redis. The state object contains the agent's message conversation history for\n", - "the current thread.\n", - "\n", - "\n", - "\n", - "If Redis persistence is on, then Redis will persist short-term memory to\n", - "disk. This means if you quit the agent and return with the same thread ID and\n", - "user ID, you'll resume the same conversation.\n", - "\n", - "Conversation histories can grow long and pollute an LLM's context window. To manage\n", - "this, after every \"turn\" of a conversation, the agent summarizes messages when the\n", - "conversation grows past a configurable threshold. Checkpointers do not do this by\n", - "default, so we've created a node in the graph for summarization.\n", - "\n", - "**NOTE**: We'll see example code for the summarization node later in this notebook.\n", - "\n", - "### Long-Term Memory\n", - "\n", - "Aside from conversation history, the agent stores long-term memories in a search\n", - "index in Redis, using [RedisVL](https://docs.redisvl.com/en/latest/). Here's a\n", - "diagram showing the components involved:\n", - "\n", - "\n", - "\n", - "The agent tracks two types of long-term memories:\n", - "\n", - "- **Episodic**: User-specific experiences and preferences\n", - "- **Semantic**: General knowledge about travel destinations and requirements\n", - "\n", - "**NOTE** If you're familiar with the [CoALA\n", - "paper](https://arxiv.org/abs/2309.02427), the terms \"episodic\" and \"semantic\"\n", - "here map to the same concepts in the paper. CoALA discusses a third type of\n", - "memory, _procedural_. In our example, we consider logic encoded in Python in the\n", - "agent codebase to be its procedural memory.\n", - "\n", - "### Representing Long-Term Memory in Python\n", - "We use a couple of Pydantic models to represent long-term memories, both before\n", - "and after they're stored in Redis:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "from datetime import datetime\n", - "from enum import Enum\n", - "from typing import List, Optional\n", - "\n", - "from pydantic import BaseModel, Field\n", - "import ulid\n", - "\n", - "\n", - "class MemoryType(str, Enum):\n", - " \"\"\"\n", - " The type of a long-term memory.\n", - "\n", - " EPISODIC: User specific experiences and preferences\n", - "\n", - " SEMANTIC: General knowledge on top of the user's preferences and LLM's\n", - " training data.\n", - " \"\"\"\n", - "\n", - " EPISODIC = \"episodic\"\n", - " SEMANTIC = \"semantic\"\n", - "\n", - "\n", - "class Memory(BaseModel):\n", - " \"\"\"Represents a single long-term memory.\"\"\"\n", - "\n", - " content: str\n", - " memory_type: MemoryType\n", - " metadata: str\n", - " \n", - " \n", - "class Memories(BaseModel):\n", - " \"\"\"\n", - " A list of memories extracted from a conversation by an LLM.\n", - "\n", - " NOTE: OpenAI's structured output requires us to wrap the list in an object.\n", - " \"\"\"\n", - "\n", - " memories: List[Memory]\n", - "\n", - "\n", - "class StoredMemory(Memory):\n", - " \"\"\"A stored long-term memory\"\"\"\n", - "\n", - " id: str # The redis key\n", - " memory_id: ulid.ULID = Field(default_factory=lambda: ulid.ULID())\n", - " created_at: datetime = Field(default_factory=datetime.now)\n", - " user_id: Optional[str] = None\n", - " thread_id: Optional[str] = None\n", - " memory_type: Optional[MemoryType] = None\n", - " \n", - " \n", - "class MemoryStrategy(str, Enum):\n", - " \"\"\"\n", - " Supported strategies for managing long-term memory.\n", - " \n", - " This notebook supports two strategies for working with long-term memory:\n", - "\n", - " TOOLS: The LLM decides when to store and retrieve long-term memories, using\n", - " tools (AKA, function-calling) to do so.\n", - "\n", - " MANUAL: The agent manually retrieves long-term memories relevant to the\n", - " current conversation before sending every message and analyzes every\n", - " response to extract memories to store.\n", - "\n", - " NOTE: In both cases, the agent runs a background thread to consolidate\n", - " memories, and a workflow step to summarize conversations after the history\n", - " grows past a threshold.\n", - " \"\"\"\n", - "\n", - " TOOLS = \"tools\"\n", - " MANUAL = \"manual\"\n", - " \n", - " \n", - "# By default, we'll use the manual strategy\n", - "memory_strategy = MemoryStrategy.MANUAL" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll return to these models soon to see them in action!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Short-Term Memory Storage and Retrieval\n", - "\n", - "The `RedisSaver` class handles the basics of short-term memory storage for us,\n", - "so we don't need to do anything here." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Long-Term Memory Storage and Retrieval\n", - "\n", - "We use RedisVL to store and retrieve long-term memories with vector embeddings.\n", - "This allows for semantic search of past experiences and knowledge.\n", - "\n", - "Let's set up a new search index to store and query memories:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from redisvl.index import SearchIndex\n", - "from redisvl.schema.schema import IndexSchema\n", - "\n", - "# Define schema for long-term memory index\n", - "memory_schema = IndexSchema.from_dict({\n", - " \"index\": {\n", - " \"name\": \"agent_memories\",\n", - " \"prefix\": \"memory:\",\n", - " \"key_separator\": \":\",\n", - " \"storage_type\": \"json\",\n", - " },\n", - " \"fields\": [\n", - " {\"name\": \"content\", \"type\": \"text\"},\n", - " {\"name\": \"memory_type\", \"type\": \"tag\"},\n", - " {\"name\": \"metadata\", \"type\": \"text\"},\n", - " {\"name\": \"created_at\", \"type\": \"text\"},\n", - " {\"name\": \"user_id\", \"type\": \"tag\"},\n", - " {\"name\": \"memory_id\", \"type\": \"tag\"},\n", - " {\n", - " \"name\": \"embedding\",\n", - " \"type\": \"vector\",\n", - " \"attrs\": {\n", - " \"algorithm\": \"flat\",\n", - " \"dims\": 1536, # OpenAI embedding dimension\n", - " \"distance_metric\": \"cosine\",\n", - " \"datatype\": \"float32\",\n", - " },\n", - " },\n", - " ],\n", - " }\n", - ")\n", - "\n", - "# Create search index\n", - "try:\n", - " long_term_memory_index = SearchIndex(\n", - " schema=memory_schema, redis_client=redis_client, overwrite=True\n", - " )\n", - " long_term_memory_index.create()\n", - " print(\"Long-term memory index ready\")\n", - "except Exception as e:\n", - " print(f\"Error creating index: {e}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Storage and Retrieval Functions\n", - "\n", - "Now that we have a search index in Redis, we can write functions to store and\n", - "retrieve memories. We can use RedisVL to write these.\n", - "\n", - "First, we'll write a utility function to check if a memory similar to a given\n", - "memory already exists in the index. Later, we can use this to avoid storing\n", - "duplicate memories.\n", - "\n", - "#### Checking for Similar Memories" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "\n", - "from redisvl.query import VectorRangeQuery\n", - "from redisvl.query.filter import Tag\n", - "from redisvl.utils.vectorize.text.openai import OpenAITextVectorizer\n", - "\n", - "\n", - "logger = logging.getLogger(__name__)\n", - "\n", - "# If we have any memories that aren't associated with a user, we'll use this ID.\n", - "SYSTEM_USER_ID = \"system\"\n", - "\n", - "openai_embed = OpenAITextVectorizer(model=\"text-embedding-ada-002\")\n", - "\n", - "# Change this to MemoryStrategy.TOOLS to use function-calling to store and\n", - "# retrieve memories.\n", - "memory_strategy = MemoryStrategy.MANUAL\n", - "\n", - "\n", - "def similar_memory_exists(\n", - " content: str,\n", - " memory_type: MemoryType,\n", - " user_id: str = SYSTEM_USER_ID,\n", - " thread_id: Optional[str] = None,\n", - " distance_threshold: float = 0.1,\n", - ") -> bool:\n", - " \"\"\"Check if a similar long-term memory already exists in Redis.\"\"\"\n", - " query_embedding = openai_embed.embed(content)\n", - " filters = (Tag(\"user_id\") == user_id) & (Tag(\"memory_type\") == memory_type)\n", - " if thread_id:\n", - " filters = filters & (Tag(\"thread_id\") == thread_id)\n", - "\n", - " # Search for similar memories\n", - " vector_query = VectorRangeQuery(\n", - " vector=query_embedding,\n", - " num_results=1,\n", - " vector_field_name=\"embedding\",\n", - " filter_expression=filters,\n", - " distance_threshold=distance_threshold,\n", - " return_fields=[\"id\"],\n", - " )\n", - " results = long_term_memory_index.query(vector_query)\n", - " logger.debug(f\"Similar memory search results: {results}\")\n", - "\n", - " if results:\n", - " logger.debug(\n", - " f\"{len(results)} similar {'memory' if results.count == 1 else 'memories'} found. First: \"\n", - " f\"{results[0]['id']}. Skipping storage.\"\n", - " )\n", - " return True\n", - "\n", - " return False\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Storing and Retrieving Long-Term Memories" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll use the `similar_memory_exists()` function when we store memories:" - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "from datetime import datetime\n", - "from typing import List, Optional, Union\n", - "\n", - "import ulid\n", - "\n", - "\n", - "def store_memory(\n", - " content: str,\n", - " memory_type: MemoryType,\n", - " user_id: str = SYSTEM_USER_ID,\n", - " thread_id: Optional[str] = None,\n", - " metadata: Optional[str] = None,\n", - "):\n", - " \"\"\"Store a long-term memory in Redis, avoiding duplicates.\"\"\"\n", - " if metadata is None:\n", - " metadata = \"{}\"\n", - "\n", - " logger.info(f\"Preparing to store memory: {content}\")\n", - "\n", - " if similar_memory_exists(content, memory_type, user_id, thread_id):\n", - " logger.info(\"Similar memory found, skipping storage\")\n", - " return\n", - "\n", - " embedding = openai_embed.embed(content)\n", - "\n", - " memory_data = {\n", - " \"user_id\": user_id or SYSTEM_USER_ID,\n", - " \"content\": content,\n", - " \"memory_type\": memory_type.value,\n", - " \"metadata\": metadata,\n", - " \"created_at\": datetime.now().isoformat(),\n", - " \"embedding\": embedding,\n", - " \"memory_id\": str(ulid.ULID()),\n", - " \"thread_id\": thread_id,\n", - " }\n", - "\n", - " try:\n", - " long_term_memory_index.load([memory_data])\n", - " except Exception as e:\n", - " logger.error(f\"Error storing memory: {e}\")\n", - " return\n", - "\n", - " logger.info(f\"Stored {memory_type} memory: {content}\")\n", - " \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And now that we're storing memories, we can retrieve them:" - ] - }, - { - "cell_type": "code", - "execution_count": 90, - "metadata": {}, - "outputs": [], - "source": [ - "def retrieve_memories(\n", - " query: str,\n", - " memory_type: Union[Optional[MemoryType], List[MemoryType]] = None,\n", - " user_id: str = SYSTEM_USER_ID,\n", - " thread_id: Optional[str] = None,\n", - " distance_threshold: float = 0.1,\n", - " limit: int = 5,\n", - ") -> List[StoredMemory]:\n", - " \"\"\"Retrieve relevant memories from Redis\"\"\"\n", - " # Create vector query\n", - " logger.debug(f\"Retrieving memories for query: {query}\")\n", - " vector_query = VectorRangeQuery(\n", - " vector=openai_embed.embed(query),\n", - " return_fields=[\n", - " \"content\",\n", - " \"memory_type\",\n", - " \"metadata\",\n", - " \"created_at\",\n", - " \"memory_id\",\n", - " \"thread_id\",\n", - " \"user_id\",\n", - " ],\n", - " num_results=limit,\n", - " vector_field_name=\"embedding\",\n", - " dialect=2,\n", - " distance_threshold=distance_threshold,\n", - " )\n", - "\n", - " base_filters = [f\"@user_id:{{{user_id or SYSTEM_USER_ID}}}\"]\n", - "\n", - " if memory_type:\n", - " if isinstance(memory_type, list):\n", - " base_filters.append(f\"@memory_type:{{{'|'.join(memory_type)}}}\")\n", - " else:\n", - " base_filters.append(f\"@memory_type:{{{memory_type.value}}}\")\n", - "\n", - " if thread_id:\n", - " base_filters.append(f\"@thread_id:{{{thread_id}}}\")\n", - "\n", - " vector_query.set_filter(\" \".join(base_filters))\n", - "\n", - " # Execute search\n", - " results = long_term_memory_index.query(vector_query)\n", - "\n", - " # Parse results\n", - " memories = []\n", - " for doc in results:\n", - " try:\n", - " memory = StoredMemory(\n", - " id=doc[\"id\"],\n", - " memory_id=doc[\"memory_id\"],\n", - " user_id=doc[\"user_id\"],\n", - " thread_id=doc.get(\"thread_id\", None),\n", - " memory_type=MemoryType(doc[\"memory_type\"]),\n", - " content=doc[\"content\"],\n", - " created_at=doc[\"created_at\"],\n", - " metadata=doc[\"metadata\"],\n", - " )\n", - " memories.append(memory)\n", - " except Exception as e:\n", - " logger.error(f\"Error parsing memory: {e}\")\n", - " continue\n", - " return memories" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Managing Long-Term Memory Manually vs. Calling Tools\n", - "\n", - "While making LLM queries, agents can store and retrieve relevant long-term\n", - "memories in one of two ways (and more, but these are the two we'll discuss):\n", - "\n", - "1. Expose memory retrieval and storage as \"tools\" that the LLM can decide to call contextually.\n", - "2. Manually augment prompts with relevant memories, and manually extract and store relevant memories.\n", - "\n", - "These approaches both have tradeoffs.\n", - "\n", - "**Tool-calling** leaves the decision to store a memory or find relevant memories\n", - "up to the LLM. This can add latency to requests. It will generally result in\n", - "fewer calls to Redis but will also sometimes miss out on retrieving potentially\n", - "relevant context and/or extracting relevant memories from a conversation.\n", - "\n", - "**Manual memory management** will result in more calls to Redis but will produce\n", - "fewer round-trip LLM requests, reducing latency. Manually extracting memories\n", - "will generally extract more memories than tool calls, which will store more data\n", - "in Redis and should result in more context added to LLM requests. More context\n", - "means more contextual awareness but also higher token spend.\n", - "\n", - "You can test both approaches with this agent by changing the `memory_strategy`\n", - "variable.\n", - "\n", - "## Managing Memory Manually\n", - "With the manual memory management strategy, we're going to extract memories after\n", - "every interaction between the user and the agent. We're then going to retrieve\n", - "those memories during future interactions before we send the query.\n", - "\n", - "### Extracting Memories\n", - "We'll call this `extract_memories` function manually after each interaction:" - ] - }, - { - "cell_type": "code", - "execution_count": 91, - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.messages import HumanMessage\n", - "from langchain_core.runnables.config import RunnableConfig\n", - "from langchain_openai import ChatOpenAI\n", - "from langgraph.graph.message import MessagesState\n", - "\n", - "\n", - "class RuntimeState(MessagesState):\n", - " \"\"\"Agent state (just messages for now)\"\"\"\n", - "\n", - " pass\n", - "\n", - "\n", - "memory_llm = ChatOpenAI(model=\"gpt-4o\", temperature=0.3).with_structured_output(\n", - " Memories\n", - ")\n", - "\n", - "\n", - "def extract_memories(\n", - " last_processed_message_id: Optional[str],\n", - " state: RuntimeState,\n", - " config: RunnableConfig,\n", - ") -> Optional[str]:\n", - " \"\"\"Extract and store memories in long-term memory\"\"\"\n", - " logger.debug(f\"Last message ID is: {last_processed_message_id}\")\n", - "\n", - " if len(state[\"messages\"]) < 3: # Need at least a user message and agent response\n", - " logger.debug(\"Not enough messages to extract memories\")\n", - " return last_processed_message_id\n", - "\n", - " user_id = config.get(\"configurable\", {}).get(\"user_id\", None)\n", - " if not user_id:\n", - " logger.warning(\"No user ID found in config when extracting memories\")\n", - " return last_processed_message_id\n", - "\n", - " # Get the messages\n", - " messages = state[\"messages\"]\n", - "\n", - " # Find the newest message ID (or None if no IDs)\n", - " newest_message_id = None\n", - " for msg in reversed(messages):\n", - " if hasattr(msg, \"id\") and msg.id:\n", - " newest_message_id = msg.id\n", - " break\n", - "\n", - " logger.debug(f\"Newest message ID is: {newest_message_id}\")\n", - "\n", - " # If we've already processed up to this message ID, skip\n", - " if (\n", - " last_processed_message_id\n", - " and newest_message_id\n", - " and last_processed_message_id == newest_message_id\n", - " ):\n", - " logger.debug(f\"Already processed messages up to ID {newest_message_id}\")\n", - " return last_processed_message_id\n", - "\n", - " # Find the index of the message with last_processed_message_id\n", - " start_index = 0\n", - " if last_processed_message_id:\n", - " for i, msg in enumerate(messages):\n", - " if hasattr(msg, \"id\") and msg.id == last_processed_message_id:\n", - " start_index = i + 1 # Start processing from the next message\n", - " break\n", - "\n", - " # Check if there are messages to process\n", - " if start_index >= len(messages):\n", - " logger.debug(\"No new messages to process since last processed message\")\n", - " return newest_message_id\n", - "\n", - " # Get only the messages after the last processed message\n", - " messages_to_process = messages[start_index:]\n", - "\n", - " # If there are not enough messages to process, include some context\n", - " if len(messages_to_process) < 3 and start_index > 0:\n", - " # Include up to 3 messages before the start_index for context\n", - " context_start = max(0, start_index - 3)\n", - " messages_to_process = messages[context_start:]\n", - "\n", - " # Format messages for the memory agent\n", - " message_history = \"\\n\".join(\n", - " [\n", - " f\"{'User' if isinstance(msg, HumanMessage) else 'Assistant'}: {msg.content}\"\n", - " for msg in messages_to_process\n", - " ]\n", - " )\n", - "\n", - " prompt = f\"\"\"\n", - " You are a long-memory manager. Your job is to analyze this message history\n", - " and extract information that might be useful in future conversations.\n", - " \n", - " Extract two types of memories:\n", - " 1. EPISODIC: Personal experiences and preferences specific to this user\n", - " Example: \"User prefers window seats\" or \"User had a bad experience in Paris\"\n", - " \n", - " 2. SEMANTIC: General facts and knowledge about travel that could be useful\n", - " Example: \"The best time to visit Japan is during cherry blossom season in April\"\n", - " \n", - " For each memory, provide:\n", - " - Type: The memory type (EPISODIC/SEMANTIC)\n", - " - Content: The actual information to store\n", - " - Metadata: Relevant tags and context (as JSON)\n", - " \n", - " IMPORTANT RULES:\n", - " 1. Only extract information that would be genuinely useful for future interactions.\n", - " 2. Do not extract procedural knowledge - that is handled by the system's built-in tools and prompts.\n", - " 3. You are a large language model, not a human - do not extract facts that you already know.\n", - " \n", - " Message history:\n", - " {message_history}\n", - " \n", - " Extracted memories:\n", - " \"\"\"\n", - "\n", - " memories_to_store: Memories = memory_llm.invoke([HumanMessage(content=prompt)]) # type: ignore\n", - "\n", - " # Store each extracted memory\n", - " for memory_data in memories_to_store.memories:\n", - " store_memory(\n", - " content=memory_data.content,\n", - " memory_type=memory_data.memory_type,\n", - " user_id=user_id,\n", - " metadata=memory_data.metadata,\n", - " )\n", - "\n", - " # Return data with the newest processed message ID\n", - " return newest_message_id" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll use this function in a background thread. We'll start the thread in manual\n", - "memory mode but not in tool mode, and we'll run it as a worker that pulls\n", - "message histories from a `Queue` to process:" - ] - }, - { - "cell_type": "code", - "execution_count": 92, - "metadata": {}, - "outputs": [], - "source": [ - "import time\n", - "from queue import Queue\n", - "\n", - "\n", - "DEFAULT_MEMORY_WORKER_INTERVAL = 5 * 60 # 5 minutes\n", - "DEFAULT_MEMORY_WORKER_BACKOFF_INTERVAL = 10 * 60 # 10 minutes\n", - "\n", - "\n", - "def memory_worker(\n", - " memory_queue: Queue,\n", - " user_id: str,\n", - " interval: int = DEFAULT_MEMORY_WORKER_INTERVAL,\n", - " backoff_interval: int = DEFAULT_MEMORY_WORKER_BACKOFF_INTERVAL,\n", - "):\n", - " \"\"\"Worker function that processes long-term memory extraction requests\"\"\"\n", - " key = f\"memory_worker:{user_id}:last_processed_message_id\"\n", - "\n", - " last_processed_message_id = redis_client.get(key)\n", - " logger.debug(f\"Last processed message ID: {last_processed_message_id}\")\n", - " last_processed_message_id = (\n", - " str(last_processed_message_id) if last_processed_message_id else None\n", - " )\n", - "\n", - " while True:\n", - " try:\n", - " # Get the next state and config from the queue (blocks until an item is available)\n", - " state, config = memory_queue.get()\n", - "\n", - " # Extract long-term memories from the conversation history\n", - " last_processed_message_id = extract_memories(\n", - " last_processed_message_id, state, config\n", - " )\n", - " logger.debug(\n", - " f\"Memory worker extracted memories. Last processed message ID: {last_processed_message_id}\"\n", - " )\n", - "\n", - " if last_processed_message_id:\n", - " logger.debug(\n", - " f\"Setting last processed message ID: {last_processed_message_id}\"\n", - " )\n", - " redis_client.set(key, last_processed_message_id)\n", - "\n", - " # Mark the task as done\n", - " memory_queue.task_done()\n", - " logger.debug(\"Memory extraction completed for queue item\")\n", - " # Wait before processing next item\n", - " time.sleep(interval)\n", - " except Exception as e:\n", - " # Wait before processing next item after an error\n", - " logger.exception(f\"Error in memory worker thread: {e}\")\n", - " time.sleep(backoff_interval)\n", - "\n", - "\n", - "# NOTE: We'll actually start the worker thread later, in the main loop." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Augmenting Queries with Relevant Memories\n", - "\n", - "For every user interaction with the agent, we'll query for relevant memories and\n", - "add them to the LLM prompt with `retrieve_relevant_memories()`.\n", - "\n", - "**NOTE:** We only run this node in the \"manual\" memory management strategy. If\n", - "using \"tools,\" the LLM will decide when to retrieve memories." - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "metadata": {}, - "outputs": [], - "source": [ - "def retrieve_relevant_memories(\n", - " state: RuntimeState, config: RunnableConfig\n", - ") -> RuntimeState:\n", - " \"\"\"Retrieve relevant memories based on the current conversation.\"\"\"\n", - " if not state[\"messages\"]:\n", - " logger.debug(\"No messages in state\")\n", - " return state\n", - "\n", - " latest_message = state[\"messages\"][-1]\n", - " if not isinstance(latest_message, HumanMessage):\n", - " logger.debug(\"Latest message is not a HumanMessage: \", latest_message)\n", - " return state\n", - "\n", - " user_id = config.get(\"configurable\", {}).get(\"user_id\", SYSTEM_USER_ID)\n", - "\n", - " query = str(latest_message.content)\n", - " relevant_memories = retrieve_memories(\n", - " query=query,\n", - " memory_type=[MemoryType.EPISODIC, MemoryType.SEMANTIC],\n", - " limit=5,\n", - " user_id=user_id,\n", - " distance_threshold=0.3,\n", - " )\n", - "\n", - " logger.debug(f\"All relevant memories: {relevant_memories}\")\n", - "\n", - " # We'll augment the latest human message with the relevant memories.\n", - " if relevant_memories:\n", - " memory_context = \"\\n\\n### Relevant memories from previous conversations:\\n\"\n", - "\n", - " # Group by memory type\n", - " memory_types = {\n", - " MemoryType.EPISODIC: \"User Preferences & History\",\n", - " MemoryType.SEMANTIC: \"Travel Knowledge\",\n", - " }\n", - "\n", - " for mem_type, type_label in memory_types.items():\n", - " memories_of_type = [\n", - " m for m in relevant_memories if m.memory_type == mem_type\n", - " ]\n", - " if memories_of_type:\n", - " memory_context += f\"\\n**{type_label}**:\\n\"\n", - " for mem in memories_of_type:\n", - " memory_context += f\"- {mem.content}\\n\"\n", - "\n", - " augmented_message = HumanMessage(content=f\"{query}\\n{memory_context}\")\n", - " state[\"messages\"][-1] = augmented_message\n", - "\n", - " logger.debug(f\"Augmented message: {augmented_message.content}\")\n", - "\n", - " return state.copy()\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is the first function we've seen that represents a **node** in the LangGraph\n", - "graph we'll build. As a node representation, this function receives a `state`\n", - "object containing the runtime state of the graph, which is where conversation\n", - "history resides. Its `config` parameter contains data like the user and thread\n", - "IDs.\n", - "\n", - "This will be the starting node in the graph we'll assemble later. When a user\n", - "invokes the graph with a message, the first thing we'll do (when using the\n", - "\"manual\" memory strategy) is augment that message with potentially related\n", - "memories." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Defining Tools\n", - "\n", - "Now that we have our storage functions defined, we can create **tools**. We'll\n", - "need these to set up our agent in a moment. These tools will only be used when\n", - "the agent is operating in \"tools\" memory management mode." - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.tools import tool\n", - "from typing import Dict, Optional\n", - "\n", - "\n", - "@tool\n", - "def store_memory_tool(\n", - " content: str,\n", - " memory_type: MemoryType,\n", - " metadata: Optional[Dict[str, str]] = None,\n", - " config: Optional[RunnableConfig] = None,\n", - ") -> str:\n", - " \"\"\"\n", - " Store a long-term memory in the system.\n", - "\n", - " Use this tool to save important information about user preferences,\n", - " experiences, or general knowledge that might be useful in future\n", - " interactions.\n", - " \"\"\"\n", - " config = config or RunnableConfig()\n", - " user_id = config.get(\"user_id\", SYSTEM_USER_ID)\n", - " thread_id = config.get(\"thread_id\")\n", - "\n", - " try:\n", - " # Store in long-term memory\n", - " store_memory(\n", - " content=content,\n", - " memory_type=memory_type,\n", - " user_id=user_id,\n", - " thread_id=thread_id,\n", - " metadata=str(metadata) if metadata else None,\n", - " )\n", - "\n", - " return f\"Successfully stored {memory_type} memory: {content}\"\n", - " except Exception as e:\n", - " return f\"Error storing memory: {str(e)}\"\n", - "\n", - "\n", - "@tool\n", - "def retrieve_memories_tool(\n", - " query: str,\n", - " memory_type: List[MemoryType],\n", - " limit: int = 5,\n", - " config: Optional[RunnableConfig] = None,\n", - ") -> str:\n", - " \"\"\"\n", - " Retrieve long-term memories relevant to the query.\n", - "\n", - " Use this tool to access previously stored information about user\n", - " preferences, experiences, or general knowledge.\n", - " \"\"\"\n", - " config = config or RunnableConfig()\n", - " user_id = config.get(\"user_id\", SYSTEM_USER_ID)\n", - "\n", - " try:\n", - " # Get long-term memories\n", - " stored_memories = retrieve_memories(\n", - " query=query,\n", - " memory_type=memory_type,\n", - " user_id=user_id,\n", - " limit=limit,\n", - " distance_threshold=0.3,\n", - " )\n", - "\n", - " # Format the response\n", - " response = []\n", - "\n", - " if stored_memories:\n", - " response.append(\"Long-term memories:\")\n", - " for memory in stored_memories:\n", - " response.append(f\"- [{memory.memory_type}] {memory.content}\")\n", - "\n", - " return \"\\n\".join(response) if response else \"No relevant memories found.\"\n", - "\n", - " except Exception as e:\n", - " return f\"Error retrieving memories: {str(e)}\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Creating the Agent\n", - "\n", - "Because we're using different LLM objects configured for different purposes and\n", - "a prebuilt ReAct agent, we need a node that invokes the agent and returns the\n", - "response. But before we can invoke the agent, we need to set it up. This will\n", - "involve defining the tools the agent will need." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "from typing import Dict, List, Optional, Tuple, Union\n", - "\n", - "from langchain_community.tools.tavily_search import TavilySearchResults\n", - "from langchain_core.callbacks.manager import CallbackManagerForToolRun\n", - "from langchain_core.messages import AIMessage, AIMessageChunk, SystemMessage\n", - "from langgraph.prebuilt.chat_agent_executor import create_react_agent\n", - "from langgraph.checkpoint.redis import RedisSaver\n", - "\n", - "\n", - "class CachingTavilySearchResults(TavilySearchResults):\n", - " \"\"\"\n", - " An interface to Tavily search that caches results in Redis.\n", - " \n", - " Caching the results of the web search allows us to avoid rate limiting,\n", - " improve latency, and reduce costs.\n", - " \"\"\"\n", - "\n", - " def _run(\n", - " self,\n", - " query: str,\n", - " run_manager: Optional[CallbackManagerForToolRun] = None,\n", - " ) -> Tuple[Union[List[Dict[str, str]], str], Dict]:\n", - " \"\"\"Use the tool.\"\"\"\n", - " cache_key = f\"tavily_search:{query}\"\n", - " cached_result: Optional[str] = redis_client.get(cache_key) # type: ignore\n", - " if cached_result:\n", - " return json.loads(cached_result), {}\n", - " else:\n", - " result, raw_results = super()._run(query, run_manager)\n", - " redis_client.set(cache_key, json.dumps(result), ex=60 * 60)\n", - " return result, raw_results\n", - "\n", - "\n", - "# Create a checkpoint saver for short-term memory. This keeps track of the\n", - "# conversation history for each thread. Later, we'll continually summarize the\n", - "# conversation history to keep the context window manageable, while we also\n", - "# extract long-term memories from the conversation history to store in the\n", - "# long-term memory index.\n", - "redis_saver = RedisSaver(redis_client=redis_client)\n", - "redis_saver.setup()\n", - "\n", - "# Configure an LLM for the agent with a more creative temperature.\n", - "llm = ChatOpenAI(model=\"gpt-4o\", temperature=0.7)\n", - "\n", - "\n", - "# Uncomment these lines if you have a Tavily API key and want to use the web\n", - "# search tool. The agent is much more useful with this tool.\n", - "# web_search_tool = CachingTavilySearchResults(max_results=2)\n", - "# base_tools = [web_search_tool]\n", - "base_tools = []\n", - "\n", - "if memory_strategy == MemoryStrategy.TOOLS:\n", - " tools = base_tools + [store_memory_tool, retrieve_memories_tool]\n", - "elif memory_strategy == MemoryStrategy.MANUAL:\n", - " tools = base_tools\n", - "\n", - "\n", - "travel_agent = create_react_agent(\n", - " model=llm,\n", - " tools=tools,\n", - " checkpointer=redis_saver, # Short-term memory: the conversation history\n", - " prompt=SystemMessage(\n", - " content=\"\"\"\n", - " You are a travel assistant helping users plan their trips. You remember user preferences\n", - " and provide personalized recommendations based on past interactions.\n", - " \n", - " You have access to the following types of memory:\n", - " 1. Short-term memory: The current conversation thread\n", - " 2. Long-term memory: \n", - " - Episodic: User preferences and past trip experiences (e.g., \"User prefers window seats\")\n", - " - Semantic: General knowledge about travel destinations and requirements\n", - " \n", - " Your procedural knowledge (how to search, book flights, etc.) is built into your tools and prompts.\n", - " \n", - " Always be helpful, personal, and context-aware in your responses.\n", - " \"\"\"\n", - " ),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Responding to the User\n", - "\n", - "Now we can write our node that invokes the agent and responds to the user:" - ] - }, - { - "cell_type": "code", - "execution_count": 96, - "metadata": {}, - "outputs": [], - "source": [ - "def respond_to_user(state: RuntimeState, config: RunnableConfig) -> RuntimeState:\n", - " \"\"\"Invoke the travel agent to generate a response.\"\"\"\n", - " human_messages = [m for m in state[\"messages\"] if isinstance(m, HumanMessage)]\n", - " if not human_messages:\n", - " logger.warning(\"No HumanMessage found in state\")\n", - " return state\n", - "\n", - " try:\n", - " for result in travel_agent.stream(\n", - " {\"messages\": state[\"messages\"]}, config=config, stream_mode=\"messages\"\n", - " ):\n", - " result_messages = result.get(\"messages\", [])\n", - "\n", - " ai_messages = [\n", - " m\n", - " for m in result_messages\n", - " if isinstance(m, AIMessage) or isinstance(m, AIMessageChunk)\n", - " ]\n", - " if ai_messages:\n", - " agent_response = ai_messages[-1]\n", - " # Append only the agent's response to the original state\n", - " state[\"messages\"].append(agent_response)\n", - "\n", - " except Exception as e:\n", - " logger.error(f\"Error invoking travel agent: {e}\")\n", - " agent_response = AIMessage(\n", - " content=\"I'm sorry, I encountered an error processing your request.\"\n", - " )\n", - " return state" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Summarizing Conversation History\n", - "\n", - "We've been focusing on long-term memory, but let's bounce back to short-term\n", - "memory for a moment. With `RedisSaver`, LangGraph will manage our message\n", - "history automatically. Still, the message history will continue to grow\n", - "indefinitely, until it overwhelms the LLM's token context window.\n", - "\n", - "To solve this problem, we'll add a node to the graph that summarizes the\n", - "conversation if it's grown past a threshold." - ] - }, - { - "cell_type": "code", - "execution_count": 97, - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.messages import RemoveMessage\n", - "\n", - "# An LLM configured for summarization.\n", - "summarizer = ChatOpenAI(model=\"gpt-4o\", temperature=0.3)\n", - "\n", - "# The number of messages after which we'll summarize the conversation.\n", - "MESSAGE_SUMMARIZATION_THRESHOLD = 10\n", - "\n", - "\n", - "def summarize_conversation(\n", - " state: RuntimeState, config: RunnableConfig\n", - ") -> Optional[RuntimeState]:\n", - " \"\"\"\n", - " Summarize a list of messages into a concise summary to reduce context length\n", - " while preserving important information.\n", - " \"\"\"\n", - " messages = state[\"messages\"]\n", - " current_message_count = len(messages)\n", - " if current_message_count < MESSAGE_SUMMARIZATION_THRESHOLD:\n", - " logger.debug(f\"Not summarizing conversation: {current_message_count}\")\n", - " return state\n", - "\n", - " system_prompt = \"\"\"\n", - " You are a conversation summarizer. Create a concise summary of the previous\n", - " conversation between a user and a travel assistant.\n", - " \n", - " The summary should:\n", - " 1. Highlight key topics, preferences, and decisions\n", - " 2. Include any specific trip details (destinations, dates, preferences)\n", - " 3. Note any outstanding questions or topics that need follow-up\n", - " 4. Be concise but informative\n", - " \n", - " Format your summary as a brief narrative paragraph.\n", - " \"\"\"\n", - "\n", - " message_content = \"\\n\".join(\n", - " [\n", - " f\"{'User' if isinstance(msg, HumanMessage) else 'Assistant'}: {msg.content}\"\n", - " for msg in messages\n", - " ]\n", - " )\n", - "\n", - " # Invoke the summarizer\n", - " summary_messages = [\n", - " SystemMessage(content=system_prompt),\n", - " HumanMessage(\n", - " content=f\"Please summarize this conversation:\\n\\n{message_content}\"\n", - " ),\n", - " ]\n", - "\n", - " summary_response = summarizer.invoke(summary_messages)\n", - "\n", - " logger.info(f\"Summarized {len(messages)} messages into a conversation summary\")\n", - "\n", - " summary_message = SystemMessage(\n", - " content=f\"\"\"\n", - " Summary of the conversation so far:\n", - " \n", - " {summary_response.content}\n", - " \n", - " Please continue the conversation based on this summary and the recent messages.\n", - " \"\"\"\n", - " )\n", - " remove_messages = [\n", - " RemoveMessage(id=msg.id) for msg in messages if msg.id is not None\n", - " ]\n", - "\n", - " state[\"messages\"] = [ # type: ignore\n", - " *remove_messages,\n", - " summary_message,\n", - " state[\"messages\"][-1],\n", - " ]\n", - "\n", - " return state.copy()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Assembling the Graph\n", - "\n", - "It's time to assemble our graph!" - ] - }, - { - "cell_type": "code", - "execution_count": 98, - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.graph import StateGraph, END, START\n", - "\n", - "\n", - "workflow = StateGraph(RuntimeState)\n", - "\n", - "workflow.add_node(\"respond\", respond_to_user)\n", - "workflow.add_node(\"summarize_conversation\", summarize_conversation)\n", - "\n", - "if memory_strategy == MemoryStrategy.MANUAL:\n", - " # In manual memory mode, we'll retrieve relevant memories before\n", - " # responding to the user, and then augment the user's message with the\n", - " # relevant memories.\n", - " workflow.add_node(\"retrieve_memories\", retrieve_relevant_memories)\n", - " workflow.add_edge(START, \"retrieve_memories\")\n", - " workflow.add_edge(\"retrieve_memories\", \"respond\")\n", - "else:\n", - " # In tool-calling mode, we'll respond to the user and let the LLM\n", - " # decide when to retrieve and store memories, using tool calls.\n", - " workflow.add_edge(START, \"respond\")\n", - "\n", - "# Regardless of memory strategy, we'll summarize the conversation after\n", - "# responding to the user, to keep the context window manageable.\n", - "workflow.add_edge(\"respond\", \"summarize_conversation\")\n", - "workflow.add_edge(\"summarize_conversation\", END)\n", - "\n", - "# Finally, compile the graph.\n", - "graph = workflow.compile(checkpointer=redis_saver)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Consolidating Memories in a Background Thread\n", - "\n", - "We're almost ready to create the main loop that runs our graph. First, though,\n", - "let's create a worker that consolidates similar memories on a regular schedule,\n", - "using semantic search. We'll run the worker in a background thread later, in the\n", - "main loop." - ] - }, - { - "cell_type": "code", - "execution_count": 99, - "metadata": {}, - "outputs": [], - "source": [ - "from redisvl.query import FilterQuery\n", - "\n", - "\n", - "def consolidate_memories(user_id: str, batch_size: int = 10):\n", - " \"\"\"\n", - " Periodically merge similar long-term memories for a user.\n", - " \"\"\"\n", - " logger.info(f\"Starting memory consolidation for user {user_id}\")\n", - " \n", - " # For each memory type, consolidate separately\n", - "\n", - " for memory_type in MemoryType:\n", - " all_memories = []\n", - "\n", - " # Get all memories of this type for the user\n", - " of_type_for_user = (Tag(\"user_id\") == user_id) & (\n", - " Tag(\"memory_type\") == memory_type\n", - " )\n", - " filter_query = FilterQuery(filter_expression=of_type_for_user)\n", - " \n", - " for batch in long_term_memory_index.paginate(filter_query, page_size=batch_size):\n", - " all_memories.extend(batch)\n", - " \n", - " all_memories = long_term_memory_index.query(filter_query)\n", - " if not all_memories:\n", - " continue\n", - "\n", - " # Group similar memories\n", - " processed_ids = set()\n", - " for memory in all_memories:\n", - " if memory[\"id\"] in processed_ids:\n", - " continue\n", - "\n", - " memory_embedding = memory[\"embedding\"]\n", - " vector_query = VectorRangeQuery(\n", - " vector=memory_embedding,\n", - " num_results=10,\n", - " vector_field_name=\"embedding\",\n", - " filter_expression=of_type_for_user\n", - " & (Tag(\"memory_id\") != memory[\"memory_id\"]),\n", - " distance_threshold=0.1,\n", - " return_fields=[\n", - " \"content\",\n", - " \"metadata\",\n", - " ],\n", - " )\n", - " similar_memories = long_term_memory_index.query(vector_query)\n", - "\n", - " # If we found similar memories, consolidate them\n", - " if similar_memories:\n", - " combined_content = memory[\"content\"]\n", - " combined_metadata = memory[\"metadata\"]\n", - "\n", - " if combined_metadata:\n", - " try:\n", - " combined_metadata = json.loads(combined_metadata)\n", - " except Exception as e:\n", - " logger.error(f\"Error parsing metadata: {e}\")\n", - " combined_metadata = {}\n", - "\n", - " for similar in similar_memories:\n", - " # Merge the content of similar memories\n", - " combined_content += f\" {similar['content']}\"\n", - "\n", - " if similar[\"metadata\"]:\n", - " try:\n", - " similar_metadata = json.loads(similar[\"metadata\"])\n", - " except Exception as e:\n", - " logger.error(f\"Error parsing metadata: {e}\")\n", - " similar_metadata = {}\n", - "\n", - " combined_metadata = {**combined_metadata, **similar_metadata}\n", - "\n", - " # Create a consolidated memory\n", - " new_metadata = {\n", - " \"consolidated\": True,\n", - " \"source_count\": len(similar_memories) + 1,\n", - " **combined_metadata,\n", - " }\n", - " consolidated_memory = {\n", - " \"content\": summarize_memories(combined_content, memory_type),\n", - " \"memory_type\": memory_type.value,\n", - " \"metadata\": json.dumps(new_metadata),\n", - " \"user_id\": user_id,\n", - " }\n", - "\n", - " # Delete the old memories\n", - " delete_memory(memory[\"id\"])\n", - " for similar in similar_memories:\n", - " delete_memory(similar[\"id\"])\n", - "\n", - " # Store the new consolidated memory\n", - " store_memory(\n", - " content=consolidated_memory[\"content\"],\n", - " memory_type=memory_type,\n", - " user_id=user_id,\n", - " metadata=consolidated_memory[\"metadata\"],\n", - " )\n", - "\n", - " logger.info(\n", - " f\"Consolidated {len(similar_memories) + 1} memories into one\"\n", - " )\n", - "\n", - "\n", - "def delete_memory(memory_id: str):\n", - " \"\"\"Delete a memory from Redis\"\"\"\n", - " try:\n", - " result = long_term_memory_index.drop_keys([memory_id])\n", - " except Exception as e:\n", - " logger.error(f\"Deleting memory {memory_id} failed: {e}\")\n", - " if result == 0:\n", - " logger.debug(f\"Deleting memory {memory_id} failed: memory not found\")\n", - " else:\n", - " logger.info(f\"Deleted memory {memory_id}\")\n", - "\n", - "\n", - "def summarize_memories(combined_content: str, memory_type: MemoryType) -> str:\n", - " \"\"\"Use the LLM to create a concise summary of similar memories\"\"\"\n", - " try:\n", - " system_prompt = f\"\"\"\n", - " You are a memory consolidation assistant. Your task is to create a single, \n", - " concise memory from these similar memory fragments. The new memory should\n", - " be a {memory_type.value} memory.\n", - " \n", - " Combine the information without repetition while preserving all important details.\n", - " \"\"\"\n", - "\n", - " messages = [\n", - " SystemMessage(content=system_prompt),\n", - " HumanMessage(\n", - " content=f\"Consolidate these similar memories into one:\\n\\n{combined_content}\"\n", - " ),\n", - " ]\n", - "\n", - " response = summarizer.invoke(messages)\n", - " return str(response.content)\n", - " except Exception as e:\n", - " logger.error(f\"Error summarizing memories: {e}\")\n", - " # Fall back to just using the combined content\n", - " return combined_content\n", - "\n", - "\n", - "def memory_consolidation_worker(user_id: str):\n", - " \"\"\"\n", - " Worker that periodically consolidates memories for the active user.\n", - "\n", - " NOTE: In production, this would probably use a background task framework, such\n", - " as rq or Celery, and run on a schedule.\n", - " \"\"\"\n", - " while True:\n", - " try:\n", - " consolidate_memories(user_id)\n", - " # Run every 10 minutes\n", - " time.sleep(10 * 60)\n", - " except Exception as e:\n", - " logger.exception(f\"Error in memory consolidation worker: {e}\")\n", - " # If there's an error, wait an hour and try again\n", - " time.sleep(60 * 60)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## The Main Loop\n", - "\n", - "Now we can put everything together and run the main loop.\n", - "\n", - "Running this cell should ask for your OpenAI and Tavily keys, then a username\n", - "and thread ID. You'll enter a loop in which you can enter queries and see\n", - "responses from the agent printed below the following cell." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import threading\n", - "\n", - "\n", - "def main(thread_id: str = \"book_flight\", user_id: str = \"demo_user\"):\n", - " \"\"\"Main interaction loop for the travel agent\"\"\"\n", - " print(\"Welcome to the Travel Assistant! (Type 'exit' to quit)\")\n", - "\n", - " config = RunnableConfig(configurable={\"thread_id\": thread_id, \"user_id\": user_id})\n", - " state = RuntimeState(messages=[])\n", - "\n", - " # If we're using the manual memory strategy, we need to create a queue for\n", - " # memory processing and start a worker thread. After every 'round' of a\n", - " # conversation, the main loop will add the current state and config to the\n", - " # queue for memory processing.\n", - " if memory_strategy == MemoryStrategy.MANUAL:\n", - " # Create a queue for memory processing\n", - " memory_queue = Queue()\n", - "\n", - " # Start a worker thread that will process memory extraction tasks\n", - " memory_thread = threading.Thread(\n", - " target=memory_worker, args=(memory_queue, user_id), daemon=True\n", - " )\n", - " memory_thread.start()\n", - "\n", - " # We always run consolidation in the background, regardless of memory strategy.\n", - " consolidation_thread = threading.Thread(\n", - " target=memory_consolidation_worker, args=(user_id,), daemon=True\n", - " )\n", - " consolidation_thread.start()\n", - "\n", - " while True:\n", - " user_input = input(\"\\nYou (type 'quit' to quit): \")\n", - "\n", - " if not user_input:\n", - " continue\n", - "\n", - " if user_input.lower() in [\"exit\", \"quit\"]:\n", - " print(\"Thank you for using the Travel Assistant. Goodbye!\")\n", - " break\n", - "\n", - " state[\"messages\"].append(HumanMessage(content=user_input))\n", - "\n", - " try:\n", - " # Process user input through the graph\n", - " for result in graph.stream(state, config=config, stream_mode=\"values\"):\n", - " state = RuntimeState(**result)\n", - "\n", - " logger.debug(f\"# of messages after run: {len(state['messages'])}\")\n", - "\n", - " # Find the most recent AI message, so we can print the response\n", - " ai_messages = [m for m in state[\"messages\"] if isinstance(m, AIMessage)]\n", - " if ai_messages:\n", - " message = ai_messages[-1].content\n", - " else:\n", - " logger.error(\"No AI messages after run\")\n", - " message = \"I'm sorry, I couldn't process your request properly.\"\n", - " # Add the error message to the state\n", - " state[\"messages\"].append(AIMessage(content=message))\n", - "\n", - " print(f\"\\nAssistant: {message}\")\n", - "\n", - " # Add the current state to the memory processing queue\n", - " if memory_strategy == MemoryStrategy.MANUAL:\n", - " memory_queue.put((state.copy(), config))\n", - "\n", - " except Exception as e:\n", - " logger.exception(f\"Error processing request: {e}\")\n", - " error_message = \"I'm sorry, I encountered an error processing your request.\"\n", - " print(f\"\\nAssistant: {error_message}\")\n", - " # Add the error message to the state\n", - " state[\"messages\"].append(AIMessage(content=error_message))\n", - "\n", - "\n", - "try:\n", - " user_id = input(\"Enter a user ID: \") or \"demo_user\"\n", - " thread_id = input(\"Enter a thread ID: \") or \"demo_thread\"\n", - "except Exception:\n", - " # If we're running in CI, we don't have a terminal to input from, so just exit\n", - " exit()\n", - "else:\n", - " main(thread_id, user_id)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## That's a Wrap!\n", - "\n", - "Want to make your own agent? Try the [LangGraph Quickstart](https://langchain-ai.github.io/langgraph/tutorials/introduction/). Then add our [Redis checkpointer](https://github.com/redis-developer/langgraph-redis) to give your agent fast, persistent memory!" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "env", - "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.11.11" - } - }, - "nbformat": 4, - "nbformat_minor": 2 + "nbformat": 4, + "nbformat_minor": 0 } diff --git a/python-recipes/agents/resources/long-term-memory.png b/python-recipes/agents/resources/long-term-memory.png new file mode 100644 index 0000000000000000000000000000000000000000..855288a1402f36ed25c0479a066c3bb5a671ab78 GIT binary patch literal 190143 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 @6R$K1{@6*HM>~u|6o|D%OJ_0-BVAsp-=*8Hk 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
  • }ZgDip>OfQ)s*b2$QNtBkWm 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

    1}F=zdBNcU#A!AHKbG3_y`I@b&o15@B0kg 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 literal 0 HcmV?d00001 diff --git a/python-recipes/agents/resources/memory-agents.png b/python-recipes/agents/resources/memory-agents.png new file mode 100644 index 0000000000000000000000000000000000000000..975d1cb7bdaf1a19c9dc28192e79dafcd3770d43 GIT binary patch literal 302220 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

    q;o!|EVn3xor(JIIVU{(9 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%0AhOh?u0pM@6(>|g8E{s8JzEGt@ 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

    >T1qawFE0B1KBsp; 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