Skip to main content

Simple LLM Memory

Project description

Memento: Simple LLM Memory

Memento is a conversation management API for llm applications. It interfaces with your SQL database of choice to handle conversational histories.

Memento uses SQLAlchemy and Alembic under the hood to interact with SQL databases, so any database that is supported by these libraries (PostgreSQL, MySQL, SQLite, CosmoDB, etc.) is also supported by Memento.

Installation

$ pip install memento-llm

Getting Started

With Memento, you no longer have to worry about setting up message storage logic in your application, allowing for a seamlessly stateless flow, here is how it can be integrated into your code:

Recorder API

Currently Memento only has the Recorder API, which serves as a simple way to use Memento in applications dependent on SQLAlchemy sessions. Because of this fact, it is a natural fit for FastAPI applications (which is my main use for Memento, personally).

The main differentiator of the Recorder API is that it requires that a SQLAlchemy Session or AsyncSession be provided. The same base Recorder class has methods to use both types of sessions.

from openai import OpenAI
from memento import Recorder, crud, models
from sqlalchemy import create_engine
from sqlalchemy.orm import Session

# Setup

client = OpenAI()
engine = create_engine("sqlite://") # In-memory sqlite database

models.Base.metadata.create_all(engine) # For demo purposes, create tables with the metadata API

with Session(engine) as session:
  conversation_id = crud.create_conversation(session, "Testbot") # Name of the assistant/agent/app

# Usage

def generate():
  # Start the recorder with previous conversation data (Empty the during the first call, one message during the second)
  recorder = Recorder.from_conversation(session, conversation_id)

  # Call the LLM API with data retrieved from the recorder
  response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=recorder.to_openai_format()
  )

  # Add the response to the recorder
  recorder.add_openai_response(response)

  # Commit new messages to your database
  recorder.commit_new_messages(session)

response_1 = generate("My name is Anibal")
print(response_1) # Output: Hello Anibal!

response_2 = generate("What´s my name?")
print(response_2) # Output: Your name is Anibal.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

memento_llm-0.2.3b0.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

memento_llm-0.2.3b0-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file memento_llm-0.2.3b0.tar.gz.

File metadata

  • Download URL: memento_llm-0.2.3b0.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.8.0-47-generic

File hashes

Hashes for memento_llm-0.2.3b0.tar.gz
Algorithm Hash digest
SHA256 2f76c69f63af53bd7716d7ecc3afb5c79f69f858f4ee7d3d07c89f8eb8664e93
MD5 ebccbfa95e08137c0bb4b76c0f5c82b3
BLAKE2b-256 5f41f80d87ac6d8f71a8c1e2fd26c8ab423f2d7247dceb13dff8e16f7b43ffd6

See more details on using hashes here.

File details

Details for the file memento_llm-0.2.3b0-py3-none-any.whl.

File metadata

  • Download URL: memento_llm-0.2.3b0-py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.8.0-47-generic

File hashes

Hashes for memento_llm-0.2.3b0-py3-none-any.whl
Algorithm Hash digest
SHA256 7d486c03f1d696e617c2bab473e211f0ee10d835f154f37484634bedd6f74c15
MD5 6fe823c402aa9b693171794f098bfc92
BLAKE2b-256 b3f09c42d5360f8e7aad79052a699d10f5ee22005271396a188c9f2b9a61fabb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page