Sitzungen mit dem Agent-Entwicklungs-Kit verwalten
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Auf dieser Seite wird beschrieben, wie Sie einen ADK-Agenten (Agent Development Kit) mit Vertex AI Agent Engine-Sitzungen verbinden und verwaltete Sitzungen in der lokalen Umgebung und in der Produktionsumgebung verwenden.
Um auf Vertex AI Agent Engine-Sitzungen zuzugreifen, müssen Sie zuerst eine Vertex AI Agent Engine-Instanz erstellen. Sie müssen keinen Code bereitstellen, um Sitzungen zu verwenden. Ohne Codebereitstellung dauert das Erstellen einer Vertex AI Agent Engine-Instanz nur wenige Sekunden.
importvertexaifromvertexaiimportagent_engines# Create an agent engine instanceagent_engine=agent_engines.create()
ADK-Agent entwickeln
Folgen Sie der Anleitung im Agent Development Kit, um Ihren ADK-Agent zu erstellen. Alternativ können Sie den folgenden Code verwenden, um einen Agent zu erstellen, der einen Nutzer mit festen Begrüßungen begrüßt:
fromgoogleimportadkdefgreetings(query:str):"""Tool to greet user."""if'hello'inquery.lower():return{"greeting":"Hello, world"}else:return{"greeting":"Goodbye, world"}# Define an ADK agentroot_agent=adk.Agent(model="gemini-2.0-flash",name='my_agent',instruction="You are an Agent that greet users, always use greetings tool to respond.",tools=[greetings])
ADK-Runner einrichten
Die ADK-Laufzeit orchestriert die Ausführung Ihrer Agents, Tools und Callbacks sowie Aufrufe zum Lesen und Schreiben von Sitzungen. Initialisieren Sie den Runner mit VertexAiSessionService, um eine Verbindung zu Vertex AI Agent Engine-Sitzungen herzustellen.
fromgoogle.adk.sessionsimportVertexAiSessionServiceapp_name="AGENT_ENGINE_ID"user_id="USER_ID"# Create the ADK runner with VertexAiSessionServicesession_service=VertexAiSessionService("PROJECT_ID","LOCATION")runner=adk.Runner(agent=root_agent,app_name=app_name,session_service=session_service)# Helper method to send query to the runnerdefcall_agent(query,session_id,user_id):content=types.Content(role='user',parts=[types.Part(text=query)])events=runner.run(user_id=user_id,session_id=session_id,new_message=content)foreventinevents:ifevent.is_final_response():final_response=event.content.parts[0].textprint("Agent Response: ",final_response)
Ersetzen Sie Folgendes:
PROJECT_ID: Ihre Projekt-ID.
LOCATION: Ihre Region.
AGENT_ENGINE_ID: Die Ressourcen-ID einer Vertex AI Agent Engine-Instanz.
Bei bereitgestellten Agents wird die Ressourcen-ID als Umgebungsvariable GOOGLE_CLOUD_AGENT_ENGINE_ID aufgeführt.
Für lokale Agents können Sie die Ressourcen-ID mit agent_engine.name.split("/")[-1] abrufen.
USER_ID: Eine nicht leere eindeutige Kennung für den Nutzer mit einer maximalen Länge von 128 Zeichen.
Mit dem Agent interagieren
Nachdem Sie Ihren Agent definiert und Vertex AI Agent Engine-Sitzungen eingerichtet haben, können Sie mit Ihrem Agent interagieren, um zu prüfen, ob der Sitzungsverlauf und die Status beibehalten werden.
ADK-Benutzeroberfläche
Testen Sie Ihren Agenten mit der ADK-Benutzeroberfläche und stellen Sie mit der Befehlszeilenoption session_db_url eine Verbindung zur Vertex AI Agent Engine-Sitzung her:
agent_engine_id="AGENT_ENGINE_ID"adk web --session_db_url=agentengine://${agent_engine_id}# Sample output+-----------------------------------------------------------------------------+| ADK Web Server started || || For local testing, access at http://localhost:8000. |+-----------------------------------------------------------------------------+INFO: Application startup complete.INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
Python
Mit ADK-Python-Code können Sie Sitzungen und Status verwalten.
Sitzung erstellen und Agent abfragen
Verwenden Sie den folgenden Code, um eine Sitzung zu erstellen und eine Anfrage an Ihren Agent zu senden:
Nachdem die Sitzung erstellt und an den Runner übergeben wurde, verwendet das ADK sie, um Ereignisse aus der aktuellen Interaktion zu speichern. Sie können auch eine vorherige Sitzung fortsetzen, indem Sie die ID für diese Sitzung angeben.
Vorhandene Sitzungen auflisten
Listet alle vorhandenen Sitzungen auf, die mit einer bestimmten User-ID verknüpft sind.
# List sessionsawaitsession_service.list_sessions(app_name=app_name,user_id=user_id)# ListSessionsResponse(session_ids=['1122334455', '9988776655'])
Sitzungsstatus verwalten
Status enthalten Informationen, die der Agent für eine Unterhaltung benötigt. Sie können beim Erstellen einer Sitzung einen Anfangszustand als Dictionary angeben:
# Create a session with statesession=awaitsession_service.create_session(app_name=app_name,user_id=user_id,state={'key':'value'})print(session.state['key'])# value
Wenn Sie den Sitzungsstatus außerhalb des Runners aktualisieren möchten, hängen Sie der Sitzung mit state_delta ein neues Ereignis an:
fromgoogle.adk.eventsimportEvent,EventActionsimporttime# Define state changesstate_changes={'key':'new_value'}# Create event with actionsactions_with_update=EventActions(state_delta=state_changes)system_event=Event(invocation_id="invocation_id",author="system",# Or 'agent', 'tool' etc.actions=actions_with_update,timestamp=time.time())# Append the eventawaitsession_service.append_event(session,system_event)# Check updated stateupdated_session=awaitsession_service.get_session(app_name=app_name,user_id=user_id,session_id=session.id)# State is updated to new valueprint(updated_session.state['key'])# new_value
Sitzung löschen
So löschen Sie eine bestimmte Sitzung, die mit einer Nutzer-ID verknüpft ist:
Nachdem Sie Ihren Agenten lokal getestet haben, können Sie ihn in der Produktion bereitstellen, indem Sie die Vertex AI Agent Engine-Instanz mit Parametern aktualisieren:
AGENT: Die Anwendung, die die Methode query / stream_query implementiert (z. B. AdkApp für einen ADK-Agent). Weitere Informationen finden Sie unter Überlegungen zur Bereitstellung.
Bereinigen
Wenn Sie alle in diesem Projekt verwendeten Ressourcen bereinigen möchten, können Sie die Vertex AI Agent Engine-Instanz zusammen mit den untergeordneten Ressourcen löschen:
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-08-25 (UTC)."],[],[],null,["# Manage sessions with Agent Development Kit\n\n| **Preview**\n|\n|\n| This feature is subject to the \"Pre-GA Offerings Terms\" in the General Service Terms section\n| of the [Service Specific Terms](/terms/service-terms#1).\n|\n| Pre-GA features are available \"as is\" and might have limited support.\n|\n| For more information, see the\n| [launch stage descriptions](/products#product-launch-stages).\n\nThis page describes how you can connect an Agent Development Kit (ADK) agent with Vertex AI Agent Engine Sessions and use managed sessions in the local and production environment.\n| **Note:** If you've already followed the instructions in [Develop an Agent Development Kit agent](/vertex-ai/generative-ai/docs/agent-engine/develop/adk), you don't need to follow this guide, since the `AdkApp` template is already connected to Vertex AI Agent Engine Sessions through `session_service`.\n\nBefore you begin\n----------------\n\nMake sure your environment is set up by following\nthe [Get the required roles](/vertex-ai/generative-ai/docs/agent-engine/set-up#get_the_required_roles) and [Authentication](/vertex-ai/generative-ai/docs/agent-engine/set-up#authentication) steps in [Set up your environment](/vertex-ai/generative-ai/docs/agent-engine/set-up).\n\nCreate a Vertex AI Agent Engine instance\n----------------------------------------\n\nTo access Vertex AI Agent Engine Sessions, you first need to create an Vertex AI Agent Engine instance. You don't need to deploy any code to start using Sessions. Without code deployment, creating an Vertex AI Agent Engine instance only takes a few seconds. \n\n import https://cloud.google.com/python/docs/reference/vertexai/latest/\n from vertexai import agent_engines\n\n # Create an agent engine instance\n agent_engine = agent_engines.create()\n\nDevelop your ADK agent\n----------------------\n\n| **Note:** Make sure you have installed ADK version **1.0.0** or later. This version is included in `google-cloud-aiplatform[adk,agent_engine]`.\n\nTo create your ADK agent, follow the instructions in [Agent Development Kit](https://google.github.io/adk-docs/), or use the following code to create an agent that greets a user with fixed greetings: \n\n from google import adk\n\n def greetings(query: str):\n \"\"\"Tool to greet user.\"\"\"\n if 'hello' in query.lower():\n return {\"greeting\": \"Hello, world\"}\n else:\n return {\"greeting\": \"Goodbye, world\"}\n\n # Define an ADK agent\n root_agent = adk.Agent(\n model=\"gemini-2.0-flash\",\n name='my_agent',\n instruction=\"You are an Agent that greet users, always use greetings tool to respond.\",\n tools=[greetings]\n )\n\nSet up the ADK runner\n---------------------\n\nThe [ADK Runtime](https://google.github.io/adk-docs/runtime/) orchestrates the execution of your agents, tools, and callbacks, and orchestrates calls to read and write sessions. Initialize the Runner with [`VertexAiSessionService`](https://google.github.io/adk-docs/sessions/session/#sessionservice-implementations), which connects with Vertex AI Agent Engine Sessions. \n\n from google.adk.sessions import VertexAiSessionService\n\n app_name=\"\u003cvar translate=\"no\"\u003eAGENT_ENGINE_ID\u003c/var\u003e\"\n user_id=\"\u003cvar translate=\"no\"\u003eUSER_ID\u003c/var\u003e\"\n\n # Create the ADK runner with VertexAiSessionService\n session_service = VertexAiSessionService(\n \"\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e\", \"\u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e\")\n runner = adk.Runner(\n agent=root_agent,\n app_name=app_name,\n session_service=session_service)\n\n # Helper method to send query to the runner\n def call_agent(query, session_id, user_id):\n content = types.Content(role='user', parts=[types.Part(text=query)])\n events = runner.run(\n user_id=user_id, session_id=session_id, new_message=content)\n\n for event in events:\n if event.is_final_response():\n final_response = event.content.parts[0].text\n print(\"Agent Response: \", final_response)\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e: Your project ID.\n\n- \u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e: Your region.\n\n- \u003cvar translate=\"no\"\u003eAGENT_ENGINE_ID\u003c/var\u003e: The resource ID of a Vertex AI Agent Engine instance.\n\n - For deployed agents, the resource ID is listed as the `GOOGLE_CLOUD_AGENT_ENGINE_ID` environment variable\n\n - For local agents, you can retrieve the resource ID using `agent_engine.name.split(\"/\")[-1]`.\n\n- \u003cvar translate=\"no\"\u003eUSER_ID\u003c/var\u003e: A non-empty unique identifier for the user, with a maximum length of 128 characters.\n\nInteract with your agent\n------------------------\n\nAfter defining your agent and setting up Vertex AI Agent Engine Sessions, you can interact with your agent to check that the session history and states persist. \n\n### ADK UI\n\nTest your agent with the ADK user interface and connect to Vertex AI Agent Engine Session using the `session_db_url` command line option: \n\n agent_engine_id=\"\u003cvar translate=\"no\"\u003eAGENT_ENGINE_ID\u003c/var\u003e\"\n\n adk web --session_db_url=agentengine://${agent_engine_id}\n\n # Sample output\n +-----------------------------------------------------------------------------+\n | ADK Web Server started |\n | |\n | For local testing, access at http://localhost:8000. |\n +-----------------------------------------------------------------------------+\n\n INFO: Application startup complete.\n INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)\n\n### Python\n\nUse ADK Python code to manage sessions and states.\n\n### Create a session and query the agent\n\nUse the following code to create a session and send a query to your agent: \n\n # Create a session\n session = await session_service.create_session(\n app_name=app_name,\n user_id=user_id)\n\n call_agent(\"Hello!\", session.id, user_id)\n # Agent response: \"Hello, world\"\n\n call_agent(\"Thanks!\", session.id, user_id)\n # Agent response: \"Goodbye, world\"\n\nAfter the session is created and passed to the runner, ADK uses the session to store events from the current interaction. You can also resume a previous session by providing the ID for that session.\n\n### List existing sessions\n\nList all existing sessions associated with a given user ID. \n\n # List sessions\n await session_service.list_sessions(app_name=app_name,user_id=user_id)\n\n # ListSessionsResponse(session_ids=['1122334455', '9988776655'])\n\n### Manage session states\n\nStates hold information that the agent needs for a conversation. You can provide an initial state as a dictionary when you create a session: \n\n # Create a session with state\n session = await session_service.create_session(\n app_name=app_name,\n user_id=user_id,\n state={'key': 'value'})\n\n print(session.state['key'])\n # value\n\nTo update the session state outside the runner, append a new event to the session using `state_delta`: \n\n from google.adk.events import Event, EventActions\n import time\n\n # Define state changes\n state_changes = {'key': 'new_value'}\n\n # Create event with actions\n actions_with_update = EventActions(state_delta=state_changes)\n system_event = Event(\n invocation_id=\"invocation_id\",\n author=\"system\", # Or 'agent', 'tool' etc.\n actions=actions_with_update,\n timestamp=time.time()\n )\n\n # Append the event\n await session_service.append_event(session, system_event)\n\n # Check updated state\n updated_session = await session_service.get_session(\n app_name=app_name,\n user_id=user_id,\n session_id=session.id)\n # State is updated to new value\n print(updated_session.state['key'])\n # new_value\n\n### Delete a session\n\nDelete a specific session associated with a user ID: \n\n await session_service.delete_session(app_name=app_name, user_id=user_id, session_id=session.id)\n\nDeploy your agent to Vertex AI Agent Engine\n-------------------------------------------\n\nAfter you test your agent locally, you can deploy the agent to production by updating the Vertex AI Agent Engine instance with parameters: \n\n agent_engines.update(resource_name=agent_engine.name, agent_engine=\u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eAGENT\u003c/span\u003e\u003c/var\u003e, requirements=REQUIREMENTS)\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eAGENT\u003c/var\u003e: The application that implements the `query / stream_query` method (for example, `AdkApp` for an ADK agent). For more information, see [Deployment considerations](/vertex-ai/generative-ai/docs/agent-engine/deploy#deployment-considerations).\n\nClean up\n--------\n\nTo clean up all resources used in this project, you can delete the Vertex AI Agent Engine instance along with its child resources: \n\n agent_engine.delete(force=True)\n\nWhat's next\n-----------\n\n- [Manage sessions using API calls](/vertex-ai/generative-ai/docs/agent-engine/sessions/manage-sessions-api)."]]