Skip to content

Conversation Memory

Overview

You can persist and load memory by using Conversation Memory Drivers. You can build drivers for your own data stores by extending BaseConversationMemoryDriver.

Conversation Memory Drivers

Griptape Cloud

The GriptapeCloudConversationMemoryDriver allows you to persist Conversation Memory in Griptape Cloud. It provides seamless integration with Griptape's cloud-based Threads and Messages resources.

import os

from griptape.drivers.memory.conversation.griptape_cloud import GriptapeCloudConversationMemoryDriver
from griptape.memory.structure import ConversationMemory
from griptape.structures import Agent

cloud_conversation_driver = GriptapeCloudConversationMemoryDriver(
    api_key=os.environ["GT_CLOUD_API_KEY"],
    alias="my_thread_alias",
)
agent = Agent(conversation_memory=ConversationMemory(conversation_memory_driver=cloud_conversation_driver))

agent.run("My name is Jeff.")
agent.run("What is my name?")
[02/27/25 20:26:45] INFO     PromptTask 60d62b3fa90f4c299b286b793b9c972c        
                             Input: My name is Jeff.                            
[02/27/25 20:26:47] INFO     PromptTask 60d62b3fa90f4c299b286b793b9c972c        
                             Output: Hello, Jeff! If there's anything you'd like
                             to discuss or any questions you have, feel free to 
                             share. I'm here to help!                           
[02/27/25 20:26:49] INFO     PromptTask 60d62b3fa90f4c299b286b793b9c972c        
                             Input: What is my name?                            
[02/27/25 20:26:50] INFO     PromptTask 60d62b3fa90f4c299b286b793b9c972c        
                             Output: Your name is Jeff. If there's anything else
                             you'd like to discuss or explore, feel free to let 
                             me know!                                           

Local

The LocalConversationMemoryDriver allows you to persist Conversation Memory in a local JSON file.

from griptape.drivers.memory.conversation.local import LocalConversationMemoryDriver
from griptape.memory.structure import ConversationMemory
from griptape.structures import Agent

local_driver = LocalConversationMemoryDriver(persist_file="memory.json")
agent = Agent(conversation_memory=ConversationMemory(conversation_memory_driver=local_driver))

agent.run("Surfing is my favorite sport.")
agent.run("What is my favorite sport?")
[02/27/25 20:24:54] INFO     PromptTask 77d41348dd384110b71f98a7efcbba54        
                             Input: Surfing is my favorite sport.               
[02/27/25 20:24:55] INFO     PromptTask 77d41348dd384110b71f98a7efcbba54        
                             Output: That's awesome! Surfing is a thrilling and 
                             challenging sport that offers a great connection   
                             with nature. Whether you're riding the waves for   
                             fun or competing, it can be an exhilarating        
                             experience. Do you have a favorite surfing spot or 
                             any memorable surfing experiences you'd like to    
                             share?                                             
[02/27/25 20:24:56] INFO     PromptTask 77d41348dd384110b71f98a7efcbba54        
                             Input: What is my favorite sport?                  
[02/27/25 20:24:57] INFO     PromptTask 77d41348dd384110b71f98a7efcbba54        
                             Output: Your favorite sport is surfing!            

Amazon DynamoDb

Info

This driver requires the drivers-memory-conversation-amazon-dynamodb extra.

The AmazonDynamoDbConversationMemoryDriver allows you to persist Conversation Memory in Amazon DynamoDb.

import os
import uuid

from griptape.drivers.memory.conversation.amazon_dynamodb import AmazonDynamoDbConversationMemoryDriver
from griptape.memory.structure import ConversationMemory
from griptape.structures import Agent

conversation_id = uuid.uuid4().hex
dynamodb_driver = AmazonDynamoDbConversationMemoryDriver(
    table_name=os.environ["DYNAMODB_TABLE_NAME"],
    partition_key="id",
    value_attribute_key="memory",
    partition_key_value=conversation_id,
)

agent = Agent(conversation_memory=ConversationMemory(conversation_memory_driver=dynamodb_driver))

agent.run("My name is Jeff.")
agent.run("What is my name?")
[02/27/25 20:23:05] INFO     PromptTask 34167b4190a94c23aa10895f75f400ec        
                             Input: My name is Jeff.                            
[02/27/25 20:23:06] INFO     PromptTask 34167b4190a94c23aa10895f75f400ec        
                             Output: Hello, Jeff! How can I assist you today?   
[02/27/25 20:23:07] INFO     PromptTask 34167b4190a94c23aa10895f75f400ec        
                             Input: What is my name?                            
[02/27/25 20:23:10] INFO     PromptTask 34167b4190a94c23aa10895f75f400ec        
                             Output: Your name is Jeff.                         

Optional parameters sort_key and sort_key_value can be supplied for tables with a composite primary key.

Redis

Info

This driver requires the drivers-memory-conversation-redis extra.

The RedisConversationMemoryDriver allows you to persist Conversation Memory in Redis.

import os
import uuid

from griptape.drivers.memory.conversation.redis import RedisConversationMemoryDriver
from griptape.memory.structure import ConversationMemory
from griptape.structures import Agent

conversation_id = uuid.uuid4().hex
redis_conversation_driver = RedisConversationMemoryDriver(
    host=os.environ["REDIS_HOST"],
    port=int(os.environ["REDIS_PORT"]),
    password=os.environ["REDIS_PASSWORD"],
    index=os.environ["REDIS_INDEX"],
    conversation_id=conversation_id,
)

agent = Agent(conversation_memory=ConversationMemory(conversation_memory_driver=redis_conversation_driver))

agent.run("My name is Jeff.")
agent.run("What is my name?")
[02/27/25 20:26:33] INFO     PromptTask af6050aa04784fc8b95083c25f7fd573        
                             Input: My name is Jeff.                            
[02/27/25 20:26:34] INFO     PromptTask af6050aa04784fc8b95083c25f7fd573        
                             Output: Hello, Jeff! How can I assist you today?   
[02/27/25 20:26:35] INFO     PromptTask af6050aa04784fc8b95083c25f7fd573        
                             Input: What is my name?                            
[02/27/25 20:26:36] INFO     PromptTask af6050aa04784fc8b95083c25f7fd573        
                             Output: Your name is Jeff.