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.