Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Questa funzionalità è in versione beta. Gli amministratori dell'area di lavoro possono controllare l'accesso a questa funzionalità dalla pagina Anteprime . Vedere Gestire le anteprime di Azure Databricks.
La memoria dell'agente gestito offre agli agenti di intelligenza artificiale la memoria a lungo termine tra le conversazioni. Azure Databricks gestisce l'infrastruttura e isola le memorie di ogni ambito, quindi non è necessario gestire direttamente l'archiviazione o il partizionamento.
Con la memoria gestita, gli agenti possono:
- Ricordare le preferenze utente, le decisioni passate e il contesto accumulato tra le conversazioni.
- Proteggi queste conoscenze con le funzionalità di governance di Unity Catalog.
- Condividere la memoria tra agenti e progetti.
- Migliorano la loro precisione ed efficienza nel tempo.
Requisiti
- Un'area di lavoro di Databricks con Il catalogo Unity abilitato.
- Il privilegio
CREATE MEMORY STOREsullo schema padre per creare archivi in memoria.
Funzionamento della memoria gestita
La memoria gestita ha due livelli:
- Un archivio di memorie è un oggetto proteggibile di Unity Catalog che funge da contenitore per gli elementi di memoria. Un archivio di memoria eredita la stessa governance, il controllo di accesso e la derivazione di qualsiasi altro asset del catalogo Unity.
- Un elemento di memoria è un singolo contenuto archiviato all'interno di un archivio di memoria. Ogni voce è identificata da un ambito e da un percorso. L'ambito determina a chi appartengono i ricordi associati a una voce e il percorso organizza le voci all'interno di un ambito, in modo simile al percorso di un file (ad esempio,
/memories/preferences.md).
Scope
L'ambito di applicazione indica come la memoria gestita mantenga separate le memorie di un agente tra utenti o gruppi diversi. Ogni elemento di memoria appartiene esattamente a un solo ambito e una ricerca restituisce solo gli elementi presenti nell'ambito interrogato.
-
Memoria personale: Usare un ID utente finale come ambito in modo che ogni utente ottenga la propria memoria privata, ad esempio le preferenze e le decisioni passate. Gli utenti vedono solo i propri elementi. Il valore di ambito
user_clientrecupera automaticamente l'ID dell'utente finale. - Conoscenza organizzativa: Usare una chiave condivisa, ad esempio un'organizzazione o un ID team, per archiviare le informazioni su cui qualsiasi utente dell'agente può trarre informazioni, ad esempio fatti aziendali, glossari e procedure consigliate.
Un singolo agente può usare entrambi contemporaneamente: leggere dall'ambito personale di un utente e un ambito aziendale condiviso nella stessa conversazione. È scope obbligatorio per ogni richiesta di immissione di memoria.
Avvertimento
L'ambito è il limite di isolamento tra gli utenti. Configurare l'ambito nel codice attendibile e non consentire mai al modello di impostarlo. L'entità servizio dell'app può leggere tutti gli ambiti.
Introduzione alle competenze di memoria gestita
Il modo più semplice per aggiungere memoria gestita a un agente è l'abilità managed-memory Claude Code. La skill gestisce tutta la configurazione necessaria per te e funziona sia con l’SDK OpenAI Agents che con LangGraph.
Aggiungi la skill al tuo progetto in uno di questi due modi:
Inizia da un modello
La funzionalità è inclusa nei modelli di app Databricks. Crea un nuovo agente da uno dei modelli per agenti e trova l'abilità in .claude/skills/managed-memory/.
Clonare il repository dei modelli:
git clone https://github.com/databricks/app-templates.gitSfogliare
app-templates, selezionare un modello di agente da cui iniziare. Ad esempio, per usare il modello OpenAI Agents SDK:cd app-templates/agent-openai-agents-sdkNote
Per i modelli di app "avanzati", dopo la distribuzione, è necessario concedere all'entità servizio app i privilegi di Lakebase Postgres; in caso contrario, la configurazione della sessione restituirà un
502errore.Una volta che la competenza è presente nel progetto, descrivere ciò che si vuole e l'assistente alla scrittura del codice si occupa del resto:
Tip
Add Databricks managed long-term memory to my agent.
Aggiungere la competenza a un progetto esistente
Se si dispone già di un progetto di agente, aggiungere la competenza.
Crea la directory delle competenze se non esiste:
mkdir -p .claude/skills/managed-memoryScarica il file
SKILL.mddallamanaged-memorydirectory della skill e salvalo in.claude/skills/managed-memory/.Una volta che la competenza è presente nel progetto, descrivere ciò che si vuole e l'assistente alla scrittura del codice si occupa del resto:
Tip
Add Databricks managed long-term memory to my agent.
Creare e usare manualmente un archivio memoria
Questa sezione illustra come creare e usare un archivio memoria senza la managed-memory competenza Claude Code.
Nell'esempio seguente viene impostata la memoria gestita per un agente del supporto clienti che archivia le preferenze di un utente e le recupera in una conversazione successiva.
Generare un token OAuth usando l'interfaccia della riga di comando di Databricks per chiamare le API:
databricks auth login --host ${DATABRICKS_HOST} databricks auth tokenCreare un archivio memoria per memorizzare i ricordi dell'agente:
curl -X POST "https://${DATABRICKS_HOST}/api/2.1/unity-catalog/memory-stores" \ -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "name": "support_agent_memory", "catalog_name": "main", "schema_name": "default", "description": "Long-term memory for the customer support agent" }'Scrivere una voce nella memoria dopo che l'agente ha appreso qualcosa riguardo a un utente.
scopeassegna la voce a un singolo utente. Usa il campocontentsper il testo completo della memoria e ildescriptioncome breve riepilogo che migliora il recupero:curl -X POST \ "https://${DATABRICKS_HOST}/api/2.1/unity-catalog/memory-stores/main.default.support_agent_memory/entries?scope=user-123" \ -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "path": "/memories/preferences.md", "contents": "Prefers email communication. Timezone: PST. Has an Enterprise subscription.", "description": "User 123 communication preferences and account details" }'Cerca gli elementi di memoria relativi a quell'utente nel corso di una conversazione successiva per recuperare ciò che l'agente ha appreso:
curl -X POST \ "https://${DATABRICKS_HOST}/api/2.1/unity-catalog/memory-stores/main.default.support_agent_memory/entries:search" \ -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "scope": "user-123", "query": "communication preferences" }'
Per l'API REST completa, inclusi endpoint, campi di richiesta e campi di risposta, vedere Informazioni di riferimento sull'API di memoria.
Aggiungi memoria a un agente tramite le conversazioni
Il flusso di lavoro REST precedente chiama direttamente l'archivio di memoria e le API di immissione. Quando si crea un agente su un endpoint di serving del modello di Azure Databricks, collega invece un archivio di memoria a una conversazione con il client compatibile con OpenAI nell’SDK databricks-openai.
Una conversazione è uno stato di conversazione compatibile con OpenAI, ovvero la cronologia di esecuzione dei messaggi e delle chiamate agli strumenti, supportata da un archivio di memoria e aggiunta a un singolo ambito. Riutilizza la stessa conversazione in più richieste per dare all'agente memoria degli scambi precedenti.
Associare un archivio di memoria esistente e un ambito a una nuova conversazione.
memory_store.nameè il nome a tre livelli dell'archivio dati escopesuddivide lo stato della conversazione, in genere in base all'utente finale:from databricks.sdk import WorkspaceClient from databricks_openai import DatabricksOpenAI workspace_client = WorkspaceClient() user_id = str(workspace_client.current_user.me().id) client = DatabricksOpenAI(workspace_client=workspace_client, use_ai_gateway=True) conversation = client.conversations.create( extra_body={ "memory_store": {"name": "main.default.support_agent_memory"}, "scope": {"kind": "user", "value": user_id}, }, )Passa l'ID della conversazione a
responses.create. L'agente legge e scrive lo stato della conversazione nell'archivio di memoria associato all'interno di tale ambito:response = client.responses.create( model="databricks-gpt-5-2", conversation=conversation.id, input=[{"type": "message", "role": "user", "content": "What is the average NYC taxi price?"}], stream=True, ) for event in response: if event.type == "response.output_text.delta": print(event.delta, end="", flush=True)Riutilizzare lo stesso ID conversazione nelle richieste successive in modo che l'agente ricordi i turni precedenti. Non creare una nuova conversazione per turno:
followup = client.responses.create( model="databricks-gpt-5-2", conversation=conversation.id, input=[{"type": "message", "role": "user", "content": "Restate the average taxi price you found, and how it was calculated."}], stream=True, ) for event in followup: if event.type == "response.output_text.delta": print(event.delta, end="", flush=True)
Per gli endpoint di conversazione e i campi della richiesta, vedere API di conversazione.
Controllo di accesso alla memoria
Gli store di memoria sono oggetti proteggibili di Unity Catalog. I privilegi seguenti controllano l'accesso:
| Privilege | Si applica a | Description |
|---|---|---|
CREATE MEMORY STORE |
Schema principale | Creare nuovi archivi di memoria in uno schema. |
READ MEMORY STORE |
Memoria di archiviazione | Leggi i metadati di un archivio di memoria e le relative voci. |
WRITE MEMORY STORE |
Memoria di archiviazione | Creare, aggiornare ed eliminare voci di memoria in un archivio. |
MANAGE |
Memoria di archiviazione | Aggiornare o eliminare l'archivio di memoria stesso. Concedere autorizzazioni ad altri utenti. |
USE SCHEMA |
Schema principale | Elencare gli archivi di memoria in uno schema. |
Implementazione della memoria a breve termine
Le API di immissione della memoria forniscono memoria a lungo termine come strumenti da usare per l'agente. Per assegnare all'agente la memoria a breve termine gestita in una sessione, Databricks consiglia di collegare l'archivio memoria a una conversazione. È anche possibile:
- Mantieni la memoria di sessione del framework dell'agente, ad esempio il parametro OpenAI
session=o un checkpointer di LangGraph. - Usa la memoria dell'agente autogestita come archivio della cronologia delle conversazioni.
Raccomandazioni sulla sicurezza
Azure Databricks fornisce l'archivio regolamentato, la crittografia, le primitive di isolamento e il audit trail. In qualità di sviluppatore di app, Databricks consiglia quanto segue:
- Usare il valore predefinito per ambito utente (
user_client) a meno che non si disponga di un motivo intenzionale per partizionare in modo diverso (ad esempio, per progetto o memoria per account). - Concedi il privilegio minimo: solo il service principal dell'agente necessita di
WRITE MEMORY STORE. ConcedereREAD MEMORY STOREin modo ristretto ed evitare ampie concessioni a utenti umani o gruppi di grandi dimensioni. - Proteggi la credenziale del service principal dell'app: è la chiave del data plane dell'archivio. Considerarlo come qualsiasi credenziale di servizio di alto valore: usare token di breve durata, evitare di registrarlo e aggiungere difese SSRF all'app.
Limitations
- Le voci di memoria consentono solo la memorizzazione a lungo termine. Per la differenza tra memoria a breve termine e a lungo termine, vedere Memoria a breve termine e memoria a lungo termine.
- Gli archivi di memoria e le voci vengono creati e gestiti solo tramite l'API REST del catalogo Unity; non è disponibile Python SDK per queste API. Per usare un archivio di memoria da un agente, connetterlo a una conversazione con il client compatibile con OpenAI. Vedi Aggiungere memoria a un agente con conversazioni.