Threads
Auf dieser Seite wird das konkrete Oracle-Thread-Handle zusammen mit dem Entwickler-Helper-Typ vorgestellt.
Oracle-Thread
Klasse oracleagentmemory.core.OracleThread
Basen: IThread
Thread wird von einem Oracle-Speicher unterstützt.
Diese Implementierung integriert und speichert sowohl Thread-Nachrichten als auch manuell hinzugefügte Speicher und unterstützt dann die Ähnlichkeitssuche über alle gespeicherten Datensätze.
Hinweise
- Nachrichten werden als einzelne Datensätze gespeichert (ein Datensatz pro Nachricht).
- Die Suche kann auf den aktuellen Thread beschränkt sein oder Ergebnisse aus einem beliebigen Thread zurückgeben (Client-gesteuert).
Erstellen Sie eine neue OracleThread-Instanz.
- Parameter:
- store
OracleMemoryStore: Shared Store-Backend, das zum Persistieren eingebetteter Datensätze verwendet wird. - thread_id
str: Thread-ID. Wenn keine Angabe gemacht wird, wird eine UUID generiert. - user_id
str: Mit dem Thread verknüpfte Benutzer-ID. Wird kein Wert angegeben, wird eine UUID generiert. - agent_id
str: Agent-ID, die mit dem Thread verknüpft ist. Wird kein Wert angegeben, wird eine UUID generiert. - Metadaten
dict[str, Any] | None– Optionale JSON-ähnliche Metadaten, die mit dem Thread verknüpft sind. - persist_messages_in_config
bool– Gibt an, ob_to_configaktuelle Raw-Nachrichten-Snapshots enthalten soll. Wird für Threads, die den DB-Speicher verwenden, automatisch aufFalsegesetzt, um zu vermeiden, dass Inhalt der Meldungstabelle über die Threadkonfiguration exportiert wird. - LLM
ILlm | None– Optionaler LLM-Adapter für Speicherextraktion und Aktualisierungen der Kontextübersicht. Wenn angegeben, extrahiertadd_messagesrelevante Speicher aus jeder hinzugefügten Nachricht und speichert sie als eingegebene Speicherdatensätze ("memory","guideline","fact"oder"preference"). - memory_extraction_config
MemoryExtractionConfig– Optionale Speicherextraktionskonfiguration auf Threadebene. Damit können Sie automatische Extraktionseinstellungen wie Extraktionsmodus, Zusammenfassungsverhalten, Extraktionsgrenzwerte und ob die automatische Extraktion überhaupt aktiviert ist steuern. Übergeben Sie entweder diese gruppierte Konfiguration oder die veralteten Inline-Extraktionsparameter, nicht beides. Wenn keine Angabe gemacht wird, verwendet Standalone-OracleThread()SDK-Standardwerte für die Extraktionsfelder und aktiviert Kontextübersichten. -
memory_extraction_window
int–Anzahl der letzten Nachrichten (einschließlich der neu hinzugefügten), die während der Extraktion als Kontext für das LLM bereitgestellt werden sollen. Setzen Sie diesen Wert auf
-1, um nur einmal proadd_messages-Aufruf mit dem vollständigen Batch neu hinzugefügter Nachrichten zu extrahieren. Standard ist-1.Veraltet
Veraltet seit Version 26.6.0: Dieser Parameter sollte in 26.6.0 nicht mehr verwendet werden und wird in 27.1 entfernt. Verwenden Sie stattdessen
memory_extraction_config. -
context_summary_update_frequency
int–Anzahl der Nachrichten, nach denen die Extraktionskontextübersicht aktualisiert werden soll. Setzen Sie diesen Wert auf
-1, um nur einmal proadd_messages-Aufruf mit dem vollständigen Batch neu hinzugefügter Nachrichten zusammenzufassen. Standard ist-1.Info: Veraltet seit Version 26.6.0: Dieser Parameter sollte in 26.6.0 nicht mehr verwendet werden und wird in 27.1 entfernt. Verwenden Sie stattdessen
memory_extraction_config. -
memory_extraction_frequency
int–Anzahl der Nachrichten, nach denen die Speicherextraktion ausgelöst wird. Setzen Sie diesen Wert auf
-1, um nur einmal proadd_messages-Aufruf mit dem vollständigen Batch neu hinzugefügter Nachrichten zu extrahieren.Info: Veraltet seit Version 26.6.0: Dieser Parameter sollte in 26.6.0 nicht mehr verwendet werden und wird in 27.1 entfernt. Verwenden Sie stattdessen
memory_extraction_config. -
memory_extraction_token_limit
int–Maximale Größe der LLM-Prompts, die für die Speicherextraktion und die Ausführung von Übersichtsaktualisierungen verwendet werden, in Token. Längere Eingabeaufforderungen werden abgeschnitten. Wenn negativ oder 0, ist das Abschneiden der Eingabeaufforderung deaktiviert.
Info: Veraltet seit Version 26.6.0: Dieser Parameter sollte in 26.6.0 nicht mehr verwendet werden und wird in 27.1 entfernt. Verwenden Sie stattdessen
memory_extraction_config. - context_card_token_limit
int: Maximales Eingabe-Tokenbudget für den LLM-Prompt, mit dem die in der Kontextkarte enthaltene Übersichts- und Themenliste erstellt wird. Standard ist100_000; Werte kleiner/gleich 0 deaktivieren Prompt-Abschneiden. - context_card_type_search_concurrency
int: Maximale Anzahl von Suchvorgängen nach speicherähnlichen Datensätzen, die beim Erstellen einer Kontextkarte mitmin_relevant_results_by_typegleichzeitig ausgeführt werden. Standard ist5. - max_message_token_length
int– Maximale Größe der Prompt-Time-Kopie jeder Nachricht, die während der LLM-gesicherten Speicherextraktion und Aktualisierungen der Kontextübersicht verwendet wird, in Token. Der gespeicherte Nachrichteninhalt bleibt unverändert. Wenn negativ oder 0, wird keine Verkürzung der Prompt-Zeit durchgeführt. Wenn ein LLM bereitgestellt wird, werden übergroße Prompt-Kopien zusammengefasst und nicht abgeschnitten. - message_shortening_input_token_limit
int– Maximale Größe des Nachrichtenauszugs in Token, der an das LLM gesendet wird, wenn übergroße Prompt-Kopien gekürzt werden. Standard ist30_000-Token. Wenn negativ oder 0, wird während der LLM-basierten Verkürzung keine ausgehende Grenze angewendet. -
enable_context_summary
bool–Gibt an, ob eine kompakte laufende Zusammenfassung des Threads beibehalten werden soll. Wenn diese Option aktiviert ist und eine
llmangegeben ist, wird die Übersicht gemäßcontext_summary_update_frequencyaktualisiert. Die aktuelle Zusammenfassung wird als Kontext beim Extrahieren von Speichern bereitgestellt. Der Standardwert istTruefür Standalone-OracleThread().Info: Veraltet seit Version 26.6.0: Dieser Parameter sollte in 26.6.0 nicht mehr verwendet werden und wird in 27.1 entfernt. Verwenden Sie stattdessen
memory_extraction_config. -
memory_extraction_custom_instructions
str | None–Optionale benutzerdefinierte Anweisungen, die an die Eingabeaufforderung zur automatischen Speicherextraktion für diesen Thread angehängt werden.
Info: Veraltet seit Version 26.6.0: Dieser Parameter sollte in 26.6.0 nicht mehr verwendet werden und wird in 27.1 entfernt. Verwenden Sie stattdessen
memory_extraction_config. -
memory_extraction_inherit_message_metadata
bool | Sequence[str]–Gibt an, ob automatisch extrahierte Speicher Metadaten aus Quellnachrichten übernehmen. Übergeben Sie
True, um alle Nachrichtenmetadaten zu erben, eine Nicht-Zeichenfolge von Nachrichtenmetadatenschlüsseln der obersten Ebene, um nur diese Schlüssel zu erben, oderFalse, um die Vererbung zu deaktivieren. Der Standardwert istTrue. Wenn ein Extraktionsdurchlauf mehrere Quellnachrichten verwendet, müssen die ausgewählten Metadaten über diese Nachrichten hinweg übereinstimmen.Info: Veraltet seit Version 26.6.0: Dieser Parameter sollte in 26.6.0 nicht mehr verwendet werden und wird in 27.1 entfernt. Verwenden Sie stattdessen
memory_extraction_config. - Client
OracleAgentMemory | None
- store
Beispiele
from oracleagentmemory.core import OracleAgentMemory
import oracledb
db_pool = oracledb.SessionPool(
user="YOUR DB USER",
password="YOUR DB PASSWORD",
dsn="YOUR DB CONNECT STRING",
)
client = OracleAgentMemory(connection=db_pool, embedder=embedder)
thread = client.create_thread(
thread_id="c1",
llm=llm,
memory_extraction_config=MemoryExtractionConfig(enable_context_summary=True),
)
len(thread.add_messages([{"role": "user", "content": "I love pizza."}]))
1
Methode add_memory
Fügen Sie einen manuellen Speichereintrag hinzu, und indexieren Sie ihn.
- Parameter:
- content
str: Textinhalt, der als Speicher gespeichert werden soll. - memory_type
Literal['memory', 'guideline', 'fact', 'preference'] | ~oracleagentmemory._notset._NotSetMarker: Zu speichernde Speicherkategorie. Unterstützte Werte sind"memory","fact","guideline"und"preference". Wenn der Inhalt ausgelassen wird, wird er als allgemeines"memory"gespeichert. - user_id
str: Optionales Überschreiben der Benutzer-ID. - agent_id
str: Optionales Überschreiben der Agent-ID. - thread_id
str– Optionales Überschreiben der Thread-ID. - memory_id
str– Optionale vom Aufrufer bereitgestellte stabile ID für diese Speicherzeile. - metadata
dict[str, Any] | None– Optionale Metadaten, die im gespeicherten Speicher persistiert werden. - timestamp
str | None– Optionaler Zeitstempel zur Speicherung dieses Speichers. Es stellt dar, wann der Speicher erstellt wurde. Wenn keine Angabe gemacht wird oderNone, verwendet der Speicher die aktuelle Zeit. Wennttl_anchorTimeToLiveAnchor.TIMESTAMPist, geben Sie einen konkreten ISO-8601-Zeitstempelwert an. ISO-8601-Zeitstempel ohne Zeitzone werden als UTC behandelt. - ttl_days
int | None- Optionale Dauer für die Gültigkeitsdauer in Tagen. Lassen Sie dieses Argument weg, um die Standarddauer für die Gültigkeitsdauer des Schemas zu verwenden. Übergeben SieNone, umMemoryRetentionConfig.max_ttl_dayszu verwenden, wenn die Aufbewahrungskonfiguration eine festlegt, oder um einen nicht ablaufenden Speicher zu speichern, wenn dies nicht der Fall ist. Werte überMemoryRetentionConfig.max_ttl_dayswerden mit einer Warnung auf dieses Maximum geklemmt. - ttl_anchor
TimeToLiveAnchor– Optionaler Time-to-Live-Anker. Verwenden SieTimeToLiveAnchor.CREATED_ATals Erstellungszeit der Datenbank oderTimeToLiveAnchor.TIMESTAMPals Speicherzeitstempel. Der zeitstempelverankerte Ablauf erfordert einen konkreten ISO-8601-Zeitstempel für diesen Speicher. ISO-8601-Zeitstempel ohne Zeitzone werden als UTC behandelt. - **store_kwargs (Beliebige) – Speicherspezifische Schreiboptionen, die an den zugrunde liegenden Speicher weitergeleitet werden.
- content
- Rückgaben: ID des eingefügten Speicherdatensatzes.
- Rückgabetyp: str
Beispiele
thread.add_memory("Remember this preference", memory_id="mem-thread-docs")
'mem-thread-docs'
Methode add_memory_async (asynchron)
Fügen Sie einen Speicher asynchron hinzu.
- Parameter:
- content
str: Zu speichernder Speicherinhalt. - memory_type
Literal['memory', 'guideline', 'fact', 'preference'] | ~oracleagentmemory._notset._NotSetMarker: Zu speichernde Speicherkategorie. Unterstützte Werte sind"memory","fact","guideline"und"preference". Wenn der Inhalt ausgelassen wird, wird er als allgemeines"memory"gespeichert. - user_id
str– Optionales Überschreiben des Benutzergeltungsbereichs. - agent_id
str: Optionales Überschreiben des Geltungsbereichs des Agent. - thread_id
str– Optionales Überschreiben des Threadgeltungsbereichs. - memory_id
str– Optionale Speicher-ID, die vom Aufrufer bereitgestellt wird. Wenn keine Angabe gemacht wird, generieren die Filialen eine Kennung. - metadata
dict[str, Any] | None– Optionale Metadaten, die im gespeicherten Speicher persistiert werden. - timestamp
str | None– Optionaler Zeitstempel zur Speicherung dieses Speichers. Es stellt dar, wann der Speicher erstellt wurde. Wenn keine Angabe gemacht wird oderNone, verwendet der Speicher die aktuelle Zeit. - ttl_days
int | None- Optionale Dauer für die Gültigkeitsdauer in Tagen. Lassen Sie dieses Argument aus, um die Standarddauer für die Gültigkeitsdauer des Schemas zu verwenden, oder übergeben SieNonefür einen Speicher, der nicht abläuft. - ttl_anchor
TimeToLiveAnchor– Optionaler Time-to-Live-Anker. Verwenden SieTimeToLiveAnchor.CREATED_AToderTimeToLiveAnchor.TIMESTAMP. - **store_kwargs (Beliebig) – Implementierungsspezifische Schreiboptionen, die an den zugrunde liegenden Speicher weitergeleitet werden.
- content
- Rückgabetyp: str
Methode add_messages
Fügen Sie dem Thread Nachrichten hinzu, und indexieren Sie sie.
Im Hintergrundextraktionsmodus gibt diese Methode zurück, nachdem Raw-Nachrichten eingefügt wurden und die Hintergrundextraktion im Hintergrund versucht wurde.
- Parameter:
- Nachrichten
list[Message | MessageT]: Liste der anzuhängenden Nachrichten. Nachrichten könnenMessage-Objekte oder Wörterbücher mitroleundcontent(und optionalid) sein. - metadata
dict[str, Any] | None | list[dict[str, Any] | None]– Optionale Metadaten für gemeinsame Nutzung oder Nachrichten, die dauerhaft gespeichert werden. Wenn diese Option ausgelassen wird, werden Metadaten verwendet, die in jede Nachricht eingebettet sind. - ttl_days
int | None | list[int | None]: Optionale Dauer der Gültigkeitsdauer in Tagen für angehängte Nachrichten. Lassen Sie dieses Argument weg, um die Standarddauer für die Gültigkeitsdauer des Schemas zu verwenden. Übergeben SieNone, umMemoryRetentionConfig.max_ttl_dayszu verwenden, wenn die Aufbewahrungskonfiguration eine festlegt, oder um nicht ablaufende Nachrichten zu erstellen, wenn dies nicht der Fall ist. Werte überMemoryRetentionConfig.max_ttl_dayswerden mit einer Warnung auf dieses Maximum geklemmt. Skalare Werte gelten für den gesamten Batch. - ttl_anchor
TimeToLiveAnchor | list[TimeToLiveAnchor]– Optionaler Time-to-Live-Anker. Verwenden SieTimeToLiveAnchor.CREATED_ATfür die Datenbankerstellungszeit oderTimeToLiveAnchor.TIMESTAMPfür jeden Nachrichtenzeitstempel. Der zeitstempelverankerte Ablauf erfordert einen konkreten ISO-8601-Zeitstempel für jede betroffene Nachricht. Wenn diese Option ausgelassen wird, laufen Nachrichten relativ zuTimeToLiveAnchor.CREATED_ATab. ISO-8601-Zeitstempel ohne Zeitzone werden als UTC behandelt. - **store_kwargs (Beliebige) – Speicherspezifische Schreiboptionen, die an den zugrunde liegenden Speicher weitergeleitet werden.
- Nachrichten
- Rückgaben: IDs der eingefügten Meldungsdatensätze. Im Hintergrundextraktionsmodus werden möglicherweise noch automatische Extraktionsarbeiten ausgeführt, wenn diese Kennungen zurückgegeben werden.
- Rückgabetyp: list[str]
Hinweise
In MemoryExtractionMode.BACKGROUND werden Raw-Nachrichten persistiert, bevor extrahierte Speicher gespeichert werden. Wenn die Hintergrundextraktion nicht in eine Warteschlange gestellt wird oder wenn eine konfigurierte Warteschlangenkapazität den Timeout erreicht, bleiben die eingefügten Raw-Nachrichten gespeichert, und der Aufruf wird entweder ohne extrahierte Speicher fortgesetzt, oder TimeoutError wird je nach background_extraction_queue_full_behavior ausgelöst.
Beispiele
len(thread.add_messages([{"role": "user", "content": "Thread message from docs"}]))
1
Methode add_messages_async (asynchron)
Fügen Sie dem Thread asynchron Nachrichten hinzu, und indexieren Sie sie.
Im Hintergrundextraktionsmodus gibt diese Methode zurück, nachdem Raw-Nachrichten eingefügt wurden und die Hintergrundextraktion im Hintergrund versucht wurde.
In MemoryExtractionMode.BACKGROUND werden Raw-Nachrichten persistiert, bevor extrahierte Speicher gespeichert werden. Wenn die Hintergrundextraktion nicht in eine Warteschlange gestellt wird oder wenn eine konfigurierte Warteschlangenkapazität den Timeout erreicht, bleiben die eingefügten Raw-Nachrichten gespeichert, und der Aufruf wird entweder ohne extrahierte Speicher fortgesetzt, oder TimeoutError wird je nach background_extraction_queue_full_behavior ausgelöst.
- Parameter:
- Nachrichten
list[Message | MessageT] - Metadaten
dict[str, Any] | None | list[dict[str, Any] | None] - ttl_days
int | None | list[int | None] - ttl_anchor
TimeToLiveAnchor | list[TimeToLiveAnchor] - store_kwargs
Any
- Nachrichten
- Rückgabetyp: list[str]
Methode delete_memory
Löschen Sie einen speicherähnlichen Datensatz (z. B. einen Speicher, einen Fakt, eine Voreinstellung oder eine Richtlinie) nach Kennung aus diesem Thread.
- Parameter: memory_id
str– Speicher-ID. Es werden nur speicherähnliche Datensätze (memory,guideline,fact,preference) gelöscht, deren gespeichertethread_idgenau mit diesem Thread übereinstimmt. - Rücksendungen: Anzahl der gelöschten Datensätze (0 oder 1). Gibt
0zurück, wenn die ID nicht vorhanden ist oder zu einem anderen Thread gehört. - Rückgabetyp: int
Beispiele
thread.delete_memory("456")
0
Methode delete_message
Meldungsdatensatz aus diesem Thread nach ID löschen.
- Parameter: message_id
str: Nachrichten-ID. Nur Nachrichten, deren gespeichertethread_idgenau mit diesem Thread übereinstimmt, werden gelöscht. - Rücksendungen: Anzahl der gelöschten Nachrichtendatensätze (0 oder 1). Gibt
0zurück, wenn die ID nicht vorhanden ist oder zu einem anderen Thread gehört. - Rückgabetyp: int
Hinweise
Beim Löschen einer Nachricht wird nur der Raw-Nachrichtendatensatz entfernt. Abgeleitete Speicher werden nicht gelöscht, da wir noch nicht verfolgen, welche extrahierten Speicher aus welcher Nachricht stammen, so dass sie durchsuchbar bleiben oder sich immer noch auf die Kontextkartenausgabe auswirken können. Verwenden Sie OracleAgentMemory.delete_thread(), um den Thread zusammen mit den zugehörigen Nachrichten und Speichern zu löschen.
Beispiele
thread.delete_message("123")
0
Methode get_context_card
Gibt ein Kontextkartenobjekt für den Thread zurück.
Wählen Sie get_context_card_async, wenn eine LLM-gestützte Implementierung Remote-Netzwerk-I/O ausführen kann.
- Parameter:
- fallback_message_count
int: Anzahl der letzten Nachrichten, die verwendet werden sollen, wenn der Fallback-Zusammenfassungstext zum Abrufen und Rendering abgeleitet wird. Wird dieser Wert ausgelassen, wird er in5aufgelöst. - max_relevant_results
int– Maximale Anzahl der abgerufenen dauerhaften Datensätze, die eingeschlossen werden sollen. Wird dieser Wert ausgelassen, wird er in5aufgelöst, es sei denn,min_relevant_results_by_typewird angegeben. In diesem Fall wird er in den größeren Wert von5und in die Summe der angeforderten Mindestwerte pro Typ aufgelöst. - max_recent_messages
int: Maximale Anzahl der nachgestellten Raw-Nachrichten, die ausführlich eingebettet werden. Wird dieser Wert ausgelassen, wird er in5aufgelöst. - min_relevant_results_by_type
Mapping[Literal['memory', 'guideline', 'fact', 'preference'], int] | None | ~oracleagentmemory._notset._NotSetMarker– Optionale Mindestwerte pro Typ für relevante speicherähnliche Datensätze, die in der Kontextkarte enthalten sind. Angeforderte Typen werden zuerst durchsucht, und die restlichenmax_relevant_results-Slots werden von allen unterstützten speicherähnlichen Datensatztypen ausgefüllt. Unterstützte Schlüssel sind"memory","fact","guideline"und"preference". - **kwargs (Beliebig) – Reserviert für zukünftige Kontextkartenoptionen. Unerwartete Schlüsselwortargumente lösen
TypeErroraus.
- fallback_message_count
- Rückgaben: Ein Kontextkartenobjekt, das eine Threadkontextübersicht basierend auf den neuesten Nachrichten enthält. Verwenden Sie
OracleContextCard.content, um auf den gerenderten XML-ähnlichen Text zuzugreifen. - Rückgabetyp: OracleContextCard
Hinweise
Dabei wird der standardmäßige Suchgeltungsbereich des Threads mit exact_thread_match=False verwendet, sodass relevante Speicher aus anderen Threads für denselben Benutzer/Agent enthalten sein können.
Beispiele
thread.add_memory("User likes pizza", memory_id="mem-context-docs")
'mem-context-docs'
len(thread.add_messages([{"role": "user", "content": "Tell me about pizza"}]))
1
"User likes pizza" in thread.get_context_card().content
True
card = thread.get_context_card(
max_relevant_results=4,
min_relevant_results_by_type={"memory": 1},
)
len(card.relevant_results or []) <= 4
True
Methode get_context_card_async (asynchron)
Gibt ein Kontextkartenobjekt für den Thread asynchron zurück.
- Parameter:
- fallback_message_count
int: Anzahl der letzten Nachrichten, die verwendet werden sollen, wenn der Fallback-Zusammenfassungstext zum Abrufen und Rendering abgeleitet wird. Wird dieser Wert ausgelassen, wird er in5aufgelöst. - max_relevant_results
int– Maximale Anzahl der abgerufenen dauerhaften Datensätze, die eingeschlossen werden sollen. Wird dieser Wert ausgelassen, wird er in5aufgelöst, es sei denn,min_relevant_results_by_typewird angegeben. In diesem Fall wird er in den größeren Wert von5und in die Summe der angeforderten Mindestwerte pro Typ aufgelöst. - max_recent_messages
int: Maximale Anzahl der nachgestellten Raw-Nachrichten, die ausführlich eingebettet werden. Wird dieser Wert ausgelassen, wird er in5aufgelöst. - min_relevant_results_by_type
Mapping[Literal['memory', 'guideline', 'fact', 'preference'], int] | None | ~oracleagentmemory._notset._NotSetMarker– Optionale Mindestwerte pro Typ für relevante speicherähnliche Datensätze, die in der Kontextkarte enthalten sind. Angeforderte Typen werden zuerst durchsucht, und die restlichenmax_relevant_results-Slots werden von allen unterstützten speicherähnlichen Datensatztypen ausgefüllt. Unterstützte Schlüssel sind"memory","fact","guideline"und"preference". - **kwargs (Beliebig) – Reserviert für zukünftige Kontextkartenoptionen. Unerwartete Schlüsselwortargumente lösen
TypeErroraus.
- fallback_message_count
- Rückgaben: Ein Kontextkartenobjekt für den Thread.
- Rückgabetyp: OracleContextCard
Beispiele
card = await thread.get_context_card_async(
min_relevant_results_by_type={"preference": 1, "guideline": 1},
)
len(card.relevant_results or []) <= 5
True
Methode get_messages
Gespeicherte Nachrichten für diesen Thread zurückgeben.
- Parameter:
- start
int | None: Startindex (0-basiert). Wenn zusammen mitendausgelassen wird, wird das zuletzt beschränkte Fenster zurückgegeben. - end
int | None: Endindex (exklusiv). Wenn diese Option ausgelassen wird, wird ein begrenztes Fenster mit den neuesten Nachrichten zurückgegeben. Übergeben SieNoneoder-1, um alle Nachrichten abstartexplizit anzufordern.
- start
- Rückgaben: Nachrichten in chronologischer Reihenfolge.
- Liste Rückgabetyp:[Nachricht]
Beispiele
len(thread.add_messages([{"role": "user", "content": "Stored message example"}]))
1
messages = thread.get_messages()
messages[-1].content
'Stored message example'
Methode get_messages_async (asynchron)
Raw Thread-Nachrichten asynchron zurückgeben
- Parameter:
- start
int | None– Optionaler Startindex. - end
int | None– Optionaler Endindex.
- start
- Rückgaben: Raw-Nachrichtenobjekte.
- Liste Rückgabetyp:[Nachricht]
Methode get_summary
Gibt eine Best Effort-Zusammenfassung des Threads zurück.
Wählen Sie get_summary_async, wenn eine LLM-gestützte Implementierung Remote-Netzwerk-I/O ausführen kann.
- Parameter:
- except_last
int– Anzahl der letzten Nachrichten, die aus der Übersicht ausgeschlossen werden sollen. - token_budget
int: Budget für Soft-Token. Wenn kein Wert angegeben wird, wird ein gebundener Standardwert angewendet. Positive Werte werden nur abgeschnitten, wenn die formatierte Übersicht das Budget nach der Schätzung von_estimate_tokens()überschreitet. Der zurückgegebene Text wird dann aufint(token_budget * 3.5)Zeichen begrenzt. Nicht positive Werte deaktivieren die Ausgabegrenze. - **kwargs (Beliebig) – Reserviert für zukünftige Übersichtsoptionen. Unerwartete Schlüsselwortargumente lösen
TypeErroraus.
- except_last
- Rückgaben: Zusammenfassungsobjekt mit dem Synthesized Thread-Zusammenfassungstext.
- Rückgabetyp: OracleSummary
Beispiele
len(thread.add_messages([{"role": "assistant", "content": "Summary source message"}]))
1
summary = thread.get_summary()
bool(summary.content)
True
Methode get_summary_async (asynchron)
Gibt asynchron eine Best Effort-Zusammenfassung des Threads zurück.
- Parameter:
- except_last
int– Anzahl der letzten Nachrichten, die aus der Übersicht ausgeschlossen werden sollen. - token_budget
int: Budget für Soft-Token. Wenn kein Wert angegeben wird, wird ein gebundener Standardwert angewendet. Positive Werte werden nur abgeschnitten, wenn die formatierte Übersicht das Budget nach der Schätzung von_estimate_tokens()überschreitet. Der zurückgegebene Text wird dann aufint(token_budget * 3.5)Zeichen begrenzt. Nicht positive Werte deaktivieren die Ausgabegrenze. - **kwargs (Beliebig) – Reserviert für zukünftige Übersichtsoptionen. Unerwartete Schlüsselwortargumente lösen
TypeErroraus.
- except_last
- Rückgaben: Zusammenfassungsobjekt mit dem Synthesized Thread-Zusammenfassungstext.
- Rückgabetyp: OracleSummary
Methode search
Synchron nach Datensätzen suchen, die für eine Abfrage relevant sind.
- Parameter:
- query
str– Abfragezeichenfolge in natürlicher Sprache. - user_id
str | None– Optionales Überschreiben des Benutzergeltungsbereichs. Ausgelassene Werte erben den standardmäßigen Benutzergeltungsbereich des Threads. - agent_id
str | None: Optionales Überschreiben des Geltungsbereichs des Agent. Ausgelassene Werte erben den Standard-Agent-Geltungsbereich des Threads. - thread_id
str | None– Optionales Überschreiben des Threadgeltungsbereichs. Ausgelassene Werte erben die aktuelle Thread-ID des Threads. - exact_user_match
bool– Gibt an, ob der Benutzerabgleich streng sein soll. - exact_agent_match
bool: Gibt an, ob der Agent-Abgleich streng sein soll. - exact_thread_match
bool– Gibt an, ob der Threadabgleich streng sein soll. - max_results
int– Optionale maximale Anzahl von zurückzugebenden Ergebnissen. Wenn sie angegeben wird, muss sie mindestens1sein. Wenn Sie dieses Argument weglassen, wird der Standardwert10verwendet. Der Aufruf gibt möglicherweise weniger alsmax_resultszurück, wenn weniger übereinstimmende Datensätze vorhanden sind, die nicht abgelaufen sind. - record_types
list[str]: Optionale Liste der aufzunehmenden Datensatztypen, wie"memory"oder"message". -
metadata_filter
dict[str, Any] | None–Optionale Metadatenfilterzuordnung, die als zusätzlicher Filter nach Geltungsbereich und Datensatzfilterung verwendet wird. Einträge in
metadata_filterwerden mit AND-Semantik kombiniert. Einträge, deren Wert kein Operatordictionary auf Feldebene ist, verwenden eine Semantik mit genauen Übereinstimmungen: Der angeforderte Schlüssel muss in den Metadaten des gespeicherten Datensatzes vorhanden sein. Verschachtelte Wörterbücher stimmen mit verschachtelten Metadatenobjekten rekursiv überein. Skalare und Listenwerte müssen exakt übereinstimmen. Listenreihenfolge und -länge müssen ebenfalls übereinstimmen. Lassen Sie dieses Argument weg, oder übergeben SieNone, um ohne Metadatenfilter zu suchen. Beispiele:metadata_filter={"source": "chat"}für ein skalares Feld,metadata_filter={"travel": {"need": "transit"}}für ein verschachteltes Feld undmetadata_filter={"tags": ["trip", "urgent"]}für eine genaue Listenübereinstimmung. Kombinieren Sie Bedingungen, um sie alle zu benötigen:metadata_filter={ "source": "chat", "travel": {"need": "transit"}, "tags": ["trip", "urgent"], }Um die Arraymitgliedschaft zu testen, verwenden Sie ein Operatordictionary auf Feldebene.
"$array_contains"entspricht einem Wert oder allen Werten in einer Liste."$array_contains_any"entspricht mindestens einem Wert aus einer Liste."$not"negiert einen anderen Ausdruck auf Feldebene in demselben Feld, einschließlich eines Operator-Dictionarys oder eines Raw-Exact-Match-Wertes. Negierte Ausdrücke stimmen überein, wenn der positive Ausdruck fehlschlagen würde, einschließlich fehlender Felder; negierte Array-Mitgliedschaft stimmt auch mit Nicht-Array-Feldern überein:metadata_filter={ "source": "chat", "tags": { "$array_contains": "trip", "$not": {"$array_contains": "archived"}, }, } - Geltungsbereich
SearchScope– Optionaler vordefinierter Suchbereich. Geben Sie entwederscopeoder die explizite ID und die exakten Übereinstimmungsargumente an, nicht beides.
- query
- Rückgaben: Die Suchergebnisse werden nach abnehmender Relevanz sortiert.
- Rückgabetyp: list[SearchResult]
- Raises: ValueError – Wenn
scopemit expliziten Bezeichnern oder Argumenten mit exakter Übereinstimmung kombiniert wird, wennmax_resultskleiner als1ist oder wennmetadata_filterweder ein Dictionary nochNoneist.
Hinweise
Ausgelassene Geltungsbereichsfelder übernehmen den Standardsuchgeltungsbereich dieses Threads: exakter Benutzer- und Agent-Abgleich plus aktuellem user_id, agent_id und thread_id dieses Threads. Bei der Standardthreadsuche wird exact_thread_match=False absichtlich beibehalten, sodass relevante Datensätze aus anderen Threads für denselben Benutzer/Agent zurückgegeben werden können. Übergeben Sie exact_thread_match=True, um die Ergebnisse auf den aktuellen Thread zu beschränken. Explizite None-Geltungsbereichswerte folgen weiterhin den aufgelösten exakten Übereinstimmungsregeln: exact_*_match=False lässt diese Dimension uneingeschränkt zu, während exact_*_match=True nur gespeicherten None-Werten entspricht.
Explizite max_results-Werte müssen mindestens 1 sein. Wenn das Argument weggelassen wird, wird der Standardwert 10 verwendet. Dies ist ein oberer Grenzwert: Der Aufruf gibt möglicherweise weniger als max_results-Ergebnisse zurück, wenn Filter zu restriktiv sind, wenn weniger übereinstimmende Datensätze vorhanden sind oder das implementierungsspezifische Suchverhalten vorliegt.
Methode search_async (asynchron)
Suche asynchron nach Datensätzen, die für eine Abfrage relevant sind.
- Parameter:
- query
str– Abfragezeichenfolge in natürlicher Sprache. - user_id
str | None– Optionales Überschreiben des Benutzergeltungsbereichs. Ausgelassene Werte erben den standardmäßigen Benutzergeltungsbereich des Threads. - agent_id
str | None: Optionales Überschreiben des Geltungsbereichs des Agent. Ausgelassene Werte erben den Standard-Agent-Geltungsbereich des Threads. - thread_id
str | None– Optionales Überschreiben des Threadgeltungsbereichs. Ausgelassene Werte erben die aktuelle Thread-ID des Threads. - exact_user_match
bool– Gibt an, ob der Benutzerabgleich streng sein soll. - exact_agent_match
bool: Gibt an, ob der Agent-Abgleich streng sein soll. - exact_thread_match
bool– Gibt an, ob der Threadabgleich streng sein soll. - max_results
int– Optionale maximale Anzahl von zurückzugebenden Ergebnissen. Wenn sie angegeben wird, muss sie mindestens1sein. Wenn Sie dieses Argument weglassen, wird der Standardwert10verwendet. - record_types
list[str]: Optionale Liste der aufzunehmenden Datensatztypen, wie"memory"oder"message". -
metadata_filter
dict[str, Any] | None–Optionale Metadatenfilterzuordnung, die als zusätzlicher Filter nach Geltungsbereich und Datensatzfilterung verwendet wird. Einträge in
metadata_filterwerden mit AND-Semantik kombiniert. Einträge, deren Wert kein Operatordictionary auf Feldebene ist, verwenden eine Semantik mit genauen Übereinstimmungen: Der angeforderte Schlüssel muss in den Metadaten des gespeicherten Datensatzes vorhanden sein. Verschachtelte Wörterbücher stimmen mit verschachtelten Metadatenobjekten rekursiv überein. Skalare und Listenwerte müssen exakt übereinstimmen. Listenreihenfolge und -länge müssen ebenfalls übereinstimmen. Lassen Sie dieses Argument weg, oder übergeben SieNone, um ohne Metadatenfilter zu suchen. Beispiele:metadata_filter={"source": "chat"}für ein skalares Feld,metadata_filter={"travel": {"need": "transit"}}für ein verschachteltes Feld undmetadata_filter={"tags": ["trip", "urgent"]}für eine genaue Listenübereinstimmung. Kombinieren Sie Bedingungen, um sie alle zu benötigen:metadata_filter={ "source": "chat", "travel": {"need": "transit"}, "tags": ["trip", "urgent"], }Um die Arraymitgliedschaft zu testen, verwenden Sie ein Operatordictionary auf Feldebene.
"$array_contains"entspricht einem Wert oder allen Werten in einer Liste."$array_contains_any"entspricht mindestens einem Wert aus einer Liste."$not"negiert einen anderen Ausdruck auf Feldebene in demselben Feld, einschließlich eines Operator-Dictionarys oder eines Raw-Exact-Match-Wertes. Negierte Ausdrücke stimmen überein, wenn der positive Ausdruck fehlschlagen würde, einschließlich fehlender Felder; negierte Array-Mitgliedschaft stimmt auch mit Nicht-Array-Feldern überein:metadata_filter={ "source": "chat", "tags": { "$array_contains": "trip", "$not": {"$array_contains": "archived"}, }, } - Geltungsbereich
SearchScope– Optionaler vordefinierter Suchbereich. Geben Sie entwederscopeoder die explizite ID und die exakten Übereinstimmungsargumente an, nicht beides.
- query
- Rückgaben: Die Suchergebnisse werden nach abnehmender Relevanz sortiert.
- Rückgabetyp: list[SearchResult]
- Raises: ValueError – Wenn
scopemit expliziten Bezeichnern oder Argumenten mit exakter Übereinstimmung kombiniert wird, wennmax_resultskleiner als1ist oder wennmetadata_filterweder ein Dictionary nochNoneist.
Hinweise
Ausgelassene Geltungsbereichsfelder übernehmen den Standardsuchgeltungsbereich dieses Threads: exakter Benutzer- und Agent-Abgleich plus aktuellem user_id, agent_id und thread_id dieses Threads. Bei der Standardthreadsuche wird exact_thread_match=False absichtlich beibehalten, sodass relevante Datensätze aus anderen Threads für denselben Benutzer/Agent zurückgegeben werden können. Übergeben Sie exact_thread_match=True, um die Ergebnisse auf den aktuellen Thread zu beschränken. Explizite None-Geltungsbereichswerte folgen weiterhin den aufgelösten exakten Übereinstimmungsregeln: exact_*_match=False lässt diese Dimension uneingeschränkt zu, während exact_*_match=True nur gespeicherten None-Werten entspricht.
Explizite max_results-Werte müssen mindestens 1 sein. Wenn das Argument weggelassen wird, wird der Standardwert 10 verwendet. Dies ist ein oberer Grenzwert: Der Aufruf gibt möglicherweise weniger als max_results-Ergebnisse zurück, wenn Filter zu restriktiv sind, wenn weniger übereinstimmende Datensätze vorhanden sind oder das implementierungsspezifische Suchverhalten vorliegt.
Methode update_memory
Aktualisieren Sie einen speicherähnlichen Datensatz, der diesem Thread gehört.
- Parameter:
- memory_id
str: Speicher-ID. Nur speicherähnliche Datensätze (memory,guideline,fact,preference), deren gespeichertethread_idgenau mit diesem Thread übereinstimmt, werden aktualisiert. - content
str: Optionaler Ersatzinhalt. Geben Sie eine Zeichenfolge an, um den gespeicherten Inhalt zu ersetzen. Wird der Inhalt ausgelassen, wird der gespeicherte Inhalt beibehalten. Die Übergabe vonNonewird nicht unterstützt. Lassen Siecontentweg, um den aktuellen Wert beizubehalten, oder verwenden Siedelete_memory(), um den Datensatz zu entfernen. - metadata
dict[str, Any] | None– Optionale Metadaten-Ersatzzuordnung. Wenn diese Option ausgelassen wird, werden die gespeicherten Metadaten beibehalten. Wenn angegeben, wird das gespeicherte Metadatenobjekt ersetzt. Diese API ersetzt keine Deep-Merge-Metadaten. - timestamp
str | None– Optionaler neuer Zeitstempel für diesen Speicher. Es stellt dar, wann der Speicher erstellt wurde. Wenn dieser Wert ausgelassen wird, wird der gespeicherte Zeitstempel beibehalten. Übergeben SieNone, um den gespeicherten Zeitstempel zu löschen und die Zeit zu verwenden, zu der der Datensatz im Speicher erstellt wurde. Wennttl_anchorTimeToLiveAnchor.TIMESTAMPist, müssen Ersatzzeitstempel ISO-8601-Zeichenfolgen sein. ISO-8601-Zeitstempel ohne Zeitzone werden als UTC behandelt. - ttl_days
int | None– Optionale Ablaufaktualisierung in Tagen. Lassen Sie dieses Argument weg, damit der aktuelle Ablauf unverändert bleibt, es sei denn,ttl_anchorist angegeben. Übergeben SieNone, umMemoryRetentionConfig.max_ttl_dayszu verwenden, wenn die Aufbewahrungskonfiguration eine festlegt, oder um den Ablauf zu löschen, wenn dies nicht der Fall ist. Werte überMemoryRetentionConfig.max_ttl_dayswerden mit einer Warnung auf dieses Maximum geklemmt. Abgelaufene Speicher sind für diese Thread-API nicht verfügbar und können nicht aktualisiert werden. - ttl_anchor
TimeToLiveAnchor– Optionaler Time-to-Live-Anker für eine Ablaufaktualisierung. Verwenden SieTimeToLiveAnchor.CREATED_ATfür die Speichererstellungszeit oderTimeToLiveAnchor.TIMESTAMPfür den Ersatztimestamp, der in demselben Update bereitgestellt wird, oder den gespeicherten Ereigniszeitstempel, wenntimestampausgelassen wird. Wenn Siettl_anchorohnettl_daysangeben, wird die Standarddauer für die Gültigkeitsdauer des Schemas verwendet. Wennttl_anchorwährend einer Aktualisierung ausgelassen wird, verwendet der ThreadTimeToLiveAnchor.CREATED_AT. Aktualisierungen mit Zeitstempel erfordern entweder einen Ersatz-ISO-8601-Zeitstempel in demselben Aufruf oder einen vorhandenen gespeicherten Ereigniszeitstempel in diesem Format. ISO-8601-Zeitstempel ohne Zeitzone werden als UTC behandelt. - **kwargs (Any) – Unerwartete Schlüsselwortargumente werden abgelehnt.
- memory_id
- Rückgaben: ID des aktualisierten speicherähnlichen Datensatzes.
- Rückgabetyp: str
Methode update_memory_async (asynchron)
Aktualisieren Sie einen speicherähnlichen Datensatz asynchron.
- Parameter:
- memory_id
str: ID des zu aktualisierenden speicherähnlichen Datensatzes. - content
str: Optionaler Ersatzinhalt. Geben Sie eine Zeichenfolge an, um den gespeicherten Inhalt zu ersetzen. Wird der Inhalt ausgelassen, wird der gespeicherte Inhalt beibehalten. Die Übergabe vonNonewird nicht unterstützt. Lassen Siecontentweg, um den aktuellen Wert beizubehalten, oder verwenden Siedelete_memory(), um den Datensatz zu entfernen. - metadata
dict[str, Any] | None– Optionale Metadaten-Ersatzzuordnung. Wenn diese Option ausgelassen wird, werden die gespeicherten Metadaten beibehalten. Wenn angegeben, wird das gespeicherte Metadatenobjekt ersetzt. Diese API ersetzt keine Deep-Merge-Metadaten. - timestamp
str | None– Optionaler neuer Zeitstempel für diesen Speicher. Es stellt dar, wann der Speicher erstellt wurde. Wenn dieser Wert ausgelassen wird, wird der gespeicherte Zeitstempel beibehalten. Übergeben SieNone, um den gespeicherten Zeitstempel zu löschen und die Zeit zu verwenden, zu der der Datensatz im Speicher erstellt wurde. - ttl_days
int | None– Optionale Ablaufaktualisierung in Tagen. Lassen Sie dieses Argument zusammen mitttl_anchoraus, um den aktuellen Ablaufzeitstempel beizubehalten. Übergeben SieNone, um den Ablauf zu löschen. - ttl_anchor
TimeToLiveAnchor– Optionaler Time-to-Live-Anker für eine Ablaufaktualisierung. Wenn Siettl_anchorohnettl_daysangeben, wird die Standarddauer für die Gültigkeitsdauer des Schemas verwendet. - **kwargs (Any) – Unerwartete Schlüsselwortargumente werden abgelehnt.
- memory_id
- Rückgaben: ID des aktualisierten speicherähnlichen Datensatzes.
- Rückgabetyp: str
Beispiele
from functools import partial
from oracleagentmemory._async_helpers import run_async_in_sync
memory_id = thread.add_memory("Original memory")
run_async_in_sync(
partial(thread.update_memory_async, memory_id, content="Updated memory")
) == memory_id
True
Methode update_message
Aktualisieren Sie einen Raw-Nachrichtendatensatz, der diesem Thread gehört.
- Parameter:
- message_id
str: Nachrichten-ID. Nur Nachrichten, deren gespeichertethread_idgenau mit diesem Thread übereinstimmt, werden aktualisiert. - content
str: Optionaler Nachrichteninhalt für Ersatznachrichten. Geben Sie eine Zeichenfolge an, um den gespeicherten Inhalt zu ersetzen. Wird der Inhalt ausgelassen, wird der gespeicherte Inhalt beibehalten. Die Übergabe vonNonewird nicht unterstützt. - metadata
dict[str, Any] | None– Optionale Metadaten-Ersatzzuordnung. Wenn diese Option ausgelassen wird, werden die gespeicherten Metadaten beibehalten. Wenn angegeben, wird das gespeicherte Metadatenobjekt ersetzt. Diese API ersetzt keine Deep-Merge-Metadaten. - ttl_days
int | None– Optionale Ablaufaktualisierung in Tagen. Lassen Sie dieses Argument weg, damit der aktuelle Ablauf unverändert bleibt, es sei denn,ttl_anchorist angegeben. Übergeben SieNone, umMemoryRetentionConfig.max_ttl_dayszu verwenden, wenn die Aufbewahrungskonfiguration eine festlegt, oder um den Ablauf zu löschen, wenn dies nicht der Fall ist. Werte überMemoryRetentionConfig.max_ttl_dayswerden mit einer Warnung auf dieses Maximum geklemmt. Abgelaufene Nachrichten sind für diese Thread-API nicht verfügbar und können nicht aktualisiert werden. - ttl_anchor
TimeToLiveAnchor– Optionaler Time-to-Live-Anker für eine Ablaufaktualisierung. Verwenden SieTimeToLiveAnchor.CREATED_ATals Erstellungszeit der Nachricht oderTimeToLiveAnchor.TIMESTAMPals Zeitstempel des gespeicherten Ereignisses. Wenn Siettl_anchorohnettl_daysangeben, wird die Standarddauer für die Gültigkeitsdauer des Schemas verwendet. Wennttl_anchorwährend einer Aktualisierung ausgelassen wird, verwendet der ThreadTimeToLiveAnchor.CREATED_AT. Aktualisierungen mit Zeitstempel erfordern einen vorhandenen gespeicherten ISO-8601-Nachrichtenzeitstempel. ISO-8601-Zeitstempel ohne Zeitzone werden als UTC behandelt. - **kwargs (Any) – Unerwartete Schlüsselwortargumente werden abgelehnt.
- message_id
- Rücksendungen: ID des aktualisierten Meldungsdatensatzes.
- Rückgabetyp: str
Hinweise
Ausgelassene Felder werden aus dem gespeicherten Datensatz beibehalten. Gespeicherte Rolle und Zeitstempel bleiben unverändert. Wenn Sie Inhalte bearbeiten, wird die Rohnachrichtenhistorie aktualisiert. Wenn die automatische Extraktion aktiviert ist, kann das SDK dazu führen, dass Speicher aus der bearbeiteten Nachricht und der früheren Historie neu extrahiert werden. Im Modus INLINE wird diese Extraktion abgeschlossen, bevor diese Methode zurückgegeben wird. Im Modus BACKGROUND gibt diese Methode zurück, nachdem die Aktualisierung der Raw-Nachricht erfolgreich war und die Hintergrundextraktion versucht wurde. Diese Nachsorgearbeiten wirken sich nicht auf die normale Extraktionshäufigkeit aus, die von späteren add_messages()-Aufrufen verwendet wird. Vorhandene extrahierte Speicher bleiben vorhanden, während neu extrahierte Speicher aus dem bearbeiteten Inhalt hinzugefügt werden können. Da die Aktualisierung der Raw-Nachricht und spätere Schreibvorgänge im extrahierten Speicher nicht atomar erfolgen, können extrahierte Speicher weiterhin den früheren Nachrichteninhalt widerspiegeln, wenn die Hintergrundarbeit nicht in eine Warteschlange gestellt wird, wenn eine konfigurierte Warteschlangenkapazität ihren Timeout erreicht oder die spätere Extraktion fehlschlägt. Beachten Sie außerdem, dass vorhandene extrahierte Speicher ihren ursprünglichen Ablauf beibehalten, wenn sich die TTL einer Quellnachricht ändert.
Beispiele
message_id = thread.add_messages([{"role": "user", "content": "Draft message"}])[0]
thread.update_message(message_id, content="Edited message") == message_id
True
Methode update_message_async (asynchron)
Aktualisieren Sie einen Raw-Nachrichtendatensatz, der diesem Thread gehört, asynchron.
- Parameter:
- message_id
str: Nachrichten-ID. Nur Nachrichten, deren gespeichertethread_idgenau mit diesem Thread übereinstimmt, werden aktualisiert. - content
str: Optionaler Nachrichteninhalt für Ersatznachrichten. Geben Sie eine Zeichenfolge an, um den gespeicherten Inhalt zu ersetzen. Wird der Inhalt ausgelassen, wird der gespeicherte Inhalt beibehalten. Die Übergabe vonNonewird nicht unterstützt. - metadata
dict[str, Any] | None– Optionale Metadaten-Ersatzzuordnung. Wenn diese Option ausgelassen wird, werden die gespeicherten Metadaten beibehalten. Wenn angegeben, wird das gespeicherte Metadatenobjekt ersetzt. Diese API ersetzt keine Deep-Merge-Metadaten. - ttl_days
int | None– Optionale Ablaufaktualisierung in Tagen. Lassen Sie dieses Argument weg, damit der aktuelle Ablauf unverändert bleibt, es sei denn,ttl_anchorist angegeben. Übergeben SieNone, umMemoryRetentionConfig.max_ttl_dayszu verwenden, wenn die Aufbewahrungskonfiguration eine festlegt, oder um den Ablauf zu löschen, wenn dies nicht der Fall ist. Werte überMemoryRetentionConfig.max_ttl_dayswerden mit einer Warnung auf dieses Maximum geklemmt. Abgelaufene Nachrichten sind für diese Thread-API nicht verfügbar und können nicht aktualisiert werden. - ttl_anchor
TimeToLiveAnchor– Optionaler Time-to-Live-Anker für eine Ablaufaktualisierung. Verwenden SieTimeToLiveAnchor.CREATED_ATals Erstellungszeit der Nachricht oderTimeToLiveAnchor.TIMESTAMPals Zeitstempel des gespeicherten Ereignisses. Wenn Siettl_anchorohnettl_daysangeben, wird die Standarddauer für die Gültigkeitsdauer des Schemas verwendet. Aktualisierungen mit Zeitstempel erfordern einen vorhandenen gespeicherten ISO-8601-Nachrichtenzeitstempel. ISO-8601-Zeitstempel ohne Zeitzone werden als UTC behandelt. - **kwargs (Any) – Unerwartete Schlüsselwortargumente werden abgelehnt.
- message_id
- Rücksendungen: ID des aktualisierten Meldungsdatensatzes.
- Rückgabetyp: str
Hinweise
Ausgelassene Felder werden aus dem gespeicherten Datensatz beibehalten. Gespeicherte Rolle und Zeitstempel bleiben unverändert. Wenn Sie Inhalte bearbeiten, wird die Rohnachrichtenhistorie aktualisiert. Wenn die automatische Extraktion aktiviert ist, kann das SDK dazu führen, dass Speicher aus der bearbeiteten Nachricht und der früheren Historie neu extrahiert werden. Im Modus INLINE wird diese Extraktion abgeschlossen, bevor diese Methode zurückgegeben wird. Im Modus BACKGROUND gibt diese Methode zurück, nachdem die Aktualisierung der Raw-Nachricht erfolgreich war und die Hintergrundextraktion versucht wurde. Diese Nachsorgearbeiten wirken sich nicht auf die normale Extraktionshäufigkeit aus, die von späteren add_messages()-Aufrufen verwendet wird. Vorhandene extrahierte Speicher bleiben vorhanden, während neu extrahierte Speicher aus dem bearbeiteten Inhalt hinzugefügt werden können. Da die Aktualisierung der Raw-Nachricht und spätere Schreibvorgänge im extrahierten Speicher nicht atomar erfolgen, können extrahierte Speicher weiterhin den früheren Nachrichteninhalt widerspiegeln, wenn die Hintergrundarbeit nicht in eine Warteschlange gestellt wird, wenn eine konfigurierte Warteschlangenkapazität ihren Timeout erreicht oder die spätere Extraktion fehlschlägt. Beachten Sie außerdem, dass vorhandene extrahierte Speicher ihren ursprünglichen Ablauf beibehalten, wenn sich die TTL einer Quellnachricht ändert.
Beispiele
message_id = thread.add_messages([{"role": "user", "content": "Draft message"}])[0]
run_async_in_sync(
partial(thread.update_message_async, message_id, content="Edited message")
) == message_id
True
Methode wait_for_memory_extraction
Warten Sie auf eine frühere Hintergrundspeicherextraktion für diesen Thread.
Diese Methode wartet auf Hintergrundextraktion, die von früheren add_messages()-, add_messages_async()-, update_message()- oder update_message_async()-Aufrufen in diesem Thread über dieselbe Agent-Speicherkomponente gestartet wurde. Wenn einer dieser Aufrufe bereits abgeschlossen ist, enthält diese Methode die Extraktion, die vor dem Warten beginnt.
Die Methode wartet nicht auf den Start der Extraktion nach Beginn dieser Wartezeit, auf die Extraktion, die von einer anderen Agent-Speicherkomponente gestartet wurde, oder auf die Extraktion, die in einem anderen Prozess ausgeführt wird. Extraktionsfehler zählen als beendet für diese Wartezeit.
- Parameter: timeout
float | None– Optionale maximale Anzahl von Sekunden, die gewartet werden soll. Standard ist300. Übergeben SieNone, um zu warten, bis die ausstehende Extraktion für diesen Thread abgeschlossen ist. - Gelöst: TimeoutError – Wird ausgelöst, wenn der Timeout abläuft, bevor die frühere Hintergrundextraktion abgeschlossen ist.
- Rückgabetyp: Keine
Beispiele
thread.wait_for_memory_extraction(timeout=10)
Methode wait_for_memory_extraction_async (asynchron)
Asynchrones Warten auf frühere Hintergrundspeicherextraktion.
Diese Methode folgt demselben Verhalten wie wait_for_memory_extraction().
- Parameter: timeout
float | None– Optionale maximale Anzahl von Sekunden, die gewartet werden soll. Standard ist300. Übergeben SieNone, um unbegrenzt zu warten. - Gelöst: TimeoutError – Wird ausgelöst, wenn der Timeout abläuft, bevor die frühere Hintergrundextraktion abgeschlossen ist.
- Rückgabetyp: Keine
Beispiele
await thread.wait_for_memory_extraction_async(timeout=10)
Hinweis: delete_message() löscht nur die Zeile mit Raw-Nachrichten. Abgeleitete Speicher können weiterhin durchsucht werden oder in Kontextkarten angezeigt werden. Verwenden Sie OracleAgentMemory.delete_thread(), um den Thread zusammen mit den zugehörigen Nachrichten und Speichern zu löschen. Der Client-Level-Thread-Löschvorgang wartet auf die zuvor akzeptierte Hintergrundextraktion, die bereits für diesen Thread bekannt ist. Es handelt sich jedoch nicht um eine globale Nebenläufigkeitsbarriere für andere Vorgänge im selben Thread, während der Löschvorgang ausgeführt wird.
Nachrichten
Klasse oracleagentmemory.apis.thread.Message
Basis: object
- Parameter:
- Rolle
str - Inhalt
str - Zeitstempel
str | None - Metadaten
dict[str, Any] | None - ID
str | None
- Rolle
Kontextkarten
Klasse oracleagentmemory.apis.contextcard.ContextCard
Basen: ABC
Abstraktes Kontextkartenobjekt, das von Thread-APIs zurückgegeben wird.
Eigenschaft content (Übung)
- Rückgabetyp: str
- Beschreibung: Gibt den gerenderten Kontextkartentext zurück.
Klasse oracleagentmemory.core.contextcard.OracleContextCard
Basis: ContextCard
Von einem Oracle-Thread zurückgegebene Kontextkarte.
- Parameter:
- Zusammenfassung
str: Zusammenfassungstext, der in die Karte eingebettet ist. - Themen
Sequence[str] | None– Optionale Abrufthemen, die mit dem Thread verknüpft sind. - relevant_results
Sequence[SearchResult] | None– Optionale abgerufene dauerhafte Datensätze in der Karte. - recent_messages
Sequence[Message] | None: Optionale letzte Raw-Nachrichten, die in der Karte gerendert werden. - message_format
str: Interne Vorlage, die beim Rendern vonrecent_messagesverwendet wird.
- Zusammenfassung
Eigenschaft content
- Rückgabetyp: str
-
Beschreibung: Gibt den gerenderten Kontextkartentext zurück.
- Rückgaben: XML-ähnlicher gerenderter Kontextkartentext, der für die Prompt-Assemblierung geeignet ist.
- Rückgabetyp: str
Beispiele
card = OracleContextCard(summary="ctx")
"<summary>" in card.content and "ctx" in card.content
True
Eigenschaft formatted_content
- Rückgabetyp: str
-
Beschreibung: Gibt den gerenderten Kontextkartentext zurück, der in Prompt-Building-Abläufen verwendet wird.
- Rückgaben: XML-ähnlicher gerenderter Kontextkartentext.
- Rückgabetyp: str
Beispiele
OracleContextCard(summary="").formatted_content
''
card = OracleContextCard(summary="ctx", topics=["travel"])
"<topics>" in card.formatted_content
True
Übersichten
Klasse oracleagentmemory.apis.summary.Summary
Basen: ABC
Von Thread-APIs zurückgegebenes abstraktes Thread-Zusammenfassungsobjekt.
Eigenschaft content (Übung)
- Rückgabetyp: str
- Beschreibung: Gibt den synthetischen Zusammenfassungstext zurück.
Klasse oracleagentmemory.core.summary.OracleSummary
Basis: Summary
Von einem Oracle-Thread zurückgegebene Übersicht.
- Parameter: content
str– Zusammenfassungstext, der aus dem Threadtranskript synthetisiert wird.
Beispiele
summary = OracleSummary(content="Plan the Rome itinerary.")
summary.content
'Plan the Rome itinerary.'
str(summary)
'Plan the Rome itinerary.'
Eigenschaft content
- Rückgabetyp: str
-
Beschreibung: Gibt den synthetischen Zusammenfassungstext zurück.
- Rückgaben: Zusammenfassungstext für den Thread.
- Rückgabetyp: str
Beispiele
OracleSummary(content="Keep the tea preference in mind.").content
'Keep the tea preference in mind.'
Eigenschaft formatted_content
- Rückgabetyp: str
-
Beschreibung: Gibt den gerenderten Übersichtstext zurück, der in Flüssen zur Prompt-Erstellung verwendet wird.
- Rückgaben: Gerenderter Übersichtstext.
- Rückgabetyp: str
Beispiele
OracleSummary(content="Thread recap").formatted_content
'Thread recap'