Sessions d’agent gérées
Bêta
Cette fonctionnalité est en version bêta.
Les sessions d'agent gérées offrent à vos agents un magasin durable et indépendant du framework pour l'état de session : l'état qu'un agent ou un framework conserve pour une seule interaction. Il s'agit le plus souvent de l'historique de conversation, c'est-à-dire la transcription ordonnée des messages, des appels d'outils et des résultats qu'un agent lit au start d'un tour et auxquels il ajoute des éléments au fur et à mesure de son exécution. Il peut également s'agir de tout autre état persistant qu'un framework conserve pour l'interaction, tel qu'un graphe LangGraph. Databricks le stocke dans Lakebase et gère le stockage pour vous, de sorte que vous n'avez pas à créer ni à exploiter la base de données.
Durant la version préliminaire, vous êtes facturé pour l'instance Lakebase sous-jacente qui stocke vos sessions. Aucun frais supplémentaire ne s'applique pour les sessions d'agent gérées elles-mêmes. Les tarifs sont susceptibles d'être modifiés au fil de l'évolution de la version préliminaire.
Utilisez des sessions managées lorsque vous souhaitez :
- Conservez l'historique des conversations d'un agent pour qu'il survive aux redémarrages et puisse être repris ultérieurement.
- Reconstruct full context (including tool calls and reasoning) on a follow-up message.
- Répertoriez, reprenez et créez des Branch à partir d’historiques de conversations directement depuis votre propre interface utilisateur.
Les sessions gérées contiennent l’état d’une seule interaction (état à court terme, au sein de la session). Pour une mémoire durable à long terme qui persiste au-delà des conversations, utilisez la mémoire d’agent gérée.
Fonctionnement des sessions gérées
Les sessions gérées comportent trois niveaux :
-
Un session store est le conteneur délimité par le workspace pour les sessions d’un agent. La création d’un store entraîne le provisionnement automatique du stockage Lakebase sous-jacent. Vous choisissez un élément
session_store_nameunique pour le workspace. -
Une session correspond à une interaction durable (généralement un fil de discussion) au sein d’un magasin. Une session est identifiée par :
actor_id(requis) : propriétaire de la session, tel qu’un utilisateur final ou un autre agent. Elle groupe toutes les sessions d’un même sujet afin de vous permettre de les répertorier et de les filtrer ensemble. Lorsque vous créez une application par utilisateur, définissezactor_idsur l’ID de l’utilisateur (par exemple, l’identité vérifiée de l’utilisateur final provenant de l’authentification de votre application) afin que les sessions de chaque utilisateur restent regroupées. Définissez-le à partir d’un contexte d’application de confiance, et jamais à partir d’une valeur fournie par le modèle ou l’utilisateur.session_id(optionnel) : un identifiant choisi par l’appelant pour l’interaction. Le service en génère un si vous l’omettez.parent_session_id(facultatif) : lie une session à celle à partir de laquelle elle a été ramifiée, pour représenter des conversations ramifiées.
-
Un élément de session correspond à une entrée dans l'historique ordonné d'une session. Chaque élément contient une valeur
dataopaque et compatible JSON, telle qu'un message, un appel d'outil, un résultat d'outil ou un bloc de raisonnement. Databricks attribue à chaque élément unitem_idet uncreate_time, et n'inspecte ni ne valide son contenu. Les éléments sont immuables après leur ajout.
Le service maintient un ordre déterministe pour les éléments d’une session et autorise chaque opération sur le magasin de sessions.
Conditions requises
- Python 3.10 ou version ultérieure , pour utiliser Mason (le client Python et le CLI de Databricks pour les APIs d’agents), qu’utilisent les exemples ci-dessous. Vous pouvez également appeler l’ API REST directement depuis n’importe quel langage, sans nécessiter Python.
Commencer
Ces exemples configurent des sessions gérées pour un agent de support : ils créent un magasin de sessions, start une session pour une conversation, ajoutent les tours de la conversation et relisent l'historique lors d'une requête ultérieure. Choisissez le client qui correspond à votre projet.
- Mason
- REST API
Mason est le client Python et la CLI de Databricks pour les APIs d’agent. Il s’authentifie avec le WorkspaceClient du SDK Databricks.
-
Installer Mason :
Bashpip install databricks-mason -
Créez un magasin de sessions, puis start une session pour une conversation.
actor_idcorrespond au propriétaire de la conversation ; le paramètre facultatifsession_ididentifie de manière unique cette conversation :Pythonfrom databricks.sdk import WorkspaceClient
from databricks_mason import MasonClient
mason = MasonClient(WorkspaceClient())
session_store = mason.session_stores.create("support-agent-sessions")
session = session_store.add(actor_id="customer-123", session_id="case-456") -
Ajoutez les tours de conversation au fur et à mesure de l’exécution de l’agent. Chaque élément est une valeur compatible avec JSON :
Pythonsession.append_items(
[
{"type": "message", "role": "user", "content": "I need help with my cluster."},
{"type": "message", "role": "assistant", "content": "Let's take a look."},
]
) -
Lors d’une requête de suivi, rechargez la session et lisez son historique complet afin de reconstituer le contexte :
Pythonsession = session_store.get("case-456")
# Request chronological order; list_items defaults to newest-first and auto-pages.
history = [item.data for item in session.list_items(order_by="create_time asc")]
Les clients appellent l’API REST sous /api/2.0/agents/session-stores. Appelez-la directement pour les langages autres que Python.
-
Générer un jeton OAuth avec la CLI Databricks :
Bashdatabricks auth login --host ${DATABRICKS_HOST}
export DATABRICKS_TOKEN=$(databricks auth token | jq -r .access_token) -
Créer un magasin de sessions pour votre agent :
Bashcurl -X POST "https://${DATABRICKS_HOST}/api/2.0/agents/session-stores?session_store_name=support-agent-sessions" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" -H "Content-Type: application/json" \
-d '{"description": "Support agent conversation history"}' -
Start une session pour une conversation.
actor_idappartient à cette personne ;session_ididentifie de manière unique cette conversation :Bashcurl -X POST "https://${DATABRICKS_HOST}/api/2.0/agents/session-stores/support-agent-sessions/sessions?session_id=case-456" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" -H "Content-Type: application/json" \
-d '{"actor_id": "customer-123"}' -
Ajouter un tour de conversation lors de l’exécution de l’agent :
Bashcurl -X POST "https://${DATABRICKS_HOST}/api/2.0/agents/session-stores/support-agent-sessions/sessions/case-456/items:append" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" -H "Content-Type: application/json" \
-d '{"items": [{"data": {"type": "message", "role": "user", "content": "I need help with my cluster."}}]}' -
Lisez l’historique dans l’ordre chronologique pour reconstituer le contexte :
Bashcurl -G "https://${DATABRICKS_HOST}/api/2.0/agents/session-stores/support-agent-sessions/sessions/case-456/items" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" --data-urlencode "order_by=create_time asc"
Les clients prennent également en charge la suppression de l'élément le plus récent, l'effacement des éléments d'une session et la bifurcation d'une conversation en une copie indépendante (éventuellement jusqu'à un élément spécifique). La suppression d'une session qui comporte des sessions enfants nécessite une option de forçage pour propager la suppression en cascade (par exemple, session.delete(force=True)).
Associer la session d'un framework d'agents à des sessions gérées
Les frameworks d'agents tels que l'OpenAI Agents SDK et le Claude Agent SDK lisent l'historique des conversations au start d'une exécution et ajoutent de nouveaux éléments à la fin. Le magasin de sessions correspond directement à ce modèle :
Opération du framework | Appel du magasin de sessions |
|---|---|
Lire l’historique |
|
Ajouter des éléments de tour |
|
Annuler le dernier élément |
|
Effacer le fil de discussion |
|
Portée et accès
Les sessions gérées stockent les éléments d’une session sous forme de valeurs opaques compatibles avec JSON : le service conserve et renvoie ce que votre agent ou application de framework y ajoute, sans l’interpréter. Il n'ajoute pas de ressources de contrôle d'exécution telles que des exécutions, des points de contrôle ou des approbations en tant que concepts de premier ordre, bien qu'un framework qui sérialise un tel état puisse le conserver sous forme d'éléments.
Session stores are workspace-scoped, and access is authorized at the store level. Les champs actor_id et metadata prennent uniquement en charge le regroupement et le filtrage ; ils n’accordent et ne restreignent pas l’accès. Set the actor_id from trusted application context rather than a model- or user-supplied value.
Pour permettre à un autre principal, tel que le Service Principal de votre agent, d’utiliser un magasin, accordez-lui l’accès à l’aide de l’opération grant-permission du magasin (session_store.grant_permission(principal_id) dans Mason).
Les sessions gérées et la mémoire gérée sont indépendantes. La suppression d’une session ou d’un magasin de sessions ne supprime pas la mémoire conservée dans un magasin de mémoire.