Memoria agente
Questa pagina presenta l'implementazione concreta di Oracle AI Agent Memory.
Memoria agente Oracle
Nota: OracleAgentMemory.delete_thread() è il percorso supportato per il cleanup a catena con ambito thread. Rimuove il thread insieme ai messaggi associati, alle memorie permanenti e ai dati di recupero gestiti. Questo valore è più ampio di OracleThread.delete_message(), che elimina solo la riga del messaggio raw. Prima di eliminare il thread, attende l'estrazione in background accettata in precedenza già nota a questo client per tale thread. Non serializza ogni operazione concorrente per lo stesso thread mentre è in corso l'eliminazione.
classe oracleagentmemory.core.OracleAgentMemory
Basi: IAgentMemory
Client di memoria agente supportato da Oracle DB o da un'area di memorizzazione fornita dal chiamante.
Creare un client di memoria.
- Parametri:
- store
OracleMemoryStore: istanza dell'area di memorizzazione preconfigurata opzionale. Se fornito, il client utilizza direttamente questo negozio invece di creare un'istanza del proprio negozio. Ciò è utile quando i chiamanti necessitano di una configurazione dell'area di memorizzazione superiore alle opzioni del costruttore esposte daOracleAgentMemory. - connessione
object: connessione/pool Oracle DB opzionale. Se specificato, viene utilizzato l'area di memorizzazione DB. Il passaggio di una connessione raw abilita la modalità a sessione singola per questa istanza client, pertanto le richieste concorrenti devono utilizzare un connection pool. Se omesso, i chiamanti devono passare unstoreesplicito. - embedder
IEmbedder | str: istanza di implementazione Embedder o identificativo di modello di incorporamento LiteLLM. Se omesso, non è collegato alcun embedder. La ricerca DB solo vettoriale richiede quindi vettori precalcolati tramite API di memorizzazione di livello inferiore, mentre la ricerca DB per parola chiave può essere eseguita direttamente dal testo della query. La ricerca del database ibrido richiede un'istanzaOracleDBEmbedderin modo che l'indice ibrido gestito e l'incorporatore principale utilizzino lo stesso modello nel database. - LLM
ILlm: adattatore LLM opzionale utilizzato dai thread per l'estrazione della memoria e/o il riepilogo del contesto. Per impostazione predefinita, i thread creati o caricati da questo client richiedono un LLM in modo che i messaggi recenti possano essere estratti per le memorie permanenti. Passare unllmqui, fornirne uno più tardi increate_threado disabilitare l'estrazione automatica conmemory_extraction_config=MemoryExtractionConfig(extract_memories=False). - memory_extraction_config
MemoryExtractionConfig: configurazione opzionale di estrazione della memoria a livello client. Utilizzalo per controllare le impostazioni di estrazione automatica della memoria, come la modalità di estrazione, il comportamento di riepilogo e i limiti di estrazione. I campi omessi utilizzano le impostazioni predefinite SDK. - schema_policy
SchemaPolicy | str: criterio di impostazione dello schema DB utilizzato solo durante la creazione di un'area di memorizzazione DB daconnection. L'impostazione predefinita èSchemaPolicy.REQUIRE_EXISTING. UtilizzareSchemaPolicy.CREATE_IF_NECESSARYquando si abilita per la prima volta la ricerca per parola chiave o ibrida in uno schema esistente o quando si apre uno schema gestito rilasciato precedente supportato, in modo che l'SDK possa applicare aggiornamenti di schema non distruttivi e aggiungere gli oggetti di ricerca testo necessari. Gli schemi di sviluppo o parzialmente aggiornati che già rivendicano la forma di rilascio corrente devono essere ricreati. - memory_store_id
str: ID stabile per l'area di memorizzazione della memoria DB gestita utilizzato solo durante la creazione di un'area di memorizzazione DB daconnection. Riutilizzare lo stesso ID per riaprire lo stesso negozio gestito. L'ID viene unito tramite join ai nomi degli oggetti DB gestiti con un carattere di sottolineatura, pertanto deve iniziare con una lettera, contenere solo lettere, numeri e caratteri di sottolineatura e contenere al massimo 16 caratteri. Passare questo otable_name_prefix, non entrambi. Se omesso, l'area di memorizzazione DB utilizzatable_name_prefixo il valore predefinito non prefisso quando viene omesso anchetable_name_prefix. -
nome_tabellaprefisso
str–Prefisso tabella/indice DB facoltativo utilizzato solo durante la creazione di un'area di memorizzazione DB da
connection. Passare questo omemory_store_id, non entrambi.Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_store_id. - search_strategy
SearchStrategy: valoreSearchStrategyche seleziona il backend di ricerca DB durante la creazione di un'area di memorizzazione DB daconnection. UtilizzareSearchStrategy.VECTOR(impostazione predefinita) per il recupero solo vettoriale,SearchStrategy.HYBRIDper eseguire una query sull'indice vettoriale ibrido Oracle gestito sul testo di ricerca memorizzato oSearchStrategy.KEYWORDper eseguire la classificazione in base alla corrispondenza parola chiave/testo nel testo di ricerca memorizzato senza fusione vettoriale.KEYWORDnon richiede l'embedder.HYBRIDrichiede cheembeddersia un valoreOracleDBEmbedder. L'avvio del client non riesce quando viene utilizzata una strategia incompatibile con uno schema esistente perché tale schema potrebbe non contenere lo stato di ricerca memorizzato richiesto dalla strategia. - search_index_sync
SearchIndexSyncMode: valoreSearchIndexSyncModeche seleziona il funzionamento di aggiornamento dell'indice di ricerca gestito perSearchStrategy.HYBRIDeSearchStrategy.KEYWORD.SearchIndexSyncMode.ON_COMMITè l'impostazione predefinita e rende i record ricercabili non appena viene eseguito il commit della transazione di scrittura.SearchIndexSyncMode.MANUALlascia l'aggiornamento a un'operazione di sincronizzazione esplicita lato database.SearchIndexSyncMode.AUTOconsente a Oracle di aggiornare l'indice ibrido gestito in modo asincrono ed è supportato solo conSearchStrategy.HYBRID; la ricerca per parola chiave rifiutaAUTO. -
extract_memories
bool–Quando si utilizza
True, i thread creati o caricati da questo client richiedono un LLM e l'estrazione automatica della memoria rimane abilitata. Impostare suFalseper disabilitare l'estrazione automatica della memoria e consentire a tali thread di funzionare senza un LLM. Il valore predefinito èTrue, pertanto gli LLM di estrazione mancanti non riescono velocemente.Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
memory_extraction_custom_instructions
str–Istruzioni personalizzate facoltative aggiunte al prompt del sistema di estrazione automatica della memoria per i thread creati o caricati da questo client. I valori per thread passati a
create_thread,get_threadoupdate_threadhanno la precedenza.Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. - memory_retention_config
MemoryRetentionConfig: configurazione di conservazione della memoria opzionale utilizzata solo durante la creazione di un'area di memorizzazione DB daconnection.MemoryRetentionConfig.default_ttl_daysviene applicato a nuovi messaggi e memorie la cui chiamata di scrittura omettettl_days.MemoryRetentionConfig.max_ttl_daysblocca le durate esplicite per record al di sopra del massimo configurato con un avviso e, se impostato, fa in modo chettl_days=Noneutilizzi tale massimo invece di creare record non in scadenza. ConSchemaPolicy.CREATE_IF_NECESSARY, una configurazione esplicita aggiorna i metadati memorizzati in uno schema gestito aggiornato esistente, ma non aggiorna le date di scadenza esistenti; omettendo mantiene l'impostazione esistente. Se una configurazione esplicita lasciadefault_ttl_daysomax_ttl_daysinNOT_SET_MARKER, l'SDK risolve l'attributo al relativo valore predefinito (None) prima di confrontare o memorizzare i metadati dello schema. Scegliere questa configurazione in base alle informazioni previste memorizzate nei record, al motivo per cui l'applicazione la conserva e a qualsiasi impegno di conservazione delle applicazioni o delle normative.
- store
Avvertenza: SchemaPolicy.CREATE_IF_NECESSARY può essere più costoso del normale avvio del client perché potrebbe applicare DDL dello schema gestito e riscrivere i dati con il massimo sforzo prima che l'inizializzazione abbia esito positivo. Pianificare la prima apertura di uno schema gestito meno recente come operazione di migrazione o manutenzione quando tale schema può contenere più righe.
Se l'impostazione dello schema deve creare il job di rimozione dei record scaduti gestiti, ma l'utente del database non dispone del privilegio scheduler-job, l'inizializzazione avverte e continua. I messaggi e le memorie scaduti rimangono nascosti dalle letture e dalle ricerche, ma non vengono rimossi fisicamente fino a quando il job non viene creato da un utente con CREATE JOB o un privilegio scheduler equivalente.
Quando SchemaPolicy.CREATE_IF_NECESSARY crea per la prima volta un indice ibrido gestito su uno schema esistente, Oracle analizza il testo di ricerca memorizzato e crea lo stato dell'indice ibrido gestito dal modello in-database configurato. L'avvio del client attende il completamento di tale DDL, quindi pianifica il primo aggiornamento ibrido come operazione di migrazione o manutenzione per schemi di grandi dimensioni. SearchIndexSyncMode controlla la manutenzione in corso dopo che l'indice esiste; non rende la prima build dell'indice asincrona.
- Aumenti: ValueError: se viene fornita una configurazione dell'area di memorizzazione in conflitto, ad esempio passando entrambe le opzioni
storeeconnection, le opzioni specifiche del DB senza una connessione DB o omettendo siastorecheconnection. - Parametri:
- negozio
OracleMemoryStore - connessione
object - embedder
IEmbedder | str - llm
ILlm - config_estrazione_memoria
MemoryExtractionConfig - schema_policy
SchemaPolicy | str - memory_store_id
str - prefisso_nome_tabella
str - strategia_ricerca
SearchStrategy - search_index_sync
SearchIndexSyncMode - memorie_estrazione
bool - istruzioni_estrazione_memoria_personalizzate
str - memory_retention_config
MemoryRetentionConfig
- negozio
Esempi
from oracleagentmemory.core import (
MemoryExtractionConfig,
SearchIndexSyncMode,
OracleAgentMemory,
SchemaPolicy,
SearchStrategy,
)
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
read_only_client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
memory_extraction_config=MemoryExtractionConfig(extract_memories=False),
)
Utilizzare un modello di incorporamento in DB per sfruttare la ricerca degli indici ibridi Oracle:
from oracleagentmemory.core.embedders import OracleDBEmbedder
db_embedder = OracleDBEmbedder(
connection=db_pool,
model="DOC_MODEL",
embedding_dimension=768,
)
hybrid_client = OracleAgentMemory(
connection=db_pool,
embedder=db_embedder,
schema_policy=SchemaPolicy.CREATE_IF_NECESSARY,
search_strategy=SearchStrategy.HYBRID,
search_index_sync=SearchIndexSyncMode.ON_COMMIT,
)
metodo add_agent
Aggiungere un record profilo agente al negozio.
- Parametri:
- agent_id
str: identificativo dell'agente. - informazioni
str: informazioni in formato libero sull'agente. - metadati
dict[str, Any] | None: mapping dei metadati facoltativo memorizzato nella riga del profilo dell'agente.
- agent_id
- Restituzioni: identificativo del profilo dell'agente memorizzato.
- Tipo restituito: str
Note
I record profilo agente vengono memorizzati nell'area di memorizzazione a livello di client e non hanno un ambito intenzionale. L'identificativo del record restituito è lo stesso identificativo pubblico utilizzato dall'applicazione come agent_id.
Esempi
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_agent(
"a1",
"Support assistant",
metadata={"source": "catalog"},
)
'a1'
metodo add_memory
Aggiungere una memoria nel sistema di memoria, attribuita all'utente, all'agente e al thread indicati.
- Parametri:
- content
str: il contenuto della memoria deve essere persistente. - memory_type
Literal['memory', 'guideline', 'fact', 'preference'] | ~oracleagentmemory._notset._NotSetMarker: categoria di memoria da memorizzare. I valori supportati sono"memory","fact","guideline"e"preference". Se omesso, il contenuto viene memorizzato come"memory"generale. - user_id
str: identificativi di ambito opzionali associati alla memoria memorizzata. - agent_id
str: identificativi di ambito opzionali associati alla memoria memorizzata. - thread_id
str: identificativi di ambito opzionali associati alla memoria memorizzata. - memory_id
str: identificativo stabile fornito dal chiamante opzionale per questa riga di memoria. - metadati
dict[str, Any] | None: metadati facoltativi da rendere persistenti con la memoria memorizzata. - timestamp
str | None: indicatore orario facoltativo da salvare sulla memoria. Rappresenta quando è stata creata la memoria. Se omesso oNone, il negozio utilizza l'ora corrente. Quandottl_anchorèTimeToLiveAnchor.TIMESTAMP, gli indicatori orari ISO-8601 senza un fuso orario vengono considerati come UTC. - ttl_days
int | None: durata Time To Live opzionale in giorni. Omettere questo argomento per utilizzare la durata Time To Live predefinita dello schema. PassareNoneper utilizzareMemoryRetentionConfig.max_ttl_daysquando la configurazione di conservazione ne imposta una o per memorizzare una memoria non in scadenza quando non lo è. I valori superiori aMemoryRetentionConfig.max_ttl_daysvengono bloccati al massimo con un'avvertenza. - ttl_anchor
TimeToLiveAnchor: ancoraggio Time To Live opzionale. UtilizzareTimeToLiveAnchor.CREATED_ATper l'ora di creazione del database oTimeToLiveAnchor.TIMESTAMPper l'indicatore orario della memoria. Gli indicatori orari ISO-8601 senza un fuso orario vengono trattati come UTC. - **store_kwargs (Qualsiasi): opzioni di scrittura specifiche dell'area di memorizzazione inoltrate al backing store.
- content
- Restituzioni: identificativo del record di memoria inserito.
- Tipo restituito: str
Esempi
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
memory_id = client.add_memory("User likes pizza", memory_id="mem-1")
memory_id
'mem-1'
metodo add_memory_async (asincrono)
Aggiungere un record di memoria al client in modo asincrono.
- Parametri:
- content
str: contenuto di testo da memorizzare come memoria. - memory_type
Literal['memory', 'guideline', 'fact', 'preference'] | ~oracleagentmemory._notset._NotSetMarker: categoria di memoria da memorizzare. I valori supportati sono"memory","fact","guideline"e"preference". Se omesso, il contenuto viene memorizzato come"memory"generale. - user_id
str: identificativo utente opzionale da associare alla memoria. - agent_id
str: identificativo dell'agente facoltativo da associare alla memoria. - thread_id
str: identificativo di thread facoltativo da associare alla memoria. - memory_id
str: identificativo stabile fornito dal chiamante opzionale. Se omesso, i negozi ne generano uno. - metadati
dict[str, Any] | None: metadati facoltativi da rendere persistenti con la riga di memoria. - timestamp
str | None: indicatore orario facoltativo da salvare sulla memoria. Rappresenta quando è stata creata la memoria. Se omesso oNone, il negozio utilizza l'ora corrente. - ttl_days
int | None: durata Time To Live opzionale in giorni. Omettere questo argomento per utilizzare la durata Time To Live predefinita dello schema. PassareNoneper memorizzare una memoria che non ha scadenza. - ttl_anchor
TimeToLiveAnchor: ancoraggio Time To Live opzionale. UtilizzareTimeToLiveAnchor.CREATED_ATper l'ora di creazione del database oTimeToLiveAnchor.TIMESTAMPper l'indicatore orario della memoria. - **store_kwargs (Qualsiasi): opzioni di scrittura specifiche dell'implementazione inoltrate al backing store.
- content
- Restituzioni: identificativo del record di memoria inserito.
- Tipo restituito: str
metodo add_user
Aggiungere un record profilo utente al negozio.
- Parametri:
- user_id
str: identificativo utente. - informazioni
str: informazioni in formato libero sull'utente. - metadata
dict[str, Any] | None: mapping dei metadati facoltativo memorizzato nella riga del profilo utente.
- user_id
- Restituzioni: identificativo del profilo utente memorizzato.
- Tipo restituito: str
Note
I record del profilo utente vengono memorizzati nell'area di memorizzazione a livello di client e sono intenzionalmente senza ambito. L'identificativo del record restituito è lo stesso identificativo pubblico utilizzato dall'applicazione come user_id.
Esempi
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_user(
"u1",
"Prefers concise answers.",
metadata={"source": "crm"},
)
'u1'
metodo close
Chiudere il componente di memoria dell'agente.
La chiusura interrompe l'accettazione del nuovo lavoro di estrazione in background e attende il completamento dell'estrazione della memoria in background in sospeso fino al timeout configurato. Se il timeout scade, close() restituisce anche se alcuni lavori di estrazione in background sono ancora incompiuti. Il metodo è idempotente.
- Parametri: timeout
float | None: numero massimo facoltativo di secondi di attesa per il completamento del lavoro di estrazione in background accettato. L'impostazione predefinita è300. PassareNoneper attendere indefinitamente. - Tipo restituito: nessuna
Esempi
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
schema_policy=SchemaPolicy.CREATE_IF_NECESSARY,
memory_extraction_config=MemoryExtractionConfig(extract_memories=False),
)
client.close()
metodo close_async (asincrono)
Chiudere in modo asincrono il componente memoria agente.
Questo metodo segue lo stesso funzionamento di spegnimento di close(). Se il timeout scade, può essere restituito mentre il lavoro di estrazione in background è ancora in esecuzione.
- Parametri: timeout
float | None: numero massimo facoltativo di secondi di attesa per il completamento del lavoro di estrazione in background accettato. L'impostazione predefinita è300. PassareNoneper attendere indefinitamente. - Tipo restituito: nessuna
Esempi
await client.close_async()
metodo create_thread
Creare e registrare un thread.
- Parametri:
- thread_id
str: identificativo del thread. Se omesso, ne viene generato uno nuovo. - user_id
str: identificativo utente associato a questo record thread. Se omesso, ne viene generato uno nuovo. - agent_id
str: identificativo dell'agente associato a questo record thread. Se omesso, ne viene generato uno nuovo. - metadati
dict[str, Any] | None: metadati facoltativi simili a JSON resi persistenti con il thread di conversazione. - LLM
ILlm: sostituzione LLM opzionale per questo thread. Se omesso, viene utilizzato l'LLM a livello di client configurato al momento della costruzione. Per impostazione predefinita, il client o il thread devono fornire un LLM in modo che l'estrazione automatica della memoria possa essere eseguita. Impostarememory_extraction_config=MemoryExtractionConfig(extract_memories=False)qui o sul client per rinunciare a tale requisito. - max_message_token_length
int: dimensione massima dei messaggi in fase di prompt prima del troncamento o del riepilogo durante l'estrazione della memoria e gli aggiornamenti di riepilogo del contesto. Il contenuto del messaggio memorizzato rimane invariato. Se omesso, per impostazione predefinita vengono utilizzati i token15_000. - message_shortening_input_token_limit
int: la dimensione massima, nei token, dell'estratto del messaggio inviato all'LLM quando si accorciano le copie dei messaggi di prompt time di grandi dimensioni. Se omesso, per impostazione predefinita vengono utilizzati i token30_000. - memory_extraction_config
MemoryExtractionConfig: configurazione opzionale di estrazione della memoria per thread. I campi omessi ereditano dal componente di memoria dell'agente. La configurazione risolta viene memorizzata con il thread in modo che i caricamenti successivi preservino il comportamento in fase di creazione. - context_card_token_limit
int: budget token di input massimo per il prompt LLM utilizzato per creare l'elenco di riepilogo e argomenti inclusi nella scheda contesto. Se omesso, il valore predefinito è100_000. - context_card_type_search_concurrency
int: numero massimo di ricerche di record simili alla memoria da eseguire contemporaneamente durante la creazione di una scheda di contesto conmin_relevant_results_by_type. Se omesso, il valore predefinito è5. -
extract_memories
bool–Override per thread opzionale per l'estrazione automatica della memoria. Quando si utilizza
True, questo thread richiede un LLM in modo che l'estrazione automatica possa essere eseguita. Impostare suFalseper disabilitare l'estrazione automatica per questo thread e consentire il funzionamento senza un LLM. Se omesso, viene utilizzata l'impostazioneextract_memoriesa livello di client.Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
memory_extraction_window
int–Numero di messaggi recenti da includere durante l'estrazione della memoria. Impostare su
-1per eseguire un'estrazione per ogni chiamataadd_messagesutilizzando il batch completo dei nuovi messaggi aggiunti. Se omesso, il valore predefinito è-1.Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
context_summary_update_frequency
int–Frequenza degli aggiornamenti contesto-riepilogo. Impostare su
-1per eseguire un aggiornamento di riepilogo per ogni chiamataadd_messagesutilizzando il batch completo dei nuovi messaggi aggiunti. Se omesso, il valore predefinito è-1.Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
frequenza_estrazione_memoria
int:Frequenza degli aggiornamenti di estrazione della memoria. Impostare su
-1per eseguire un'estrazione per ogni chiamataadd_messagesutilizzando il batch completo dei nuovi messaggi aggiunti. Se omesso, il valore predefinito è-1.Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
memory_extraction_token_limit
int–Dimensione massima, in token, dei prompt LLM utilizzati per l'estrazione della memoria e l'esecuzione di aggiornamenti di riepilogo. Se omesso, il valore predefinito è
100_000.Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
memory_extraction_custom_instructions
str–Istruzioni personalizzate facoltative aggiunte al prompt del sistema di estrazione della memoria per questo thread. Se fornito, il valore risolto viene reso persistente con la configurazione runtime del thread.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
memory_extraction_inherit_message_metadata
bool | Sequence[str]–Override per thread facoltativo per i metadati copiati dai messaggi di origine nelle memorie estratte automaticamente.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
enable_context_summary
bool–Indica se mantenere un riepilogo del contesto in esecuzione per questo thread.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. - **kwarg (Qualsiasi): opzioni di thread aggiuntive specifiche dell'implementazione.
- thread_id
- Restituzioni: un'istanza
OracleThread. - Tipo restituito: OracleThread
- Aumenti: ValueError: se non è disponibile alcun LLM per l'estrazione automatica della memoria e il thread e il client non sono stati configurati con
memory_extraction_config=MemoryExtractionConfig(extract_memories=False).
Esempi
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
thread = client.create_thread(thread_id="c1", user_id="u1")
thread.thread_id
'c1'
metodo delete_agent
Eliminare un record profilo agente in base all'identificativo.
- Parametri:
- agent_id
str: identificativo dell'agente il cui profilo deve essere rimosso. - cascade
bool: quandoTrue(impostazione predefinita), elimina anche i record con ambito per questo agente. Ciò include l'eliminazione dei thread di proprietà stessi, i messaggi e i record simili alla memoria rimossi con tali thread e tutti i record rimanenti direttamente con ambito agente come messaggi, memorie, linee guida, fatti o preferenze. Questo cleanup con ambito viene ancora eseguito quando la riga corrispondente del profilo agente è già assente. Impostare suFalseper rimuovere solo il record del profilo.
- agent_id
- Restituzioni: numero di righe di profilo agente eliminate (
0o1). È possibile che sia ancora0quando le righe con ambito sono state rimosse durante il cleanup a catena. - Tipo restituito: int.
- Aumenti: TimeoutError: generato quando l'estrazione in background accettata in precedenza per i thread di proprietà già noti non termina prima del timeout di attesa dell'eliminazione interna.
Note
Le eliminazioni a catena vengono pianificate ed eseguite all'interno del backing store, pertanto l'eliminazione del profilo e tutte le eliminazioni figlio con ambito vengono eseguite in un'unica operazione negozio. Prima dell'esecuzione dell'eliminazione a catena, questo metodo attende l'estrazione in background precedente già accettata per i thread di proprietà noti in quel momento tramite questo componente di memoria dell'agente. Non attende l'accettazione del lavoro dopo l'inizio dell'attesa o l'avvio del lavoro da parte di un altro componente o processo di memoria agente. L'uso con ambito attore concorrente durante l'eliminazione non è supportato.
Esempi
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_agent("a-delete", "Support assistant")
'a-delete'
client.delete_agent("a-delete")
1
metodo delete_memory
Eliminare un record simile alla memoria (ad esempio, una memoria, un fatto, una preferenza o una linea guida) in base all'identificativo.
- Parametri: memory_id
str– identificativo della memoria. L'identificativo può fare riferimento a un record memorizzatomemory,guideline,factopreference. - Restituzioni: numero di righe simili alla memoria eliminate (
0o1). - Tipo restituito: int.
Esempi
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
memory_id = client.add_memory("Temporary memory", memory_id="mem-delete")
client.delete_memory(memory_id)
1
metodo delete_memory_async (asincrono)
Elimina in modo asincrono un record simile alla memoria (ad esempio, una memoria, un fatto, una preferenza o una linea guida) per identificativo.
- Parametri: memory_id
str: identificativo del record simile alla memoria da rimuovere. - Restituzioni: numero di record eliminati simili alla memoria.
- Tipo restituito: int.
metodo delete_thread
Elimina tutti i record associati a un identificativo thread.
- Parametri: thread_id
str: identificativo del thread da eliminare. - Restituzioni: numero di thread di conversazione eliminati (
0o1). - Tipo restituito: int.
- Aumenti: TimeoutError: generato quando l'estrazione in background accettata in precedenza per questo thread non termina prima del timeout di attesa dell'eliminazione interna.
Note
Utilizzare questa operazione quando è necessaria la rimozione completa della conservazione di un thread. L'area di memorizzazione di backup elimina il thread insieme ai messaggi con ambito thread associato, alle memorie permanenti e ai dati di recupero gestiti. Ciò è diverso da OracleThread.delete_message(), che rimuove solo il record di messaggio raw e non si applica alle memorie derivate create da tale messaggio. Prima di eliminare il thread, questo metodo attende l'estrazione in background precedente già accettata per tale thread tramite questo componente di memoria dell'agente. Non attende l'accettazione del lavoro in background dopo l'inizio dell'attesa o l'avvio del lavoro da parte di un altro componente o processo di memoria agente. L'uso concorrente dello stesso thread durante l'eliminazione non è supportato.
Esempi
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
thread = client.create_thread(thread_id="c-delete")
client.delete_thread(thread.thread_id)
1
metodo delete_user
Eliminare un record profilo utente in base all'identificativo.
- Parametri:
- user_id
str: identificativo utente il cui profilo deve essere rimosso. - cascade
bool: quandoTrue(impostazione predefinita), elimina anche i record con ambito per questo utente. Ciò include l'eliminazione dei thread di proprietà stessi, i messaggi e i record simili alla memoria rimossi con tali thread e qualsiasi record rimanente con ambito utente diretto come messaggi, memorie, linee guida, fatti o preferenze. Questo cleanup con ambito viene ancora eseguito quando la riga corrispondente del profilo utente è già assente. Impostare suFalseper rimuovere solo il record del profilo.
- user_id
- Restituzioni: numero di righe di profilo utente eliminate (
0o1). È possibile che sia ancora0quando le righe con ambito sono state rimosse durante il cleanup a catena. - Tipo restituito: int.
- Aumenti: TimeoutError: generato quando l'estrazione in background accettata in precedenza per i thread di proprietà già noti non termina prima del timeout di attesa dell'eliminazione interna.
Note
Le eliminazioni a catena vengono pianificate ed eseguite all'interno del backing store, pertanto l'eliminazione del profilo e tutte le eliminazioni figlio con ambito vengono eseguite in un'unica operazione negozio. Prima dell'esecuzione dell'eliminazione a catena, questo metodo attende l'estrazione in background precedente già accettata per i thread di proprietà noti in quel momento tramite questo componente di memoria dell'agente. Non attende l'accettazione del lavoro dopo l'inizio dell'attesa o l'avvio del lavoro da parte di un altro componente o processo di memoria agente. L'uso con ambito attore concorrente durante l'eliminazione non è supportato.
Esempi
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_user("u-delete", "Prefers concise answers.")
'u-delete'
client.delete_user("u-delete")
1
metodo get_thread
Recupera un thread creato in precedenza.
- Parametri:
- thread_id
str: identificativo utilizzato per la creazione del thread. - LLM
ILlm: sostituzione LLM opzionale per il thread riaperto. Se omesso, viene utilizzato l'LLM a livello di client configurato al momento della costruzione. - max_message_token_length
int: override facoltativo per la dimensione massima dei messaggi in fase di prompt prima del troncamento o del riepilogo durante l'estrazione della memoria e gli aggiornamenti di riepilogo del contesto. Il contenuto del messaggio memorizzato rimane invariato. - message_shortening_input_token_limit
int: override facoltativo per la dimensione massima, nei token, dell'estratto del messaggio inviato all'LLM quando si accorciano le copie dei messaggi di prompt time di grandi dimensioni. - memory_extraction_config
MemoryExtractionConfig: configurazione di estrazione raggruppata facoltativa per l'istanzaOracleThreadrestituita. I campi omessi ereditano dal componente di configurazione e memoria dell'agente del thread memorizzato. L'override si applica solo all'istanzaOracleThreadrestituita e non viene riscritta alla configurazione del thread di conversazione memorizzata. - context_card_token_limit
int: sostituzione facoltativa per l'istanzaOracleThreadrestituita. Imposta il budget token di input del prompt LLM utilizzato per creare il riepilogo e l'elenco di argomenti inclusi nella scheda contesto. - context_card_type_search_concurrency
int: sostituzione facoltativa per l'istanzaOracleThreadrestituita. Imposta il numero di ricerche di record simili alla memoria da eseguire contemporaneamente quando si crea una scheda di contesto conmin_relevant_results_by_type. -
extract_memories
bool–Override opzionale per l'estrazione automatica della memoria sul thread riaperto. Se omesso, viene utilizzata l'impostazione
extract_memoriesa livello di client.Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
memory_extraction_window
int–Override facoltativo per il numero di messaggi recenti utilizzati durante l'estrazione della memoria.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
context_summary_update_frequency
int–Override facoltativo per la frequenza degli aggiornamenti del riepilogo del contesto.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
frequenza_estrazione_memoria
int:Override facoltativo per la frequenza degli aggiornamenti dell'estrazione della memoria.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
memory_extraction_token_limit
int–Override facoltativo per la dimensione massima, in token, dei prompt LLM utilizzati per l'estrazione della memoria e l'esecuzione di aggiornamenti di riepilogo.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
memory_extraction_custom_instructions
str | None–Override facoltativo per le istruzioni di estrazione della memoria personalizzate. Il passaggio di
Nonecancella le istruzioni personalizzate a livello di thread per l'istanzaOracleThreadrestituita senza aggiornare la configurazione del thread di conversazione memorizzata; un valore predefinito a livello di client viene comunque applicato quando viene configurato.Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
memory_extraction_inherit_message_metadata
bool | Sequence[str]–Override facoltativo per i metadati copiati dai messaggi di origine nelle memorie estratte automaticamente. L'override si applica solo all'istanza
OracleThreadrestituita.Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
enable_context_summary
bool–Override facoltativo per indicare se il thread riaperto deve mantenere un riepilogo del contesto in esecuzione.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config.
- thread_id
- Restituzioni: un'istanza
OracleThreadricostruita dai metadati dell'area di memorizzazione. - Tipo restituito: OracleThread
- Solleva:
- KeyError: se l'ID thread è sconosciuto a questa istanza client.
- ValueError: se non è disponibile alcun LLM per l'estrazione automatica della memoria e il client non è stato configurato con
memory_extraction_config=MemoryExtractionConfig(extract_memories=False).
Note
Le sostituzioni esplicite per chiamata hanno la precedenza. Quando gli override runtime vengono omessi, i thread riaperti utilizzano la configurazione runtime persistente quando disponibile prima di tornare ai valori predefiniti dell'SDK.
Esempi
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
created = client.create_thread(thread_id="c1", user_id="u1")
loaded = client.get_thread("c1")
loaded.user_id
'u1'
metodo search
Cercare in modo sincrono i record pertinenti a un'interrogazione.
- Parametri:
- query
str: stringa di query in linguaggio naturale. - user_id
str | None: filtro dell'identificativo utente. Le ricerche del client OracleAgentMemory richiedono un ambito utente esplicito a meno che non venga fornito un ambitoscope. Passare un valoreuser_idconcreto per indirizzare l'utente oppure passareNoneper indirizzare solo i record utente con ambito non definito. - agent_id
str | None: filtro identificativo agente facoltativo. Ignorato quando viene fornitoscope. - thread_id
str | None: filtro identificativo thread facoltativo. Ignorato quando viene fornitoscope. - exact_user_match
bool: indica se la corrispondenza degli utenti deve essere rigorosa. Le ricerche del client OracleAgentMemory richiedono la corrispondenza esatta dell'utente e rifiutanoFalse. Ignorato quando viene fornitoscope. - exact_agent_match
bool: indica se la corrispondenza degli agenti deve essere rigorosa. Ignorato quando viene fornitoscope. - exact_thread_match
bool: indica se la corrispondenza dei thread deve essere rigorosa. Ignorato quando viene fornitoscope. - max_results
int: numero massimo facoltativo di risultati da restituire. Se fornito, deve essere almeno1. Se si omette questo argomento, viene utilizzato il valore predefinito10. Questo è un limite superiore: la chiamata può restituire meno dimax_resultsrisultati quando i filtri sono troppo restrittivi, quando esistono meno record di corrispondenza non scaduti o a causa di un funzionamento di ricerca specifico dell'implementazione. - record_types
list[str]: elenco facoltativo di tipi di record da includere, ad esempio"memory"o"message". -
filtro_metadata
dict[str, Any] | None:Mapping facoltativo del filtro dei metadati utilizzato come filtro aggiuntivo dopo il filtro dell'ambito e del tipo di record. Le voci in
metadata_filtersono combinate con la semantica AND. Le voci il cui valore non è un dizionario operatore a livello di campo utilizzano la semantica di corrispondenza esatta: la chiave richiesta deve esistere nei metadati dei record memorizzati. I dizionari nidificati corrispondono in modo ricorsivo agli oggetti metadati nidificati. I valori scalari e di elenco devono corrispondere esattamente; anche l'ordine e la lunghezza dell'elenco devono corrispondere. Omettere questo argomento o passareNoneper eseguire la ricerca senza filtrare i metadati. Ad esempio,metadata_filter={"source": "profile_import"}per un campo scalare,metadata_filter={"prefs": {"category": "travel"}}per un campo nidificato emetadata_filter={"tags": ["survey", "travel"]}per una corrispondenza esatta dell'elenco. Combina le condizioni per richiederle tutte:metadata_filter={ "source": "profile_import", "prefs": {"category": "travel"}, "tags": ["survey", "travel"], }Per eseguire il test dell'appartenenza all'array, utilizzare un dizionario operatore a livello di campo.
"$array_contains"corrisponde a un valore o a tutti i valori di un elenco."$array_contains_any"corrisponde ad almeno un valore di un elenco."$not"nega un'altra espressione a livello di campo nello stesso campo, incluso un dizionario operatore o un valore di corrispondenza esatta raw. Le espressioni negative corrispondono quando l'espressione positiva non riesce, inclusi i campi mancanti; l'appartenenza all'array negata corrisponde anche ai campi non array:metadata_filter={ "source": "profile_import", "tags": { "$array_contains": "travel", "$not": {"$array_contains": "archived"}, }, } - ambito
SearchScope: ambito di ricerca predefinito facoltativo. Fornirescopeo l'identificativo esplicito e gli argomenti di corrispondenza esatta, non entrambi. Le ricerche del client OracleAgentMemory richiedono che l'ambito risolto includa unuser_idesplicito conexact_user_match=True. Utilizzareuser_id=Noneper indirizzare solo i record utente con ambito non definito.
- query
- Restituzioni: risultati della ricerca ordinati in base alla minore rilevanza. L'elenco può contenere meno di
max_resultsvoci. - Tipo restituito: list[SearchResult]
- Soluzioni: ValueError: se
scopeviene combinato con un identificativo esplicito o con argomenti di corrispondenza esatta, semax_resultsè minore di1, semetadata_filternon è né un dizionario néNoneo se l'implementazione rifiuta l'ambito di ricerca del client risolto. Le ricerche del client OracleAgentMemory rifiutano l'ambito utente omesso e rifiutanoexact_user_match=False.
Note
I valori espliciti dell'ambito None seguono ancora le regole di corrispondenza esatta risolte: exact_*_match=False lascia la dimensione non vincolata, mentre exact_*_match=True corrisponde solo ai record senza ambito su tale dimensione.
metodo search_async (asincrono)
Cercare in modo asincrono i record pertinenti a un'interrogazione.
- Parametri:
- query
str: stringa di query in linguaggio naturale. - user_id
str | None: filtro dell'identificativo utente. Le ricerche del client OracleAgentMemory richiedono un ambito utente esplicito a meno che non venga fornito un ambitoscope. Passare un valoreuser_idconcreto per indirizzare l'utente oppure passareNoneper indirizzare solo i record utente con ambito non definito. - agent_id
str | None: filtro identificativo agente facoltativo. Ignorato quando viene fornitoscope. - thread_id
str | None: filtro identificativo thread facoltativo. Ignorato quando viene fornitoscope. - exact_user_match
bool: indica se la corrispondenza degli utenti deve essere rigorosa. Le ricerche del client OracleAgentMemory richiedono la corrispondenza esatta dell'utente e rifiutanoFalse. Ignorato quando viene fornitoscope. - exact_agent_match
bool: indica se la corrispondenza degli agenti deve essere rigorosa. Ignorato quando viene fornitoscope. - exact_thread_match
bool: indica se la corrispondenza dei thread deve essere rigorosa. Ignorato quando viene fornitoscope. - max_results
int: numero massimo facoltativo di risultati da restituire. Se fornito, deve essere almeno1. Se si omette questo argomento, viene utilizzato il valore predefinito10. - record_types
list[str]: elenco facoltativo di tipi di record da includere, ad esempio"memory"o"message". -
filtro_metadata
dict[str, Any] | None:Mapping facoltativo del filtro dei metadati utilizzato come filtro aggiuntivo dopo il filtro dell'ambito e del tipo di record. Le voci in
metadata_filtersono combinate con la semantica AND. Le voci il cui valore non è un dizionario operatore a livello di campo utilizzano la semantica di corrispondenza esatta: la chiave richiesta deve esistere nei metadati dei record memorizzati. I dizionari nidificati corrispondono in modo ricorsivo agli oggetti metadati nidificati. I valori scalari e di elenco devono corrispondere esattamente; anche l'ordine e la lunghezza dell'elenco devono corrispondere. Omettere questo argomento o passareNoneper eseguire la ricerca senza filtrare i metadati. Ad esempio,metadata_filter={"source": "profile_import"}per un campo scalare,metadata_filter={"prefs": {"category": "travel"}}per un campo nidificato emetadata_filter={"tags": ["survey", "travel"]}per una corrispondenza esatta dell'elenco. Combina le condizioni per richiederle tutte:metadata_filter={ "source": "profile_import", "prefs": {"category": "travel"}, "tags": ["survey", "travel"], }Per eseguire il test dell'appartenenza all'array, utilizzare un dizionario operatore a livello di campo.
"$array_contains"corrisponde a un valore o a tutti i valori di un elenco."$array_contains_any"corrisponde ad almeno un valore di un elenco."$not"nega un'altra espressione a livello di campo nello stesso campo, incluso un dizionario operatore o un valore di corrispondenza esatta raw. Le espressioni negative corrispondono quando l'espressione positiva non riesce, inclusi i campi mancanti; l'appartenenza all'array negata corrisponde anche ai campi non array:metadata_filter={ "source": "profile_import", "tags": { "$array_contains": "travel", "$not": {"$array_contains": "archived"}, }, } - ambito
SearchScope: ambito di ricerca predefinito facoltativo. Fornirescopeo l'identificativo esplicito e gli argomenti di corrispondenza esatta, non entrambi. Le ricerche del client OracleAgentMemory richiedono che l'ambito risolto includa unuser_idesplicito conexact_user_match=True. Utilizzareuser_id=Noneper indirizzare solo i record utente con ambito non definito.
- query
- Restituzioni: risultati della ricerca ordinati in base alla minore rilevanza.
- Tipo restituito: list[SearchResult]
- Soluzioni: ValueError: se
scopeviene combinato con un identificativo esplicito o con argomenti di corrispondenza esatta, semax_resultsè minore di1, semetadata_filternon è né un dizionario néNoneo se l'implementazione rifiuta l'ambito di ricerca del client risolto. Le ricerche del client OracleAgentMemory rifiutano l'ambito utente omesso e rifiutanoexact_user_match=False.
Note
I valori espliciti dell'ambito None seguono ancora le regole di corrispondenza esatta risolte: exact_*_match=False lascia la dimensione non vincolata, mentre exact_*_match=True corrisponde solo ai record senza ambito su tale dimensione.
metodo update_memory
Aggiorna un record memorizzato come memoria in base all'identificativo.
- Parametri:
- memory_id
str: identificativo del record simile alla memoria da aggiornare. - content
str: contenuto sostitutivo opzionale. Fornire una stringa per sostituire il contenuto memorizzato. Se omesso, il contenuto memorizzato viene conservato. Il passaggio diNonenon è supportato; ometterecontentper mantenere il valore corrente oppure utilizzaredelete_memory()per rimuovere il record. - metadata
dict[str, Any] | None: mapping dei metadati di sostituzione facoltativo. Se omesso, i metadati memorizzati vengono conservati. Se fornita, sostituisce l'oggetto metadati memorizzato. Questa API non unisce in modo approfondito i metadati. - timestamp
str | None: nuovo indicatore orario facoltativo per questa memoria. Rappresenta quando è stata creata la memoria. Se omesso, l'indicatore orario memorizzato viene conservato. PassareNoneper cancellare l'indicatore orario salvato e utilizzare l'ora di creazione del record nel negozio. Quandottl_anchorèTimeToLiveAnchor.TIMESTAMP, gli indicatori orari ISO-8601 senza un fuso orario vengono considerati come UTC. - ttl_days
int | None: aggiornamento della scadenza facoltativo in giorni. Omettere questo argomento per lasciare invariata la scadenza corrente a meno che non venga specificatottl_anchor. PassareNoneper utilizzareMemoryRetentionConfig.max_ttl_daysquando la configurazione di conservazione ne imposta una o per cancellare la scadenza quando non è impostata. I valori superiori aMemoryRetentionConfig.max_ttl_daysvengono bloccati al massimo con un'avvertenza. Le memorie scadute non sono disponibili per questa API client e non possono essere aggiornate. - ttl_anchor
TimeToLiveAnchor: ancoraggio Time To Live opzionale per un aggiornamento della scadenza. UtilizzareTimeToLiveAnchor.CREATED_ATper l'ora di creazione della memoria oTimeToLiveAnchor.TIMESTAMPper la sostituzionetimestampfornita nello stesso aggiornamento oppure l'indicatore orario dell'evento memorizzato quandotimestampviene omesso. Se si specificattl_anchorsenzattl_days, viene utilizzata la durata Time To Live predefinita dello schema. Quandottl_anchorviene omesso durante un aggiornamento, il client utilizzaTimeToLiveAnchor.CREATED_AT. Gli indicatori orari ISO-8601 senza un fuso orario vengono trattati come UTC. - **kwargs (Qualsiasi) – gli argomenti con parole chiave impreviste vengono rifiutati.
- memory_id
- Restituzioni: identificativo del record aggiornato simile alla memoria.
- Tipo restituito: str
Note
I campi omessi vengono conservati dal record memorizzato. L'ambito memorizzato rimane invariato. La sostituzione dei metadati è una sostituzione dell'intero oggetto, non un'unione JSON ricorsiva.
metodo update_memory_async (asincrono)
Aggiorna in modo asincrono un record memorizzato simile alla memoria in base all'identificativo.
- Parametri:
- memory_id
str: identificativo del record simile alla memoria da aggiornare. - content
str: contenuto sostitutivo opzionale. Fornire una stringa per sostituire il contenuto memorizzato. Se omesso, il contenuto memorizzato viene conservato. Il passaggio diNonenon è supportato; ometterecontentper mantenere il valore corrente oppure utilizzaredelete_memory()per rimuovere il record. - metadata
dict[str, Any] | None: mapping dei metadati di sostituzione facoltativo. Se omesso, i metadati memorizzati vengono conservati. Se fornita, sostituisce l'oggetto metadati memorizzato. Questa API non unisce in modo approfondito i metadati. - timestamp
str | None: nuovo indicatore orario facoltativo per questa memoria. Rappresenta quando è stata creata la memoria. Se omesso, l'indicatore orario memorizzato viene conservato. PassareNoneper cancellare l'indicatore orario salvato e utilizzare l'ora di creazione del record nel negozio. - ttl_days
int | None: aggiornamento della scadenza facoltativo in giorni. Omettere questo argomento insieme attl_anchorper lasciare invariata la scadenza corrente. PassareNoneper cancellare la scadenza. - ttl_anchor
TimeToLiveAnchor: ancoraggio Time To Live opzionale per un aggiornamento della scadenza. UtilizzareTimeToLiveAnchor.CREATED_ATper l'ora di creazione della memoria oTimeToLiveAnchor.TIMESTAMPper la sostituzionetimestampfornita nello stesso aggiornamento oppure l'indicatore orario dell'evento memorizzato quandotimestampviene omesso. Se si specificattl_anchorsenzattl_days, viene utilizzata la durata Time To Live predefinita dello schema. Quandottl_anchorviene omesso durante un aggiornamento, le aree di memorizzazione utilizzanoTimeToLiveAnchor.CREATED_AT. - **kwargs (Qualsiasi) – gli argomenti con parole chiave impreviste vengono rifiutati.
- memory_id
- Restituzioni: identificativo del record aggiornato simile alla memoria.
- Tipo restituito: str
Note
I campi omessi rimangono invariati. Aggiornamenti dell'ambito non supportati da questa API. La sostituzione dei metadati è una sostituzione dell'intero oggetto, non un'unione JSON ricorsiva.
metodo update_thread
Rendi persistenti i metadati del thread e gli aggiornamenti della configurazione di runtime permanente.
- Parametri:
- thread_id
str: identificativo del thread da aggiornare. - metadati
dict[str, Any] | None: aggiornamento facoltativo dei metadati per il thread di conversazione. Se omesso, i metadati memorizzati rimangono invariati. Se si passa aNone, i metadati memorizzati vengono cancellati in modo esplicito. Quando viene fornito un mapping, sostituisce l'oggetto metadati memorizzato. - LLM
ILlm: sostituzione LLM opzionale per l'istanzaOracleThreadrestituita. Non è persistente, ma partecipa alle stesse regole di convalida diget_threadecreate_thread. -
extract_memories
bool–Override durevole facoltativo per l'estrazione automatica della memoria.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. - max_message_token_length
int: sostituzione permanente opzionale per la dimensione massima dei messaggi in fase di prompt utilizzati durante l'estrazione e il riepilogo. - message_shortening_input_token_limit
int: sostituzione permanente opzionale per la dimensione massima dell'estratto inviata all'LLM in caso di riduzione dei messaggi di grandi dimensioni. -
memory_extraction_window
int–Override durevole facoltativo per la dimensione della finestra di estrazione.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
context_summary_update_frequency
int–Override permanente facoltativo per il numero di messaggi aggiunti che attivano un aggiornamento di riepilogo del contesto.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
frequenza_estrazione_memoria
int:Override permanente facoltativo per il numero di messaggi aggiunti che attiva l'estrazione automatica della memoria.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
memory_extraction_token_limit
int–Override permanente opzionale per i budget prompt estrazione e riepilogo in esecuzione.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. - context_card_token_limit
int: sostituzione permanente facoltativa per il budget token di input del prompt LLM utilizzato per creare l'elenco di riepilogo e argomenti incluso nella scheda contesto. -
enable_context_summary
bool–Override permanente facoltativo per indicare se i riepiloghi del contesto in esecuzione rimangono abilitati.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
memory_extraction_custom_instructions
str | None–Istruzioni personalizzate durevoli facoltative aggiunte al prompt del sistema di estrazione della memoria. Se si passa a
None, vengono cancellate tutte le istruzioni personalizzate memorizzate a livello di thread; un valore predefinito a livello di client viene comunque applicato quando viene configurato.Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. -
memory_extraction_inherit_message_metadata
bool | Sequence[str]–Override permanente facoltativo per i metadati copiati dai messaggi di origine nelle memorie estratte automaticamente.
Informazioni: non più valido dalla versione 26.6.0: questo parametro non è più valido nella versione 26.6.0 e verrà rimosso nella versione 27.1. Utilizzare invece
memory_extraction_config. - memory_extraction_config
MemoryExtractionConfig: aggiornamento opzionale della configurazione di estrazione permanente raggruppata. I campi forniti vengono scritti nella configurazione del thread memorizzato e utilizzati dalle istanzeOracleThreadcaricate in seguito e dai processi di estrazione in background successivi. - **kwarg (Qualsiasi) – Opzioni aggiuntive specifiche per l'implementazione.
OracleAgentMemoryattualmente rifiuta argomenti con parole chiave sconosciute.
- thread_id
- Restituzioni: istanza
OracleThreadaggiornata che riflette i metadati persistenti e la configurazione runtime. - Tipo restituito: OracleThread
- Solleva:
- KeyError: se l'ID thread è sconosciuto a questa istanza client.
- ValueError: se non è disponibile alcun LLM per l'estrazione automatica della memoria dopo la risoluzione della configurazione runtime effettiva.
Note
La configurazione runtime viene risolta dal thread di conversazione memorizzato più le sostituzioni esplicite passate a questa chiamata, facendo corrispondere la semantica get_thread prima di rendere persistente il risultato. I metadati omessi e gli aggiornamenti di configurazione runtime vengono risolti dai dati memorizzati, non da alcuna istanza OracleThread caricata in precedenza e vengono riscritti solo gli aggiornamenti dei metadati forniti in modo esplicito o le sostituzioni durature di configurazione runtime. La sostituzione dei metadati è una sostituzione dell'intero oggetto, non un'unione JSON ricorsiva. La proprietà del thread non è modificabile tramite questa API, pertanto user_id e agent_id rimangono invariati. Lo stato di runtime modificabile, ad esempio i contatori di estrazione, non viene modificato.
Esempi
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
updated = client.update_thread(
"c1",
metadata={"flags": {"vip": True}},
message_shortening_input_token_limit=12_000,
)
updated.message_shortening_input_token_limit
12000
metodo wait_for_memory_extraction
Attendere l'avvio dell'estrazione della memoria di background precedente da parte di questo client.
Questo metodo attende l'estrazione in background già avviata tramite questa istanza OracleAgentMemory, in tutti i thread di proprietà di questo componente di memoria dell'agente. Non attende l'avvio dell'estrazione dopo l'inizio di questa attesa, l'estrazione avviata da un altro componente di memoria agente o l'esecuzione dell'estrazione in un altro processo. Conteggio degli errori di estrazione completati per questa attesa.
- Parametri: timeout
float | None: numero massimo facoltativo di secondi di attesa. L'impostazione predefinita è300. PassareNoneper attendere che il componente di memoria dell'agente non abbia un'estrazione in sospeso. - Aumenti: TimeoutError: viene generato quando il timeout scade prima del termine dell'estrazione in background precedente.
- Tipo restituito: nessuna
Esempi
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
memory_extraction_config=MemoryExtractionConfig(extract_memories=False),
)
client.wait_for_memory_extraction(timeout=10)
metodo wait_for_memory_extraction_async (asincrono)
Attendere in modo asincrono l'estrazione della memoria in background precedente.
Questo metodo segue lo stesso funzionamento di wait_for_memory_extraction().
- Parametri: timeout
float | None: numero massimo facoltativo di secondi di attesa. L'impostazione predefinita è300. PassareNoneper attendere indefinitamente. - Aumenti: TimeoutError: viene generato quando il timeout scade prima del termine dell'estrazione in background precedente.
- Tipo restituito: nessuna
Esempi
await client.wait_for_memory_extraction_async(timeout=10)
Estrazione memoria
classe oracleagentmemory.core.MemoryExtractionConfig
Basi: object
Impostazioni raggruppate per l'estrazione automatica della memoria.
Passare questo oggetto a OracleAgentMemory, create_thread, get_thread o update_thread per configurare l'estrazione automatica. I campi omessi ereditano dall'impostazione più ampia successiva. Ad esempio, un thread creato senza memory_extraction_frequency utilizza il componente di memoria dell'agente predefinito e il valore predefinito del componente torna al valore predefinito dell'SDK.
- Parametri:
- memory_extraction_window
int: finestra di messaggio recente utilizzata per i prompt di estrazione.-1indica che il prompt di estrazione utilizza solo i nuovi messaggi aggiunti. Omettere questo campo per ereditare il valore. - context_summary_update_frequency
int: numero di messaggi aggiunti tra l'esecuzione di aggiornamenti di riepilogo del contesto. Valori inferiori all'aggiornamento0dopo ogni aggiunta. Omettere questo campo per ereditare il valore. - memory_extraction_frequency
int: numero di messaggi aggiunti tra le esecuzioni di estrazione della memoria. Valori inferiori all'estrazione0dopo ogni aggiunta. Omettere questo campo per ereditare il valore. - memory_extraction_token_limit
int: budget token di input per i prompt di estrazione e riepilogo. I valori inferiori a1disabilitano il limite budget prompt. Omettere questo campo per ereditare il valore. - extract_memories
bool: indica se l'estrazione automatica della memoria è abilitata. Impostare suFalseper disabilitare l'estrazione automatica e consentire il funzionamento senza un LLM di estrazione. Omettere questo campo per ereditare il valore. - enable_context_summary
bool: indica se i prompt di estrazione gestiscono e utilizzano un riepilogo del contesto in esecuzione. Omettere questo campo per ereditare il valore. - memory_extraction_custom_instructions
str | None: istruzioni opzionali per la chiamata aggiunte al prompt del sistema di estrazione. PassareNonesuupdate_threadper cancellare le istruzioni memorizzate a livello di thread. Omettere questo campo per ereditare il valore. - memory_extraction_inherit_message_metadata
bool | collections.abc.Sequence[str]: controlla i metadati copiati dai messaggi di origine nelle memorie estratte.Truecopia tutti i metadati del messaggio di origine,Falsenon ne copia nessuno e una sequenza copia solo le chiavi di metadati di livello superiore corrispondenti. Omettere questo campo per ereditare il valore. - extraction_mode
oracleagentmemory.core.extractors.memoryextractionconfig.MemoryExtractionMode:MemoryExtractionMode.INLINEesegue l'estrazione automatica prima che venga restituito il metodo di scrittura.MemoryExtractionMode.BACKGROUNDrestituisce dopo l'esito positivo della scrittura raw e il lavoro di estrazione dovuto viene tentato in background. In modalità background, i ricordi derivati possono apparire in un secondo momento, possono essere temporaneamente obsoleti o non possono mai essere scritti se il lavoro in background non può essere completato. Ad esempio,update_message()può essere restituito prima che una lettura successiva della memoria rifletta il contenuto del messaggio aggiornato. Omettere questo campo per ereditare il valore. Se non è configurato alcun valore più ampio, la modalità effettiva èINLINE. - background_extraction_queue_full_behavior
oracleagentmemory.core.extractors.memoryextractionconfig.BackgroundExtractionQueueFullBehavior: in modalità background, controlla cosa accade quando l'estrazione automatica non può fare la coda immediatamente.DROPregistra un avviso e continua senza attendere.WAIT_THEN_DROPattende la capacità della coda fino al timeout configurato, quindi registra un avviso e continua.WAIT_THEN_RAISEattende la capacità della coda fino al timeout configurato, quindi sollevaTimeoutErrordopo la riuscita della scrittura raw. Omettere questo campo per ereditare il valore. Se non è configurato alcun valore più ampio, il valore predefinito effettivo èDROP. - background_extraction_queue_put_timeout_seconds
float: in modalità background, il numero massimo di secondi di estrazione automatica attende la capacità della coda quandobackground_extraction_queue_full_behaviorèWAIT_THEN_DROPoWAIT_THEN_RAISE. Omettere questo campo per ereditare il valore. Se non è configurato alcun valore più ampio, il valore predefinito effettivo è300.0secondi.
- memory_extraction_window
Esempi
from oracleagentmemory.core import MemoryExtractionConfig, MemoryExtractionMode
config = MemoryExtractionConfig(
extract_memories=True,
extraction_mode=MemoryExtractionMode.BACKGROUND,
)
classe oracleagentmemory.core.MemoryExtractionMode
Basi: str, Enum
Controlla quando viene eseguito il lavoro di estrazione automatica della memoria.
INLINE esegue l'estrazione automatica prima che venga restituito il metodo di scrittura. BACKGROUND restituisce dopo l'esito positivo della scrittura raw e il lavoro di estrazione dovuto viene tentato in background. L'estrazione dello sfondo è lo sforzo migliore: i ricordi derivati possono apparire più tardi o non possono mai essere scritti se il lavoro in background non può essere completato.
SFONDO = 'SFONDO'
Torna dopo la persistenza del messaggio raw ed esegui l'estrazione con il massimo sforzo nel lavoro in background.
IN LINEA = "IN LINEA"
Eseguire l'estrazione prima che venga restituito il metodo di scrittura.
classe oracleagentmemory.core.BackgroundExtractionQueueFullBehavior
Basi: str, Enum
Controlla cosa accade quando l'estrazione in background non può fare la coda in tempo.
ELIMINA = 'ELIMINA'
Registrare un avviso e continuare immediatamente quando la capacità della coda non è disponibile.
WAIT_THEN_DROP = 'WAIT_THEN_DROP'
Attendere la capacità della coda fino al timeout configurato, quindi registrare un'avvertenza e continuare.
WAIT_THEN_RAISE = 'WAIT_THEN_RAISE'
Attendere la capacità della coda fino al timeout configurato, quindi attivare TimeoutError.