Sessions d’agents
Bêta
Cette fonctionnalité est en version bêta.
Les sessions d’agent donnent à vos agents un stockage durable et indépendant du framework pour l’état de la session : l’état qu’un agent ou un framework conserve pour une interaction. Il s’agit le plus souvent de l’historique de la conversation, la transcription ordonnée des messages, les appels d’outils et les résultats qu’un agent lit au start d’un tour et ajoute lorsqu’il s’exécute. Il peut également s'agir de tout autre état persistant dans un framework pour l'interaction, comme un graphe LangGraph. Databricks le stocke dans Lakebase et gère le stockage pour vous. Vous n'avez donc pas à créer ni à gérer la base de données.
Pendant la période d’évaluation, vous êtes facturé pour l’instance Lakebase sous-jacente qui stocke vos sessions. Aucun frais supplémentaire ne s'applique aux sessions de l'agent. Les tarifs sont sujets à modification au fur et à mesure de l’évolution de la version d’évaluation.
Utilisez les sessions d’agent lorsque vous voulez :
- 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 d’agent conservent l’état d’une interaction unique (état à court terme, dans la session). Pour une mémoire à long terme qui persiste entre les conversations, utilisez la mémoire de l’agent.
Conditions requises
- Installez Python 3.10 ou version supérieure pour utiliser le SDK AgentKit. Le SDK AgentKit est le client Python Databricks pour les APIs d’agent qu’utilisent les exemples ci-dessous. Vous pouvez également appeler l’ API REST directement depuis n’importe quel langage, sans nécessiter Python.
Fonctionnement des sessions d’agent
Les sessions d'agent ont trois niveaux :
-
Un magasin de session est un conteneur au niveau du workspace pour les sessions d'un agent. La création d'un magasin provisionne automatiquement le stockage Lakebase sous-jacent. Vous choisissez un ID de magasin unique au 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) : fait de la session un enfant d’une autre session dans le magasin, comme la conversation d’un sous-agent. Définissez-le lorsque vous créez la session.
-
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.
Commencer
Ces exemples configurent des sessions d’agent pour un agent de support : ils créent un magasin de sessions, start une session pour une conversation, ajoutent les tours de parole de la conversation et lisent l’historique lors d’une demande ultérieure. Choisissez le client qui convient à votre projet.
- AgentKit SDK
- REST API
Le SDK AgentKit est le client Python Databricks pour les API d’agent, distribué dans le package databricks-agentbricks. Il s’authentifie auprès de WorkspaceClient du SDK Databricks.
-
Installez le SDK AgentKit :
Bashpip install databricks-agentbricks -
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 WorkspaceClientfrom databricks_agentkit import AgentKitClientclient = AgentKitClient(WorkspaceClient())session_store = client.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 demande de suivi, rechargez la session et consultez 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_id=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 création d’une copie indépendante d’une conversation (éventuellement jusqu’à un élément spécifique). Une session dérivée n’a pas de session parente, et la suppression de la session source ne la supprime pas. La suppression d’une session supprime toujours ses sessions enfants, et leurs éléments.
Prendre en charge une session de framework d'agent avec des sessions d'agent
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 d’agent stockent les éléments d’une session sous forme de valeurs opaques compatibles avec JSON : le service conserve et renvoie tout ce que votre agent ou application framework ajoute, sans l’interpréter. Il n’ajoute pas de ressources de contrôle d’exécution telles que les exécutions, les points de contrôle ou les approbations en tant que concepts de premier plan, bien qu’un framework qui sérialise un tel état puisse le conserver sous forme d’éléments.
Les stockages de session sont limités au workspace et l’accès est autorisé au niveau du stockage. Le contrôle d’accès au stockage couvre les sessions d’un stockage. N’importe quel utilisateur du workspace peut lister et obtenir les stockages de session, notamment leurs identifiants et leurs descriptions. Les champs actor_id et metadata prennent uniquement en charge le regroupement et le filtrage ; ils n’accordent pas ni ne restreignent l’accès. Définissez actor_id à partir du contexte de l'application approuvée au lieu d'une valeur fournie par l'utilisateur ou le modèle.
Pour permettre à un autre principal, comme le service principal de votre agent, d'utiliser un magasin, accordez-lui l'accès avec l'opération grant-permission du magasin (session_store.grant_permission(principal_id) dans le SDK AgentKit). Seul le créateur du magasin ou un administrateur du workspace peut accorder l'accès.
Les sessions d’agent et la mémoire des agents sont indépendantes. La suppression d’une session ou d’un magasin de session ne supprime pas la mémoire conservée dans un magasin de mémoire. Pour construire une mémoire à long terme à partir des sessions dans un magasin, créez un pipeline de mémoire.