A2UI-Agent mit Cloud Run hosten

In dieser Anleitung wird beschrieben, wie Sie einen Agent-to-Agent-Agenten (A2A) bereitstellen, der mit dem Agent Development Kit (ADK) und der A2UI-Erweiterung erstellt wurde, und zwar in Cloud Run. Außerdem erfahren Sie, wie Sie den bereitgestellten Agenten bei Gemini Enterprise registrieren.

In diesem Beispiel wird öffentlich verfügbarer Beispielcode verwendet. Der Beispielcode für diese Anleitung hat die folgende Ordnerstruktur.

Ordnerstruktur der Anleitung

Das Projekt hat die folgende Ordnerstruktur:

Datei/Verzeichnis Beschreibung
/samples/community/agent/adk/gemini_enterprise/v0_9 Verzeichnis mit Beispielkonfigurationen und ‑daten für diese Anleitung.
__init__.py Markiert das Verzeichnis als Python-Paket.
__main__.py Der Einstiegspunkt zum lokalen Ausführen des Agenten.
agent.py Definiert den Agenten, seine Fähigkeiten und sein Verhalten.
agent_executor.py Verwaltet den Ausführungsablauf und die Tool-Interaktionen.
deploy.sh Script zum Erstellen und Bereitstellen des Agenten in Cloud Run.
examples/ Verzeichnis mit Beispielen für Komponentenvorlagen.
gemini_enterprise_composite_catalog.json Komponentenkatalog, der Standardmaterial- und benutzerdefinierte Gemini Enterprise-Komponenten definiert.
main.py Der Haupteinstiegspunkt der Anwendung (FastAPI-App).
prompt_builder.py Helfer zum Erstellen von Prompts für das Modell.
pyproject.toml Projektkonfiguration und Abhängigkeiten.
examples/0.9/material_table_orders.json Beispiel für eine UI-Vorlage mit dem Layout und den Mock-Daten für die Demo zu den letzten Bestellungen.
tools.py Definiert die Tools (Funktionen), die der Agent verwenden kann.

Hinweis

Prüfen Sie vor Beginn, ob Sie Folgendes haben:

  • Die Rolle Discovery Engine Admin.

  • Eine vorhandene Gemini Enterprise-App. Informationen zum Erstellen einer App finden Sie unter App erstellen.

  • Klonen Sie das Repository und wechseln Sie zum Beispielverzeichnis v0_9:

    git clone https://github.com/a2ui-project/a2ui.git
    cd a2ui/samples/community/agent/adk/gemini_enterprise/v0_9
    

APIs aktivieren

Aktivieren Sie die folgenden APIs für Ihr Projekt:

Console

Aktivieren Sie die folgenden APIs:

  • Vertex AI API
  • Cloud Build API
  • Artifact Registry API
  • Cloud Run API
  • Cloud Logging API
  • Discovery Engine API
  • Cloud Storage API
  • API für Identity and Access Management (IAM)

APIs aktivieren

REST

Sie können diese APIs über die Google Cloud Console oder mit dem folgenden gcloud CLI-Befehl aktivieren:

gcloud services enable aiplatform.googleapis.com cloudbuild.googleapis.com artifactregistry.googleapis.com run.googleapis.com logging.googleapis.com discoveryengine.googleapis.com storage.googleapis.com iam.googleapis.com

Berechtigungen erteilen

Erteilen Sie die Berechtigung für die Rolle „Cloud Run Invoker“ (roles/run.invoker).

gcloud projects add-iam-policy-binding PROJECT_ID \
   --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com" \
   --role="roles/run.invoker"

Ersetzen Sie Folgendes:

  • PROJECT_ID : die Projekt-ID.
  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer.

Agent bereitstellen

Das Skript deploy.sh automatisiert den Bereitstellungsprozess. Wenn Sie Ihren Agenten bereitstellen möchten, führen Sie das Skript über das Projektverzeichnis mit Ihrer Google Cloud ID und einem Namen für Ihren neuen Dienst aus. Optional können Sie auch das zu verwendende Gemini-Modell angeben.

Das Skript führt die folgenden Aktionen aus:

  1. Erstellt ein Container-Image aus Ihrem Quellcode.
  2. Überträgt das Image in Artifact Registry.
  3. Stellt das Image in Cloud Run bereit.
  4. Legt Umgebungsvariablen fest, einschließlich MODEL und der öffentlichen AGENT_URL des Dienstes selbst.
chmod +x deploy.sh
./deploy.sh PROJECT_ID a2ui-demo-agent MODEL_NAME

Ersetzen Sie Folgendes:

  • PROJECT_ID: die Projekt-ID.
  • MODEL_NAME: Optional. Dies ist das dritte Argument für das Skript. Unterstützte Werte sind gemini-2.5-pro und gemini-2.5-flash. Wenn kein Wert angegeben ist, verwendet das Skript standardmäßig gemini-2.5-flash.

Nach Abschluss des Skripts wird die Dienst-URL Ihres bereitgestellten Agenten ausgegeben. Sie benötigen diese Dienst-URL im nächsten Schritt.

Agent bei Gemini Enterprise registrieren

Nachdem Ihr Agent bereitgestellt wurde, müssen Sie ihn bei Gemini Enterprise registrieren, damit er gefunden werden kann.

Führen Sie den folgenden curl-Befehl aus und ersetzen Sie die Platzhalter durch Ihre eigenen Werte:

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/LOCATION/collections/default_collection/engines/ENGINE_ID/assistants/default_assistant/agents -d '{
  "name": "a2ui-demo-agent",
  "displayName": "A2UI v0.9 Demo Agent",
  "description": "A demo agent that showcases A2UI v0.9 UI templates.",
  "a2aAgentDefinition": {
      "jsonAgentCard": "{\"protocolVersion\": \"0.3.0\", \"name\": \"A2UI v0.9 Demo\", \"description\": \"A demo agent that showcases A2UI v0.9 UIs built from the Material component catalog and Gemini Enterprise custom components (Canvas, Iframe). Ask it what can you do? to see the available demos.\", \"url\": \"AGENT_URL\", \"version\": \"1.0.0\", \"capabilities\": {\"streaming\": true, \"preferredTransport\": \"JSONRPC\", \"extensions\": [{\"uri\": \"https://a2ui.org/a2a-extension/a2ui/v0.9\", \"description\": \"Ability to render A2UI v0.9\", \"required\": false, \"params\": {\"supportedCatalogIds\": [\"https://www.gstatic.com/vertexaisearch/a2ui/v0_9/gemini_enterprise_composite_catalog.json\"]}}]}, \"skills\": [{\"id\": \"a2ui_demo\", \"name\": \"A2UI v0.9 Component Demo\", \"description\": \"Demonstrates A2UI v0.9 UIs built from the Material catalog and Gemini Enterprise custom components: cards, forms & inputs, tabs, tables, progress indicators, dialogs & menus, the Canvas side panel, and the Iframe (IFrameSrcdoc / IFrameUrl) components.\"}], \"defaultInputModes\": [\"text/plain\"], \"defaultOutputModes\": [\"text/plain\"]}"
    }
}'

Ersetzen Sie Folgendes:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer.
  • LOCATION: Die Multiregion Ihres Datenspeichers: global, us oder eu.
  • ENGINE_ID: Die ID der App, bei der Sie den Agenten registrieren möchten.
  • AGENT_URL: Die Dienst-URL Ihres bereitgestellten Agenten.

Registrierung des Agenten aufheben (optional)

Wenn Sie die Registrierung des Agenten aufheben möchten, führen Sie den folgenden curl-Befehl aus:

curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/LOCATION/collections/default_collection/engines/ENGINE_ID/assistants/default_assistant/agents/AGENT_ID

Ersetzen Sie Folgendes:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer.
  • LOCATION: Die Multiregion Ihres Datenspeichers: global, us oder eu.
  • ENGINE_ID: Die ID der App, bei der der Agent registriert ist.
  • AGENT_ID: Die ID des Agenten, den Sie löschen möchten.

Agent in der Gemini Enterprise-Web-App verwenden

Nachdem ein Agent erstellt und registriert wurde, können Sie ihn in der Gemini Enterprise-Web-App verwenden und mit ihm interagieren.

Web-App-URL abrufen

Wenn Sie den Agenten verwenden möchten, müssen Sie zuerst die Web-App-URL abrufen. Ein Gemini Enterprise-Administrator kann die Web-App-URL so abrufen und freigeben:

  1. Rufen Sie in der Google Cloud Console die Seite Gemini Enterprise auf.

    Gemini Enterprise

  2. Klicken Sie auf den Namen der App, bei der Sie den Agenten registriert haben.

  3. Klicken Sie auf Integrations (Integrationen).

  4. Kopieren Sie The link to your web app: (Link zu Ihrer Web-App) und geben Sie ihn an die Nutzer in der Organisation weiter.

Agent verwenden

So verwenden Sie den Agenten und interagieren mit ihm:

  1. Öffnen Sie die App-URL in einem neuen Browsertab.
  2. Klicken Sie im Navigationsmenü der Webanwendung auf Agents (Agenten).
  3. Rufen Sie den Bereich From your organization (Von Ihrer Organisation) auf und klicken Sie auf den Agenten, den Sie erstellt haben.
  4. Dadurch wird die Konversationsoberfläche für den Agenten geöffnet. Stellen Sie Fragen und interagieren Sie mit dem Agenten.

Sie können beispielsweise einen Prompt wie Show me the recent orders table verwenden, um Informationen zu den letzten Bestellungen zu erhalten, die Teil der Beispieldaten sind. Der Agent ruft die Bestellinformationen aus material_table_orders.json ab und rendert die Liste im Chat mit benutzerdefinierten UI-Komponenten, wie im folgenden Beispiel gezeigt:

Beispiel für eine Tabelle mit den letzten Bestellungen