Skip to content

agentsea/threadmem

Repository files navigation


threadmem

Chat thread memory for AI agents
Explore the docs »

View Demo · Report Bug · Request Feature


ThreadMem is a simple tool that helps manage chat conversations with language models.

Installation

pip install threadmem

Usage

Role Threads

Role based threads are useful for managing openai-style chat schemas.

from threadmem import RoleThread

# Create a thread storing it in a local sqlite db
thread = RoleThread(owner_id="[email protected]")

# Post messages
thread.post("user", "Hello, Thread!")
thread.post("assistant", "How can I help?")
thread.post("user", "Whats this image?", images=["data:image/jpeg;base64,..."])

# Output in openai chat schema format
print(thread.to_oai())

# Find a thread
threads = RoleThread.find(owner_id="[email protected]")

# Delete a thread
threads[0].delete()

Add images of any variety to the thread. We support base64, filepath, PIL, and URL:

from PIL import Image

img1 = Image.open("img1.png")

thread.post(
  role="user",
  msg="Whats this image?",
  images=["data:image/jpeg;base64,...", "./img1.png", img1, "https://shorturl.at/rVyAS"]
)

Integrations

Threadmem is integrated into:

  • MLLM - A prompt management, routing, and schema validation library for multimodal LLMs.
  • Taskara - A task management library for AI agents.
  • Skillpacks - A library to fine tune AI agents on tasks.
  • SurfKit - A platform for AI agents.

Community

Come join us on Discord.

Backends

Thread and prompt storage can be backed by:

  • Sqlite
  • Postgresql

Sqlite will be used by default. To use postgres simply configure the env vars:

DB_TYPE=postgres
DB_NAME=threads
DB_HOST=localhost
DB_USER=postgres
DB_PASS=abc123

Image storage by default will utilize the db, to configure bucket storage using GCS:

  • Create a bucket with fine grained permissions
  • Create a GCP service account JSON with permissions to write to the bucket
export THREAD_STORAGE_SA_JSON='{
  "type": "service_account",
  ...
}'
export THREAD_STORAGE_BUCKET=my-bucket

Develop

To test

make test

To publish

make publish