autogen_ext.memory.mem0#

class Mem0Memory(user_id: str | None = None, limit: int = 10, is_cloud: bool = True, api_key: str | None = None, config: Dict[str, Any] | None = None)[Quelle]#

Bases: Memory, Component[Mem0MemoryConfig], ComponentBase[Mem0MemoryConfig]

Mem0-Speicherimplementierung für AutoGen.

Diese Komponente integriert sich in das Mem0.ai-Speichersystem und bietet eine Implementierung der Memory-Schnittstelle von AutoGen. Sie unterstützt sowohl Cloud- als auch lokale Backends über das mem0ai Python-Paket.

Um diese Komponente zu verwenden, müssen Sie das mem0 (nur Cloud) oder mem0-local (lokal) Extra für das Paket autogen-ext installiert haben.

pip install -U "autogen-ext[mem0]" # For cloud-based Mem0
pip install -U "autogen-ext[mem0-local]" # For local Mem0

Die Speicherkomponente kann Informationen speichern und abrufen, an die sich Agenten über Konversationen hinweg erinnern müssen. Sie bietet auch Kontextaktualisierungen für Sprachmodelle mit relevanten Erinnerungen.

Examples

import asyncio
from autogen_ext.memory.mem0 import Mem0Memory
from autogen_core.memory import MemoryContent


async def main() -> None:
    # Create a local Mem0Memory (no API key required)
    memory = Mem0Memory(
        is_cloud=False,
        config={"path": ":memory:"},  # Use in-memory storage for testing
    )
    print("Memory initialized successfully!")

    # Add something to memory
    test_content = "User likes the color blue."
    await memory.add(MemoryContent(content=test_content, mime_type="text/plain"))
    print(f"Added content: {test_content}")

    # Retrieve memories with a search query
    results = await memory.query("What color does the user like?")
    print(f"Query results: {len(results.results)} found")

    for i, result in enumerate(results.results):
        print(f"Result {i+1}: {result}")


asyncio.run(main())

Ausgabe

Memory initialized successfully!
Added content: User likes the color blue.
Query results: 1 found
Result 1: content='User likes the color blue' mime_type='text/plain' metadata={'score': 0.6977155806281953, 'created_at': datetime.datetime(2025, 7, 6, 17, 25, 18, 754725, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=61200)))}

Verwendung mit einem AssistantAgent

import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_core.memory import MemoryContent
from autogen_ext.memory.mem0 import Mem0Memory
from autogen_ext.models.openai import OpenAIChatCompletionClient


async def main() -> None:
    # Create a model client
    model_client = OpenAIChatCompletionClient(model="gpt-4.1")

    # Create a Mem0 memory instance
    memory = Mem0Memory(
        user_id="user123",
        is_cloud=False,
        config={"path": ":memory:"},  # Use in-memory storage for testing
    )

    # Add something to memory
    test_content = "User likes the color blue."
    await memory.add(MemoryContent(content=test_content, mime_type="text/plain"))

    # Create an assistant agent with Mem0 memory
    agent = AssistantAgent(
        name="assistant",
        model_client=model_client,
        memory=[memory],
        system_message="You are a helpful assistant that remembers user preferences.",
    )

    # Run a sample task
    result = await agent.run(task="What color does the user like?")
    print(result.messages[-1].content)  # type: ignore


asyncio.run(main())

Ausgabe

User likes the color blue.
Parameter:
  • user_id – Optionale Benutzer-ID für Speicheroperationen. Wenn nicht angegeben, wird eine UUID generiert.

  • limit – Maximale Anzahl von Ergebnissen, die bei Speicherabfragen zurückgegeben werden.

  • is_cloud – Ob der Cloud-Mem0-Client (True) oder der lokale Client (False) verwendet werden soll.

  • api_key – API-Schlüssel für den Cloud-Mem0-Client. Wenn nicht angegeben, wird er aus der Umgebungsvariable MEM0_API_KEY gelesen.

  • config – Konfigurationswörterbuch für den lokalen Mem0-Client. Erforderlich, wenn is_cloud=False.

component_type: ClassVar[ComponentType] = 'memory'#

Der logische Typ der Komponente.

component_provider_override: ClassVar[str | None] = 'autogen_ext.memory.mem0.Mem0Memory'#

Überschreibe den Anbieter-String für die Komponente. Dies sollte verwendet werden, um zu verhindern, dass interne Modulnamen Teil des Modulnamens werden.

component_config_schema#

alias von Mem0MemoryConfig

property user_id: str#

Ruft die Benutzer-ID für Speicheroperationen ab.

property limit: int#

Ruft die maximale Anzahl von Ergebnissen ab, die bei Speicherabfragen zurückgegeben werden.

property is_cloud: bool#

Prüft, ob der Mem0-Client cloudbasiert ist.

property config: Dict[str, Any] | None#

Ruft die Konfiguration für den Mem0-Client ab.

async add(content: MemoryContent, cancellation_token: CancellationToken | None = None) None[Quelle]#

Inhalt zum Speicher hinzufügen.

Parameter:
  • content – Der hinzuzufügende Speicherinhalt.

  • cancellation_token – Optionales Token zum Abbrechen des Vorgangs.

Löst aus:

Exception – Wenn beim Hinzufügen von Inhalten zum Mem0-Speicher ein Fehler auftritt.

async query(query: str | MemoryContent = '', cancellation_token: CancellationToken | None = None, **kwargs: Any) MemoryQueryResult[Quelle]#

Speicher nach relevantem Inhalt abfragen.

Parameter:
  • query – Die Abfrage, nach der gesucht werden soll, entweder als Zeichenkette oder als MemoryContent.

  • cancellation_token – Optionales Token zum Abbrechen des Vorgangs.

  • **kwargs – Zusätzliche Abfrageparameter, die an mem0 übergeben werden sollen.

Gibt zurück:

MemoryQueryResult, das Suchergebnisse enthält.

async update_context(model_context: ChatCompletionContext) UpdateContextResult[Quelle]#

Aktualisiert den Modellkontext mit relevanten Erinnerungen.

Diese Methode ruft den Konversationsverlauf aus dem Modellkontext ab, verwendet die letzte Nachricht als Abfrage, um relevante Erinnerungen zu finden, und fügt diese Erinnerungen dann als Systemnachricht zum Kontext hinzu.

Parameter:

model_context – Der zu aktualisierende Modellkontext.

Gibt zurück:

UpdateContextResult, das dem Kontext hinzugefügte Erinnerungen enthält.

async clear() None[Quelle]#

Löscht allen Inhalt aus dem Speicher für den aktuellen Benutzer.

Löst aus:

Exception – Wenn beim Löschen des Mem0-Speichers ein Fehler auftritt.

async close() None[Quelle]#

Ressourcen bei Bedarf bereinigen.

Dies ist eine No-Op für Mem0-Clients, da sie keine explizite Bereinigung erfordern.

pydantic model Mem0MemoryConfig[Quelle]#

Bases: BaseModel

Konfiguration für die Mem0Memory-Komponente.

JSON-Schema anzeigen
{
   "title": "Mem0MemoryConfig",
   "description": "Configuration for Mem0Memory component.",
   "type": "object",
   "properties": {
      "user_id": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "User ID for memory operations. If not provided, a UUID will be generated.",
         "title": "User Id"
      },
      "limit": {
         "default": 10,
         "description": "Maximum number of results to return in memory queries.",
         "title": "Limit",
         "type": "integer"
      },
      "is_cloud": {
         "default": true,
         "description": "Whether to use cloud Mem0 client (True) or local client (False).",
         "title": "Is Cloud",
         "type": "boolean"
      },
      "api_key": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "API key for cloud Mem0 client. Required if is_cloud=True.",
         "title": "Api Key"
      },
      "config": {
         "anyOf": [
            {
               "type": "object"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Configuration dictionary for local Mem0 client. Required if is_cloud=False.",
         "title": "Config"
      }
   }
}

Felder:
  • api_key (str | None)

  • config (Dict[str, Any] | None)

  • is_cloud (bool)

  • limit (int)

  • user_id (str | None)

field user_id: str | None = None#

Benutzer-ID für Speicheroperationen. Wenn nicht angegeben, wird eine UUID generiert.

field limit: int = 10#

Maximale Anzahl von Ergebnissen, die bei Speicherabfragen zurückgegeben werden.

field is_cloud: bool = True#

Ob der Cloud-Mem0-Client (True) oder der lokale Client (False) verwendet werden soll.

field api_key: str | None = None#

API-Schlüssel für den Cloud-Mem0-Client. Erforderlich, wenn is_cloud=True.

field config: Dict[str, Any] | None = None#

Konfigurationswörterbuch für den lokalen Mem0-Client. Erforderlich, wenn is_cloud=False.