Almacenar y buscar memoria

En este artículo, creará un componente Agent Memory, almacenará mensajes de thread y memorias duraderas y, a continuación, los buscará de nuevo.

Consejo: para la configuración de paquetes, consulte Introducción a la memoria del agente. Si necesita una instancia local de Oracle AI Database para este ejemplo, consulte Run Oracle AI Database Locally.

Mensajes y memorias de tienda

Cree el componente Memoria de Agente con una conexión o pool de Oracle DB, agregue un thread corto y mantenga una memoria de usuario duradera junto con los mensajes.

Nota: Por defecto, OracleAgentMemory espera un LLM para que OracleThread pueda extraer periódicamente memorias duraderas de los mensajes de thread recientes agregados mediante add_messages(). Si no desea la extracción automática de memoria, defina memory_extraction_config=MemoryExtractionConfig(extract_memories=False) al crear el cliente o al llamar a 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.")
Referencia de API: OracleAgentMemory OracleThread

Los mensajes largos y las memorias se fragmentan automáticamente para la indexación de recuperación cuando es necesario. La fragmentación no cambia el mensaje almacenado ni el texto de la memoria. La búsqueda utiliza los fragmentos internamente y, a continuación, devuelve los registros lógicos originales.

Nota: Sustituya "YOUR DB USER", "YOUR DB PASSWORD" y "YOUR DB CONNECT STRING" por las credenciales y la cadena de conexión para Oracle AI Database. Si necesita una base de datos local para este ejemplo, siga Ejecutar Oracle AI Database localmente.

Buscar la memoria del agente

Busque los mensajes y las memorias almacenados en el ámbito de ese usuario.

results = memory.search(query="orange juice", scope=SearchScope(user_id="user_123"))
for result in results:
    print(f"- [{result.record.record_type}] {result.content}")

Salida:

- [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.

Nota: La salida mostrada anteriormente es ilustrativa. Las versiones futuras pueden devolver tipos de resultados, campos o patrones de indicación adicionales.

Referencia de API: SearchScope Resultado de búsqueda de Oracle

Conclusión

En este artículo hemos aprendido a crear un cliente de memoria de agente para un solo usuario, almacenar mensajes de thread junto con memorias duraderas y buscar esos registros con recuperación de ámbito de usuario.

Consejo: después de haber aprendido el flujo de trabajo principal de memoria de un solo usuario, puede que también le interese Usar API de corto plazo de memoria de agente con LangGraph.

Código Completo

#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.