Erste Schritte mit Agent Memory
Dieser Artikel führt Sie durch die Installation von Agent Memory und die Ausführung grundlegender Speichervorgänge, einschließlich Speichern und Abrufen von Benutzerkontext.
Voraussetzungen
Stellen Sie sicher, dass Sie:
- Zugriff auf Oracle AI Database 23ai oder höher (Datenbankversion 23.4 oder höher). Siehe Oracle AI Database lokal ausführen.
- Python 3.10 bis 3.14.
Oracle AI Database-Featureanforderungen
Für den DB-Backed-Speicher von Oracle Agent Memory ist Oracle AI Database 23ai oder höher erforderlich (Datenbankversion 23.4 oder höher). Setzen Sie für Oracle AI Vector Search den Initialisierungsparameter COMPATIBLE der Datenbank auf 23.4.0 oder höher.
Die ausgewählte Suchstrategie hat folgende zusätzliche Anforderungen:
SearchStrategy.VECTORerfordert Oracle AI Vector Search, einschließlich der DatentypenVECTORund Vektorindizes. Sie ist ab Oracle AI Database 23ai (23.4) verfügbar.SearchStrategy.KEYWORDverwendet dieselbe unterstützte Oracle AI Database 23ai-(23.4-)Baseline, erstellt jedoch keine lokalen Vektorspalten oder Vektorindizes.SearchStrategy.HYBRIDerfordert Oracle AI Database 23ai Release Update 23.6 oder höher. Es verwendet verwaltete Hybridvektorindizes undDBMS_HYBRID_VECTOR.SEARCH.
Während der Initialisierung des verwalteten Schemas validiert Oracle Agent Memory die Version der verbundenen Datenbank, bevor DDL ausgeführt wird, und meldet eine Upgradeaktion, wenn die ausgewählte Suchstrategie nicht verfügbar ist.
Setup der verwalteten Datenbank
Wenn ein Schemaeigentümer einen Speicherspeicher erstellt oder neu erstellt, bereitet das Python-Package "Oracle Agent Memory" die erforderlichen verwalteten Datenbankobjekte vor. Der Eigentümer benötigt die Systemberechtigungen Oracle CREATE TABLE und CREATE PROCEDURE.
Melden Sie sich als Schemaeigentümer für das Schemasetup an. Eine Anwendungsverbindung, die schema_owner verwendet, greift auf einen vorhandenen Speicher zu und muss SchemaPolicy.REQUIRE_EXISTING verwenden. Die verwalteten Datenbankobjekte des Eigentümers werden nicht erstellt oder aktualisiert.
SDK installieren
Alle Versionen und unterstützten Plattformen von oracleagentmemory finden Sie auf der Seite "Softwaredownload".
Um Agent Memory zu installieren, führen Sie folgenden Befehl aus:
pip install "oracleagentmemory==26.8.0"
Bei der Installation mit pip werden vordefinierte Binärräder auf unterstützten Plattformen abgerufen.
Logging und Diagnostik
Oracle AI Agent Memory gibt Diagnosemeldungen über das standardmäßige Python-Logging unter Loggernamen aus, die mit oracleagentmemory beginnen. Das SDK konfiguriert keine Handler oder Logebenen. Anwendungen können diese Logs an die vorhandene Konsole, Datei oder Beobachtbarkeitspipeline weiterleiten. Einige Logdatensätze verwenden die extra-Felder des Python-Loggings für sichere strukturierte Diagnosen, die von strukturierten Logging-Handlern erfasst werden können.
import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger("oracleagentmemory").setLevel(logging.INFO)
Um Fehler in kontrollierten Umgebungen zu beheben, aktivieren Sie DEBUG-Logs:
logging.getLogger("oracleagentmemory").setLevel(logging.DEBUG)
Behalten Sie Produktions-Deployments auf einer Nicht-DEBUG-Ebene bei. DEBUG-Logs sind für die Entwicklung und Unterstützung von Diagnosen vorgesehen. Logmeldungstext sollte nicht als stabile öffentliche API behandelt werden.
Gültigkeitsdauer und Abgelaufener Datensatz löschen
Von Oracle DB gesicherte Nachrichten und Speicher können automatisch durch eine Kombination aus Aufbewahrungsstandardwerten auf Schemaebene und Werten für ttl_days/ttl_anchor pro Datensatz bei Schreib- und Aktualisierungs-APIs ablaufen.
Wenn Oracle Agent Memory sein verwaltetes Schema erstellt oder aktualisiert, erstellt es außerdem einen täglichen DBMS_SCHEDULER-Löschjob, der abgelaufene Zeilen, ihre Abruf-Chunks und verwaiste Abruf-Chunks, deren unterstützte Quellzeile nicht mehr vorhanden ist, physisch entfernt. Wenn das Schemasetup diesen Job erstellen muss, dem Datenbankbenutzer jedoch CREATE JOB fehlt, wird das Setup mit einer Warnung abgeschlossen: Abgelaufene Zeilen bleiben aus Lese- und Suchvorgängen herausgefiltert, abgelaufene und verwaiste Chunks werden jedoch erst physisch gelöscht, wenn ein berechtigter Benutzer den Job erstellt. Unter SchemaPolicy.REQUIRE_EXISTING wird ein fehlender Löschjob toleriert und auf der Ebene DEBUG protokolliert.
Linked-Memory-Schemas erstellen auch einen Trigger, der verbleibende Speicher erneut validiert, nachdem ein Link gelöscht wurde. Dies gilt auch, wenn der Löschjob einen abgelaufenen Speicher löscht und Oracle seine Links kaskadiert. Der Schemaeigentümer benötigt CREATE TRIGGER während der Schemaerstellung oder dem Upgrade. Normale Laufzeitbenutzer benötigen diese Berechtigung nicht.
Das vollständige Aufbewahrungsmodell, das Setup von MemoryRetentionConfig, Verifizierungsabfragen für Löschjobs, die manuelle Erstellung von DBA-Jobs und Python-Beispiele mit TimeToLiveAnchor finden Sie unter Live-Zeit für Nachrichten und Erinnerungen verwenden.
Linked-Memory-Schemaberechtigungen
Das Linked-Memory-Schema enthält ein Oracle SQL-Eigenschaftsdiagramm und einen Datenbanktrigger, der den Lebenszyklusstatus beim Löschen von Links korrekt hält.
Wenn Sie memory_store_id festlegen, wird der Name des verwalteten Diagramms auf dieselbe Weise wie die Tabellen vorangestellt. Beispiel: memory_store_id="SALES" erstellt SALES_MEMORY_GRAPH.
Die Werte APP_SCHEMA und APP_USER sind Platzhalter. Ersetzen Sie sie durch Ihre Datenbankbenutzernamen. In den Beispielen wird Großbuchstaben verwendet, da Oracle-IDs ohne Anführungszeichen in Großbuchstaben gespeichert werden.
- Erteilen Sie während des Schemasetups dem Schemaeigentümer
CREATE PROPERTY GRAPHundCREATE TRIGGER. Diese sind mitSchemaPolicy.CREATE_IF_NECESSARYoderSchemaPolicy.RECREATEerforderlich, wenn der Trigger für das verwaltete Diagramm oder das Löschen von Links erstellt werden muss.GRANT CREATE PROPERTY GRAPH TO APP_SCHEMA; GRANT CREATE TRIGGER TO APP_SCHEMA; -- Run OracleAgentMemory schema setup as APP_SCHEMA. REVOKE CREATE PROPERTY GRAPH FROM APP_SCHEMA; REVOKE CREATE TRIGGER FROM APP_SCHEMA;Erteilen Sie sie vor einem späteren SDK-Upgrade erneut, wenn dieses Upgrade den Trigger für das verwaltete Diagramm oder das Löschen von Links erstellen oder neu erstellen muss.
- Entscheiden Sie während der normalen Anwendungslaufzeit, welcher Benutzer sich bei Oracle anmeldet:
- Wenn der Laufzeitbenutzer
APP_SCHEMAist, ist keine zusätzliche Diagrammberechtigung erforderlich. Der Grafikeigentümer kann auf sein eigenes Diagramm zugreifen. - Wenn der Laufzeitbenutzer nicht identisch ist, führen Sie nach dem Schemasetup den folgenden Befehl als
APP_SCHEMAaus. Der Standarddiagrammname istMEMORY_GRAPH. Verwenden Sie den Präfixnamen, wennmemory_store_idfestgelegt ist.GRANT SELECT ON PROPERTY GRAPH APP_SCHEMA.MEMORY_GRAPH TO APP_USER;Der Laufzeitbenutzer benötigt auch den normalen Datenbankzugriff, der für den Rest des Oracle Agent-Speicher-Deployments erforderlich ist.
- Wenn der Laufzeitbenutzer
SchemaPolicy.REQUIRE_EXISTING überspringt den ersten Schritt, da erwartet wird, dass Diagramm und Trigger bereits vorhanden sind. Ein separater Laufzeitbenutzer benötigt weiterhin Zugriff auf das verwaltete Eigenschaftsdiagramm.
Speicherinstanz initialisieren
Erstellen Sie eine OracleAgentMemory-Instanz, indem Sie die Einbettung, das LLM und die Datenbankverbindung konfigurieren.
import oracledb
from oracleagentmemory.core import SchemaPolicy
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,
schema_policy=SchemaPolicy.CREATE_IF_NECESSARY,
memory_store_id="T_GET_STARTED",
)
Hinweis: In verwalteten Oracle AI Database-Schemas wird standardmäßig kein Aufbewahrungszeitraum für Nachrichten und Speicher festgelegt. Konfigurieren Sie die Time-to-Live-Einstellungen für MemoryRetentionConfig oder pro Datensatz, um einen anderen Aufbewahrungszeitraum zu verwenden. Weitere Informationen finden Sie unter Live-Zeit für Nachrichten und Erinnerungen verwenden.
Speichereinträge speichern
Erstellen Sie zunächst einen Thread, fügen Sie Nachrichten hinzu, und speichern Sie einen Speichereintrag für den Benutzer.
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.")
Speichereinträge abrufen
Speicher mit einer Abfrage mit Benutzergeltungsbereich suchen
results = memory.search(query="orange juice", scope=SearchScope(user_id="user_123"))
for result in results:
print(f"- [{result.record.record_type}] {result.content}")
Ausgabe:
- [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.
Hinweis: Die angezeigte Ausgabe ist illustrativ. Zukünftige Versionen können zusätzliche Ergebnistypen, Felder oder Anforderungen zurückgeben.
Modellkompatibilität
Die folgenden Large Language Models (LLMs) und Einbettungsmodelle sind mit oracleagentmemory kompatibel.
LLMs
Die folgenden Large Language Models (LLMs) wurden als kompatibel bestätigt.
Von OCI gehostete Modelle
oci/google.gemini-2.5-flashoci/google.gemini-2.5-flash-liteoci/google.gemini-2.5-prooci/xai.grok-4.20-0309-non-reasoningoci/xai.grok-4.20-0309-reasoningoci/xai.grok-4.20-non-reasoningoci/xai.grok-4.20-reasoningoci/xai.grok-4.3oci/openai.gpt-5(und5.1bis5.6Versionen)
OpenAI
openai/gpt-4.1(und-mini)openai/gpt-4oopenai/gpt-5(und-mini)openai/gpt-5.1openai/gpt-5.2openai/gpt-5.4(und-mini)openai/gpt-5.5openai/gpt-5.6-luna(undterra,sol)openai/gpt-6-astra
Selbst gehostete LLMs
openai/google/gemma-4-26B-A4B-itopenai/openai/gpt-oss-120b
Anthrop
anthropic/claude-opus-4-7anthropic/claude-opus-4-6anthropic/claude-sonnet-4-6anthropic/claude-haiku-4-5
Zwilling
gemini/gemini-3.1-flash-lite-previewgemini/gemini-3-flash-previewgemini/gemini-3.1-pro-preview
Einbettungen
Die folgenden Einbettungsmodelle wurden als kompatibel bestätigt.
Von OCI gehostete Modelle
oci/cohere.embed-v4.0
OpenAI
openai/text-embedding-3-largeopenai/text-embedding-3-small
Selbst gehostete LLMs
hosted_vllm/nomic-embed-text
Zwilling
gemini/gemini-embedding-001gemini/gemini-embedding-2-preview