Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le fournisseur de mémoire Neo4j offre aux agents Agent Framework une mémoire persistante sauvegardée par un graphe de connaissances. Contrairement aux fournisseurs RAG qui récupèrent à partir de bases de connaissances statiques, le fournisseur de mémoire stocke et rappelle les interactions de l’agent, extrayant automatiquement des entités et en créant un graphe de connaissances au fil du temps.
Le fournisseur gère trois types de mémoire :
- Mémoire à court terme : historique des conversations et contexte récent
- Mémoire à long terme : entités, préférences et faits extraits des interactions
- Mémoire de raisonnement : Traces de raisonnement passées et modèles d’utilisation des outils
Pourquoi utiliser Neo4j pour la mémoire de l’agent ?
- Persistance du graphe de connaissances : les souvenirs sont stockés en tant qu’entités connectées, et non sous forme d’enregistrements plats, afin que l’agent puisse raisonner sur les relations entre les éléments qu’il mémorise.
- Extraction automatique d’entités : les conversations sont analysées en entités et relations structurées sans conception manuelle de schéma.
- Rappel intersession : Les préférences, les faits et les traces de raisonnement persistent dans les sessions et s’affichent automatiquement via des fournisseurs de contexte.
Note
Neo4j offre deux intégrations distinctes pour Agent Framework. Ce fournisseur (neo4j-agent-memory) est destiné à la mémoire persistante : stockage et rappel des interactions de l’agent, extraction d’entités et création d’un graphe de connaissances au fil du temps. Pour GraphRAG à partir d’un graphe de connaissances existant à l’aide d’un vecteur, d’un texte intégral ou d’une recherche hybride, consultez le fournisseur de contexte GraphRAG Neo4j.
Ce fournisseur n’est pas encore disponible pour C#. Consultez l’onglet Python pour obtenir des exemples d’utilisation.
Prerequisites
- Instance Neo4j (auto-hébergée ou Neo4j AuraDB)
- Un projet Azure AI Foundry avec un modèle de conversation déployé
- Une clé API OpenAI ou un déploiement Azure OpenAI (pour les incorporations et l’extraction d’entités)
- Ensemble de variables d’environnement :
NEO4J_URI, ,NEO4J_PASSWORDFOUNDRY_PROJECT_ENDPOINT,FOUNDRY_MODEL,OPENAI_API_KEY - Informations d’identification Azure CLI configurées (
az login) - Python 3.10 ou version ultérieure
Installation
pip install neo4j-agent-memory[microsoft-agent]
Utilisation
import os
from pydantic import SecretStr
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import AzureCliCredential
from neo4j_agent_memory import MemoryClient, MemorySettings
from neo4j_agent_memory.integrations.microsoft_agent import (
Neo4jMicrosoftMemory,
create_memory_tools,
)
# Pass Neo4j and embedding configuration directly via constructor arguments.
# MemorySettings also supports loading from environment variables or .env files
# using the NAM_ prefix (e.g. NAM_NEO4J__URI, NAM_EMBEDDING__MODEL).
settings = MemorySettings(
neo4j={
"uri": os.environ["NEO4J_URI"],
"username": os.environ.get("NEO4J_USERNAME", "neo4j"),
"password": SecretStr(os.environ["NEO4J_PASSWORD"]),
},
embedding={
"provider": "openai",
"model": "text-embedding-3-small",
},
)
memory_client = MemoryClient(settings)
async with memory_client:
memory = Neo4jMicrosoftMemory.from_memory_client(
memory_client=memory_client,
session_id="user-123",
)
tools = create_memory_tools(memory)
async with AzureCliCredential() as credential, Agent(
client=FoundryChatClient(
credential=credential,
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ["FOUNDRY_MODEL"],
),
instructions="You are a helpful assistant with persistent memory.",
tools=tools,
context_providers=[memory.context_provider],
) as agent:
session = agent.create_session()
response = await agent.run("Remember that I prefer window seats on flights.", session=session)
Fonctionnalités clés
- Bidirectionnel : récupère automatiquement le contexte pertinent avant l’appel et enregistre de nouveaux souvenirs après les réponses
- Extraction d’entité : génère un graphe de connaissances à partir de conversations à l’aide d’un pipeline d’extraction multi-étapes
- Apprentissage des préférences : inférence et stocke les préférences utilisateur entre les sessions
- Outils de mémoire : les agents peuvent rechercher explicitement de la mémoire, mémoriser les préférences et rechercher des connexions d’entité