Stocker et rechercher de la mémoire
Dans cet article, vous allez créer un composant de mémoire d'agent, stocker à la fois les messages de thread et les mémoires durables, puis les rechercher.
A savoir : Pour la configuration des packages, reportez-vous à Introduction à la mémoire de l'agent. Si vous avez besoin d'une instance Oracle AI Database locale pour cet exemple, reportez-vous à Exécution locale d'Oracle AI Database.
Stocker les messages et les mémoires
Créez le composant Mémoire d'agent avec un pool ou une connexion Oracle DB, ajoutez un thread court et conservez une mémoire utilisateur durable en même temps que les messages.
Remarque : par défaut, OracleAgentMemory attend un LLM afin qu'OracleThread puisse extraire régulièrement des mémoires durables à partir des messages de thread récents ajoutés via add_messages(). Si vous ne voulez pas d'extraction automatique de mémoire, définissez memory_extraction_config=MemoryExtractionConfig(extract_memories=False) lors de la construction du client ou lors de l'appel de create_thread().
import oracledb
from oracleagentmemory.core.oracleagentmemory import OracleAgentMemory
from oracleagentmemory.apis.searchscope import SearchScope
from oracleagentmemory.core.embedders.embedder import Embedder
from oracleagentmemory.core.llms.llm import Llm
embedder = Embedder(model="YOUR_EMBEDDING_MODEL")
llm = Llm(model="YOUR_LLM")
db_pool = oracledb.SessionPool(
user="YOUR DB USER",
password="YOUR DB PASSWORD",
dsn="YOUR DB CONNECT STRING",
)
memory = OracleAgentMemory(connection=db_pool, embedder=embedder, llm=llm)
messages = [
{
"role": "user",
"content": (
"Orange juice has become my favorite breakfast drink lately, "
"what can I pair it with?"
),
},
{
"role": "assistant",
"content": (
"Nice! Orange juice goes great with something savory. "
"Try eggs and toast, avocado toast, or a breakfast sandwich."
),
},
]
thread = memory.create_thread(user_id="user_123")
#add_messages will add messages to the DB and extract memories automatically
thread.add_messages(messages)
#add_memory adds memory to the DB
thread.add_memory("The user likes orange juice with breakfast.")
| Référence d'API : OracleAgentMemory | OracleThread |
Les messages et les mémoires longs sont découpés automatiquement pour l'indexation de récupération si nécessaire. Le découpage ne modifie pas le message stocké ou le texte de mémoire. La recherche utilise les blocs en interne, puis renvoie les enregistrements logiques d'origine.
Remarque : remplacez "YOUR DB USER", "YOUR DB PASSWORD" et "YOUR DB CONNECT STRING" par les informations d'identification et la chaîne de connexion pour votre instance Oracle AI Database. Si vous avez besoin d'une base de données locale pour cet exemple, suivez Exécuter Oracle AI Database localement.
Rechercher la mémoire de l'agent
Recherchez les mémoires et messages stockés, ciblés sur cet utilisateur.
results = memory.search(query="orange juice", scope=SearchScope(user_id="user_123"))
for result in results:
print(f"- [{result.record.record_type}] {result.content}")
Sortie :
- [memory] The user likes orange juice with breakfast.
- [message] Orange juice has become my favorite breakfast drink lately, what can I pair it with?
- [message] Nice! Orange juice goes great with something savory.
Try eggs and toast, avocado toast, or a breakfast sandwich.
Remarque : La sortie affichée précédemment est illustrative. Les versions futures peuvent renvoyer des types de résultats, des champs ou un modèle de tri supplémentaires.
| Référence d'API : SearchScope | OracleSearchResult |
Conclusion
Dans cet article, nous avons appris à créer un client de mémoire d'agent pour un seul utilisateur, à stocker les messages de thread à côté de mémoires durables et à rechercher ces enregistrements à l'aide d'une extraction de portée utilisateur.
A savoir : Après avoir appris le workflow de base de mémoire à utilisateur unique, vous pouvez également être intéressé par l'utilisation d'API à court terme de mémoire d'agent avec LangGraph.
Code complet
#Copyright © 2026 Oracle and/or its affiliates.
#This software is under the Apache License 2.0
#(LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0) or Universal Permissive License
#(UPL) 1.0 (LICENSE-UPL or https://oss.oracle.com/licenses/upl), at your option.
#Agent Memory Code Example - Quickstart
#---------------------------------------
##Add memories
import oracledb
from oracleagentmemory.core.oracleagentmemory import OracleAgentMemory
from oracleagentmemory.apis.searchscope import SearchScope
from oracleagentmemory.core.embedders.embedder import Embedder
from oracleagentmemory.core.llms.llm import Llm
embedder = Embedder(model="YOUR_EMBEDDING_MODEL")
llm = Llm(model="YOUR_LLM")
db_pool = oracledb.SessionPool(
user="YOUR DB USER",
password="YOUR DB PASSWORD",
dsn="YOUR DB CONNECT STRING",
)
memory = OracleAgentMemory(connection=db_pool, embedder=embedder, llm=llm)
messages = [
{
"role": "user",
"content": (
"Orange juice has become my favorite breakfast drink lately, "
"what can I pair it with?"
),
},
{
"role": "assistant",
"content": (
"Nice! Orange juice goes great with something savory. "
"Try eggs and toast, avocado toast, or a breakfast sandwich."
),
},
]
thread = memory.create_thread(user_id="user_123")
thread.add_messages(messages)
thread.add_memory("The user likes orange juice with breakfast.")
##Search memories
results = memory.search(query="orange juice", scope=SearchScope(user_id="user_123"))
for result in results:
print(f"- [{result.record.record_type}] {result.content}")
#- [memory] The user likes orange juice with breakfast.
#- [message] Orange juice has become my favorite breakfast drink lately, what can I pair it with?
#- [message] Nice! Orange juice goes great with something savory. Try eggs and toast,
#avocado toast, or a breakfast sandwich.