Skip to main content

🧠 GPT Memory

Memory Driven Reasoning for Smarter AI Agents

GPT Memory is a library powered by Tovana that introduces a new approach to improving LLM reasoning through actionable insights (aka beliefs) derived from continuous interactions and long term memory.

PyPI version License: Apache 2

Why GPT Memory?

Current LLMs face significant limitations in their ability to learn and adapt from user-specific interactions over time. While LLMs excel at processing vast amounts of data, they struggle with ongoing personalization and context-aware learning. This gap restricts their ability to provide truly adaptive and evolving AI experiences.

Our Memory manager aims to address these challenges by providing a comprehensive memory and belief management framework for AI agents. Its core concept revolves around converting experiences (events) into memories, which in turn shape beliefs. These beliefs then influence the agent's reasoning, responses, and actions.

By simulating human-like memory processes, GPT Memory enables more personalized, adaptive, and context-aware AI interactions. This framework bridges the gap between static knowledge bases and dynamic, experience-based learning, allowing AI agents to evolve their understanding and behavior over time.

🌟 Features

Feature Status Description
🧠 Human-like Memory ✅ Available Transform interactions into lasting memories and actionable beliefs
🔍 Smart Information Extraction ✅ Available Automatically capture and store relevant user details from conversations
💡 Dynamic Belief Generation ✅ Available Create personalized, context-aware insights to guide AI responses
🤖 LLM-Friendly Context ✅ Available Seamlessly integrate memory and beliefs into your AI's decision-making process
🔌 Easy Integration ✅ Available Plug into your AI applications with a straightforward API
🎭 Conflict Resolution ✅ Available Intelligently handle contradictions in user information
🌐 Flexible Architecture ✅ Available Designed to work with various LLM providers and models
📊 Memory Management ✅ Available Process events, store short-term and long-term memories, and manage beliefs
🔗 Advanced Association Creation ✅ Available Form connections between memories and beliefs for more nuanced understanding
🧵 Async Functionality ✅ Available Support for asynchronous operations to enhance performance in concurrent environments
⛁ Persistent Database Support 🔜 Coming Soon Integration with persistent databases for long-term storage and retrieval of memory data
🎛️ Custom Belief Generation 🔜 Coming Soon User-generated beliefs offering end-to-end flexibility in shaping the belief system reasoning

🏗️ Architecture

Screenshot 2024-08-21 at 9 04 07

🚀 Quick Start

  1. Install Tovana:
pip install tovana
  1. Use it in your project:
from tovana import MemoryManager

business_description = "a commerce shopping assistant"
message = "I just moved from New York to Paris for work."
user_id = "user123"

# Initialize with your preferred LLM provider and API key (Refer to the documentation for specific models)
memory_manager = MemoryManager(api_key="your-llm-provider-api-key-here", provider="openai",
                               business_description=business_description, include_beliefs=True)

# Update user memory
memory_manager.update_user_memory(user_id=user_id, message=message)

# Get user memory
user_memory = memory_manager.get_user_memory(user_id=user_id)
print(user_memory)  # Output: {'location': 'Paris', 'previous_location': 'New York'}

# Get memory context for LLM
context = memory_manager.get_memory_context(user_id=user_id)
print(context)  # Output: 'User Memory:\n location: Paris,\n previous_location: New York'

# Get beliefs
beliefs = memory_manager.get_beliefs(user_id=user_id)
print(beliefs)  # Output: {"beliefs": "- Provide recommendations for products shipping to Paris"}

🧠 Belief Generation

GPT memory introduces a new approach to LLM reasoning: actionable beliefs generated from user memory. These beliefs provide personalized insights that can significantly enhance your agent's planning, reasoning and responses.

Examples

Input:

  • business_description: "a commerce site"
  • memory: {'pets': ['dog named charlie', 'horse named luna']}

Output:

{"beliefs": ",- suggest pet products for dogs and horses"}

Input:

  • business_description: "an AI therapist"
  • memory: {'pets': ['dog named charlie', 'horse named luna', 'sleep_time: 10pm']}

Output:

{"beliefs": ",- Suggest mediation at 9:30pm\n- Suggest spending time with Charlie and Luna for emotional well-being"}

🛠️ API Reference

MemoryManager

  • get_memory(user_id: str) -> JSON: Fetch user memory
  • delete_memory(user_id: str) -> bool: Delete user memory
  • update_memory(user_id: str, message: str) -> JSON: Update memory with relevant information if found in message
  • batch_update_memory(user_id: str, messages: List[Dict[str, str]]) -> JSON: Update memory with relevant information if found in message
  • get_memory_context(user_id: str, message: Optiona[str]) -> str: Get formatted memory context, general or message specific
  • get_beliefs(user_id: str) -> str: Get actionable beliefs context

Batch Update Memory

Traditional per-message memory updates can be costly and inefficient, especially in longer conversations. They often miss crucial context, leading to suboptimal information retrieval.

Our batch memory update method addresses these challenges by processing entire conversations at once. This approach not only improves performance and reduces costs but also enhances the quality of extracted information. This results in a more coherent and accurate user memory, ultimately leading to better AI reasoning.

Example

user_id = "user123"
messages = [
    {"role": "user", "content": "Hi, I'm planning a trip to Japan."},
    {"role": "assistant", "content": "That's exciting! When are you planning to go?"},
    {"role": "user", "content": "I'm thinking about next spring. I love sushi and technology."}
]

await memory_manager.batch_update_memory(user_id, messages)

Sync vs Async Updates

This library provides both synchronous and asynchronous update methods to cater to different use cases and application architectures:

  1. Asynchronous Updates (AsyncMemoryManager): Ideal for applications built on asynchronous frameworks like FastAPI or asynchronous Python scripts. This allows for non-blocking memory updates, improving overall application performance, especially when dealing with I/O-bound operations or high-concurrency scenarios.
  2. Synchronous Updates (MemoryManager): Suitable for traditional synchronous applications or when you need to ensure that memory updates are completed before proceeding with other operations. This can be useful in scripts or applications where the order of operations is critical.

By providing both options, our library offers flexibility, allowing to choose the most appropriate method based on your specific application requirements and architecture.

🤝 Contributing

We welcome contributions! Found a bug or have a feature idea? Open an issue or submit a pull request. Let's make Tovana even better together! 💪

📄 License

Tovana is Apache-2.0 licensed. See the LICENSE file for details.


Ready to empower your AI agents with memory-driven reasoning? Get started with GPT Memory! 🚀 If you find it useful, don't forget to star the repo! ⭐

Metadata

Release files for tovana 0.0.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tovana 0.0.9
File Size Uploaded
tovana-0.0.9.tar.gz 18.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tovana 0.0.9
File Interpreter ABI Platform
tovana-0.0.9-py3-none-any.whl Python 3 none any Details

Total release size: 32.1 kB

Release files / tovana-0.0.9.tar.gz

Download URL tovana-0.0.9.tar.gz
Size 18.1 kB
Tags Source
SHA-256 checksum
How to use checksums
fbe24c3884b807299fa58fedc5a7bcc58bbfc89521589051b4e0ff9fe46c3638
BLAKE2b-256 checksum
How to use checksums
c5753890a2a3f5861332ca544d1cb8ebf970833896226261a9b6908c73f8bbd1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.5

Release files / tovana-0.0.9-py3-none-any.whl

Download URL tovana-0.0.9-py3-none-any.whl
Size 14.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
98e5c6f4ded5472a900b25f8eaa0f98f49b40b07410c1ff187672b13942708b3
BLAKE2b-256 checksum
How to use checksums
a0fd8e7e036d532c264b4cbb23d543704f0147a7075ef32ff2c51ac03dc0e0d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.5

Release history Release notifications | RSS feed

This release

0.0.9 This release

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page