Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważna
Ta funkcja jest dostępna w wersji beta. Administratorzy obszaru roboczego mogą kontrolować dostęp do tej funkcji ze strony Podglądy . Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.
Zarządzana pamięć agenta zapewnia agentom pamięć długoterminową w różnych rozmowach. Azure Databricks uruchamia infrastrukturę i izoluje pamięć każdego zakresu, więc nie musisz samodzielnie zarządzać magazynem ani partycjonowaniem.
Dzięki pamięci zarządzanej agenci mogą wykonywać następujące czynności:
- Pamiętaj preferencje użytkownika, wcześniejsze decyzje i skumulowany kontekst między konwersacjami.
- Zabezpiecz tę wiedzę za pomocą mechanizmów zarządzania w Unity Catalog.
- Udostępnianie pamięci między agentami i projektami.
- Zwiększ ich dokładność i wydajność z czasem.
Requirements
- Obszar roboczy usługi Databricks z włączoną funkcją Unity Catalog.
- Uprawnienie
CREATE MEMORY STOREdo tworzenia magazynów pamięci w schemacie nadrzędnym.
Jak działa pamięć zarządzana
Pamięć zarządzana ma dwa poziomy:
- Magazyn pamięci to obiekt zabezpieczany w Unity Catalog, który pełni funkcję kontenera dla wpisów pamięci. Magazyn pamięci dziedziczy ten sam nadzór, kontrolę dostępu i pochodzenie danych jak każdy inny zasób w Unity Catalog.
-
Wpis pamięci to pojedynczy element zawartości przechowywany w magazynie pamięci. Każdy wpis jest identyfikowany przez zakres i ścieżkę. Zakres określa, do których wspomnień należy wpis, a ścieżka organizuje wpisy w zakresie, podobnie jak ścieżka pliku (na przykład
/memories/preferences.md).
Scope
Zakres to sposób, w jaki sprawiasz, że pamięć jest prywatna dla jednego użytkownika lub udostępniana w grupie. Twoja aplikacja ustawia zakres przy każdym odczytie i zapisie, a wyszukiwanie zwraca tylko wpisy z odpowiadającym zakresem. Wybierz strategię odpowiadającą temu, co Twój agent powinien zapamiętać:
-
Pamięć prywatna dla każdego użytkownika: Ustaw zakres na zweryfikowaną tożsamość użytkownika końcowego. Każdy użytkownik otrzymuje własną partycję i widzi tylko swoje wpisy. Wartość
user_clientustala za Ciebie identyfikator użytkownika końcowego.- Przykład: Agent wsparcia zapamiętuje preferencje komunikacyjne jednego użytkownika oraz wcześniejsze zgłoszenia.
-
Wspólna pamięć dla grupy: Ustaw zakres na stały wybrany przez siebie klucz, na przykład organizację, zespół lub identyfikator projektu. Każdy użytkownik czyta i zapisuje te same wspomnienia.
- Przykład: Agent zespołu pamięta wspólny słownik terminów firmy i wewnętrznych polityk.
-
Pamięć podzielona przez coś innego: Buduj zakres na podstawie własnych wartości, takich jak identyfikator tenanta lub kompozyt.
user_id:project- Przykład: Aplikacja wielodostępna utrzymuje pamięć każdego klienta oddzielnie albo pamięć pojedynczego użytkownika jest izolowana dla każdego projektu.
Pojedynczy agent może łączyć strategie w jednej rozmowie. Na przykład może odczytać prywatną pamięć użytkownika oraz wspólną pamięć zespołu w tym samym żądaniu.
Ustaw zakres w kodzie aplikacji na podstawie zaufanego kontekstu wywołującego, którym żądanie nie może manipulować: zweryfikowanej tożsamości użytkownika końcowego z tokenu OBO dla pamięci przypisanej do użytkownika albo zaufanej dzierżawy, zespołu lub klucza projektu dla pamięci współdzielonej. Nigdy nie pozwól, by modelka go wybrała. Jeśli strategia zakresu zależy od tożsamości użytkownika końcowego, odrzucaj żądania, które jej nie posiadają, zamiast wracać do wspólnego zakresu.
Umiejętnośćmanaged-memory prowadzi cię przez ten układ.
Scope rozdziela wspomnienia, ale nie daje dostępu do sklepu. Aby go otworzyć, wywołujący nadal musi mieć uprawnienie READ MEMORY STORE lub WRITE MEMORY STORE. Zobacz Kontrola dostępu do pamięci.
Warning
Zakres to granica izolacji między użytkownikami, ale nie jest kontrolą dostępu. Właściciel usługi aplikacji może odczytać każdy zakres, więc odpowiednio chroń swoje poświadczenia.
Co agent zapisuje i pamięta
Pamięć zarządzana zapewnia magazyn pamięci oraz API do odczytu i zapisu wpisów. Twoja aplikacja kontroluje, co agent zapisuje, kiedy pobiera pamięć i jak wykorzystuje wyniki.
Zdefiniuj to zachowanie w pokrecie systemowym agenta: poinstruuj agenta, jakie trwałe informacje ma zapisać i kiedy je odzyskać. Funkcja managed-memory i szablony przechowują ten prompt systemowy w stałej o nazwie MEMORY_INSTRUCTIONS. Zakres jest konfigurowany osobno w zaufanym kodzie aplikacji i nigdy nie jest wybierany przez model.
Dopasuj sformułowanie do swojej strategii zakresu. Poniżej znajduje się przykład strategii dla poszczególnych użytkowników:
You have durable, cross-session memory about whoever (or whatever) this conversation is scoped to. Use it deliberately, not by reflex.
Recall whenever the answer is about the user or calls for personalized information — anything that might draw on preferences, decisions, or workflows they've shared before — and you don't already have it from this conversation; also list once before saving, to find the right existing topic. Don't tell the user you don't know their preferences without checking — list_memories first. Skip memory only when the answer truly doesn't depend on who's asking (general knowledge, math, coding) or you already have what you need. A `[has_contents]` entry has a body to get_memory; one without is fully captured by its description. Open a memory with get_memory before you state its specifics, and never assert a fact that isn't stored — if nothing relevant is stored, just answer without it. Don't re-list what you've already seen this turn.
Save only what will still matter in a future, unrelated conversation — a stable preference, fact, decision, or ongoing project the user actually stated or decided. Don't save your own suggestions or guesses, passing chatter, secrets, or anything scoped to this chat ("for now", a one-off label).
- Write each memory so it stands on its own out of context, under one broad, stable /memories/... topic per subject with the specifics inside it.
- Check the list first and update_memory an existing topic instead of minting a near-duplicate.
- For a very broad question that touches many memories, summarize from the list's descriptions; reserve get_memory for the specific entry you actually need.
- If the user's info changes or contradicts what's stored, update or replace it rather than keeping both — but don't rewrite a memory that already says the same thing.
- delete_memory what's stale.
- Briefly tell the user whenever you save, update, or delete.
Zacznij od umiejętności zarządzania pamięcią
Najprostszym sposobem na dodanie agentowi pamięci zarządzanej jest funkcja managed-memory Claude Code. Ta funkcja zajmuje się całą konfiguracją za Ciebie i współpracuje zarówno z pakietem SDK OpenAI Agents, jak i z LangGraph.
Uzyskaj umiejętności w projekcie na jeden z dwóch sposobów:
Rozpoczynanie od szablonu
Umiejętność jest dostarczana w ramach szablonów aplikacji Databricks. Utwórz nowego agenta na podstawie jednego z szablonów agenta, znajdź umiejętność pod .claude/skills/managed-memory/.
Sklonuj repozytorium szablonów:
git clone https://github.com/databricks/app-templates.gitPrzejdź do
app-templates, wybierz szablon agenta, od którego chcesz zacząć. Aby na przykład użyć szablonu zestawu SDK agentów OpenAI:cd app-templates/agent-openai-agents-sdkNote
W przypadku „zaawansowanych” szablonów aplikacji po wdrożeniu należy nadać nazwie głównej usługi aplikacji uprawnienia w Lakebase Postgres, w przeciwnym razie inicjowanie sesji zwróci błąd
502.Gdy umiejętność znajduje się w projekcie, opisz, co chcesz, a asystent kodowania zajmuje się resztą:
Tip
Add Databricks managed long-term memory to my agent.
Dodawanie umiejętności do istniejącego projektu
Jeśli masz już projekt agenta, dodaj do niego umiejętności.
Utwórz katalog umiejętności, jeśli nie istnieje:
mkdir -p .claude/skills/managed-memoryPobierz plik
SKILL.mdz katalogu umiejętnościmanaged-memoryi zapisz go w.claude/skills/managed-memory/.Gdy umiejętność znajduje się w projekcie, opisz, co chcesz, a asystent kodowania zajmuje się resztą:
Tip
Add Databricks managed long-term memory to my agent.
Ręczne tworzenie i używanie magazynu pamięci
W tej sekcji pokazano, jak utworzyć i używać magazynu pamięci bez managed-memory umiejętności Claude Code.
W poniższym przykładzie skonfigurowano pamięć zarządzaną dla agenta pomocy technicznej klienta, który przechowuje preferencje użytkownika i pobiera je w późniejszej konwersacji.
Wygeneruj token OAuth za pomocą Databricks CLI, aby wywoływać interfejsy API:
databricks auth login --host ${DATABRICKS_HOST} databricks auth tokenUtwórz magazyn pamięci do przechowywania pamięci agenta:
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" }'Napisz wpis pamięci po tym, jak agent nauczy się czegoś o użytkowniku.
scopeprzypisuje wpis do jednego użytkownika. Użyj polacontentsdla pełnej treści pamięci, a poladescriptionjako krótkiego podsumowania, które usprawnia wyszukiwanie: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" }'Wyszukaj wpisy w pamięci dotyczące tego użytkownika w późniejszej rozmowie, aby odzyskać informacje, których nauczył się agent:
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" }'
Pełny opis interfejsu REST API, w tym endpointy oraz pola żądań i odpowiedzi, znajdziesz w dokumencie Dokumentacja interfejsu Memory API.
Dodaj pamięć do agenta za pomocą rozmów
Powyższy przepływ pracy REST wywołuje bezpośrednio magazyn pamięci i interfejsy API wprowadzania. Zamiast tego podczas tworzenia agenta w punkcie końcowym obsługi modeli Azure Databricks połącz magazyn pamięci z rozmową za pomocą klienta zgodnego z OpenAI w pakiecie SDK databricks-openai.
Konwersacja to zgodny z OpenAI stan konwersacji — bieżąca historia wiadomości i wywołań narzędzi — oparty na magazynie pamięci i przypisany do jednego zakresu. Używaj tej samej rozmowy w kolejnych żądaniach, aby agent pamiętał wcześniejsze wypowiedzi.
Wiązanie istniejącego magazynu pamięci i zakresu z nową konwersacją.
memory_store.nameto trójpoziomowa nazwa magazynu danych, ascopedzieli stan konwersacji, zwykle według użytkownika końcowego: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}, }, )Przekaż identyfikator rozmowy do
responses.create. Agent odczytuje i zapisuje stan konwersacji w przypisanym magazynie pamięci w obrębie tego zakresu: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)Używaj tego samego identyfikatora konwersacji w kolejnych żądaniach, aby agent pamiętał wcześniejsze wypowiedzi. Nie twórz nowej rozmowy dla każdej tury:
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)
Aby zapoznać się z punktami końcowymi konwersacji i polami żądania, zobacz Interfejsy API konwersacji.
Kontrola dostępu do pamięci
Magazyny pamięci są obiektami zabezpieczalnymi w Unity Catalog. Następujące uprawnienia kontrolują dostęp:
| Przywilej | Dotyczy | Description |
|---|---|---|
CREATE MEMORY STORE |
Schemat nadrzędny | Utwórz nowe magazyny pamięci w ramach schematu. |
READ MEMORY STORE |
Magazyn pamięci | Odczytywanie metadanych magazynu pamięci i jego wpisów. |
WRITE MEMORY STORE |
Magazyn pamięci | Utwórz, zaktualizuj i usuń wpisy pamięci w repozytorium. |
MANAGE |
Magazyn pamięci | Zaktualizuj lub usuń sam magazyn pamięci. Udzielanie uprawnień innym użytkownikom. |
USE SCHEMA |
Schemat nadrzędny | Wyświetl magazyny danych w pamięci w schemacie. |
Implementowanie pamięci krótkoterminowej
Interfejsy API wprowadzania pamięci zapewniają długoterminową pamięć jako narzędzia do użycia przez agenta. Aby zapewnić agentowi zarządzaną pamięć krótkoterminową w sesji, Databricks zaleca powiązanie magazynu pamięci z rozmową. Możesz również wykonać następujące czynności:
- Zachowaj pamięć sesji platformy agenta, taką jak parametr OpenAI
session=lub program LangGraph checkpointer. - Użyj pamięci agenta zarządzanej samodzielnie jako magazynu historii konwersacji.
Zalecenia dotyczące zabezpieczeń
Azure Databricks zapewnia magazyn danych podlegający nadzorowi, szyfrowanie, mechanizmy izolacji i ścieżkę audytu. Jako deweloper aplikacji usługa Databricks zaleca następujące zalecenia:
- Użyj domyślnego zakresu dla poszczególnych użytkowników (
user_client), chyba że masz celowy powód, aby partycjonować inaczej (na przykład dla każdego projektu lub pamięci dla konta). - Udziel najniższych uprawnień: tylko jednostka usługi twojego agenta wymaga
WRITE MEMORY STORE. PrzyznawajREAD MEMORY STOREtylko w niezbędnym zakresie i unikaj przyznawania zbyt szerokich uprawnień użytkownikom lub dużym grupom. - Chroń poświadczenia nazwy głównej usługi App Service: to klucz do płaszczyzny danych magazynu. Traktuj je jak każde poświadczenie usługi o wysokiej wartości — używaj tokenów krótkotrwałych, unikaj rejestrowania go i dodawaj zabezpieczenia SSRF do aplikacji.
Limitations
- Wpisy w pamięci zapewniają wyłącznie pamięć długoterminową. Aby uzyskać różnicę między krótkoterminową i długoterminową pamięcią, zobacz Krótkoterminowa i długoterminowa pamięć.
- Magazyny pamięci i wpisy tworzy się i zarządza nimi wyłącznie za pośrednictwem interfejsu API REST usługi Unity Catalog; dla tych interfejsów API nie jest dostępny pakiet SDK dla języka Python. Aby użyć magazynu pamięci z agenta, połącz go z konwersacją z klientem zgodnym z programem OpenAI. Zobacz Dodawanie pamięci do agenta za pomocą konwersacji.