Gemini Enterprise-Agents in Google Workspace einbinden

1. Hinweis

83e1c1629d14fb31.png

Was ist Gemini Enterprise?

Gemini Enterprise ist eine fortschrittliche agentische Plattform, die das Beste von Google AI für Unternehmen bietet. Teams können KI-Agenten in einer sicheren Umgebung entdecken, erstellen, gemeinsam nutzen und ausführen.

  • Zugriff auf fortschrittliche Modelle:Nutzer erhalten sofortigen Zugriff auf die leistungsstärkste multimodale KI von Google, einschließlich Gemini, um komplexe geschäftliche Herausforderungen zu meistern.
  • Spezialisierte Agenten nutzen:Die Suite enthält sofort einsatzbereite Google-Agenten für Recherche, Programmierung und Notizen, die Ihnen einen unmittelbaren Mehrwert bieten.
  • Alle Mitarbeitenden können ihre eigenen benutzerdefinierten Agenten erstellen:Mit No-Code- und Pro-Code-Optionen können Mitarbeitende aller Abteilungen ihre eigenen benutzerdefinierten Agenten für die Workflow-Automatisierung erstellen und verwalten.
  • Agents mit Daten fundieren:Agents können sicher mit internen Unternehmensdaten und Drittanbieteranwendungen verbunden werden, damit ihre Antworten kontextbezogen und präzise sind.
  • Zentrale Governance:Administratoren können alle Agent-Aktivitäten visualisieren und prüfen, um sicherzustellen, dass die Organisation strenge Sicherheits- und Compliance-Standards erfüllt.
  • Mit Ökosystemen erweitern:Die Plattform lässt sich in ein breites Netzwerk von Partneranwendungen und ‑dienstanbietern einbinden, um die Automatisierung auf verschiedene Systeme auszuweiten.

127f2ed7d484722c.png

Was ist Google Workspace?

Google Workspace ist eine Sammlung cloudbasierter Produktivitäts- und Kollaborationslösungen für Privatpersonen, Bildungseinrichtungen und Unternehmen:

  • Kommunikation:Professionelle E‑Mail-Dienste (Gmail), Videokonferenzen (Meet) und Team-Messaging (Chat).
  • Erstellen von Inhalten:Tools zum Schreiben von Dokumenten (Docs), Erstellen von Tabellen (Sheets) und Entwerfen von Präsentationen (Präsentationen).
  • Organisation:Gemeinsame Kalender (Google Kalender) und digitale Notizen (Google Notizen).
  • Speicherplatz:Zentraler Cloud-Speicherplatz zum sicheren Speichern und Freigeben von Dateien (Drive).
  • Verwaltung:Administratoreinstellungen zum Verwalten von Nutzern und Sicherheitseinstellungen (Workspace-Admin-Konsole).

Welche Arten von benutzerdefinierten Integrationen gibt es?

Google Workspace und Gemini Enterprise bilden einen leistungsstarken Feedback-Loop, in dem Workspace Echtzeitdaten und Kontext für die Zusammenarbeit liefert, während Gemini Enterprise die Modelle, die agentische Argumentation und die Orchestrierung bietet, die für die Automatisierung intelligenter Workflows erforderlich sind.

  • Smarte Konnektivität:Mit von Google verwalteten Datenspeichern, APIs und MCP-Servern (von Google verwaltet und benutzerdefiniert) können Agents sicher und nahtlos auf Workspace-Daten zugreifen und Aktionen im Namen von Nutzern ausführen.
  • Benutzerdefinierte Agenten:Mit No-Code-Designern oder Pro-Code-Frameworks können Teams spezialisierte Agenten erstellen, die auf von Administratoren verwalteten Workspace-Daten und ‑Aktionen basieren.
  • Native Integration:Workspace-Add-ons schließen die Lücke zwischen KI-Systemen und Anwendungen wie Chat und Gmail, entweder durch spezielle UI-Komponenten oder Hintergrundprozesse. So können Kundenservicemitarbeiter Nutzer genau dort abholen, wo sie sich befinden, und ihnen sofort kontextbezogene Unterstützung bieten.

Durch die Kombination des robusten Produktivitätsökosystems von Google Workspace mit der fortschrittlichen agentischen Leistung von Gemini Enterprise können Unternehmen ihre Abläufe durch benutzerdefinierte, datenbasierte KI-Agenten optimieren, die komplexe Workflows direkt in den Tools automatisieren, die ihre Teams bereits täglich verwenden.

Voraussetzungen

Wenn Sie alle Schritte in Ihrer eigenen Umgebung ausführen möchten, benötigen Sie Folgendes:

Umfang

In diesem Codelab entwickeln wir drei Lösungen mit Gemini Enterprise-KI-Agenten, die eng in Google Workspace integriert sind. Sie zeigen Architekturmuster, die für die Interaktion mit Daten, Aktionen und Benutzeroberflächen verwendet werden können.

Benutzerdefinierter No‑Code-Agent

Mit diesem KI-Agent können Nutzer in ihrer natürlichen Sprache nach Daten suchen und Aktionen für Workspace ausführen. Dabei werden die folgenden Elemente verwendet:

  • Modell:Gemini
  • Daten und Aktionen:Gemini Enterprise-Datenspeicher für Google Workspace (Kalender, Gmail, Drive, NotebookLM), Google Suche.
  • Tools zum Erstellen von Agenten:Gemini Enterprise Agent Designer.
  • Agent-Host:Gemini Enterprise.
  • Benutzeroberfläche:Gemini Enterprise Web-App.

90e42539e5959634.png

60e62437ce29a818.png

Benutzerdefinierter Pro-Code-Agent

Mit diesem Agenten können Nutzer mithilfe von benutzerdefinierten Tools und Regeln in natürlicher Sprache nach Daten suchen und Aktionen für Workspace ausführen. Dabei werden die folgenden Elemente verwendet:

  • Modell:Gemini
  • Daten und Aktionen:Gemini Enterprise-Datenspeicher für Google Workspace (Kalender, Gmail, Drive, NotebookLM), Google Suche, von Google verwalteter Vertex AI Search-Server mit Model Context Protocol (MCP), benutzerdefinierte Tool-Funktion zum Senden von Google Chat-Nachrichten (über die Google Chat API).
  • Tools zum Erstellen von Agents:Agent Development Kit (ADK).
  • Agent-Host:Vertex AI Agent Engine.
  • Benutzeroberfläche:Gemini Enterprise Web-App.

1647ebff031c42e7.png

a8087d2351e77fb4.png

Standard-Agent als Google Workspace-Add-on

Mit diesem Agent können Nutzer in der Benutzeroberfläche von Workspace-Apps in natürlicher Sprache nach Workspace-Daten suchen. Dabei werden die folgenden Elemente verwendet:

  • Modell:Gemini
  • Daten:Gemini Enterprise-Datenspeicher für Google Workspace (Kalender, Gmail, Drive, NotebookLM), Google Suche.
  • Agent-Host:Gemini Enterprise.
  • Benutzeroberfläche:Google Workspace-Add‑on für Chat und Gmail (lässt sich problemlos auf Google Kalender, Drive, Docs, Sheets und Präsentationen ausweiten).
  • Google Workspace-Add‑on:Apps Script, Gemini Enterprise- und Vertex AI-APIs, kontextbezogen (Nutzer-Metadaten, ausgewählte Gmail-Nachricht).

c8c63fb3f324fecf.png

d33b8cb50ee251b7.png

Lerninhalte

  • Die Integrationspunkte zwischen Gemini Enterprise und Google Workspace, die Daten und Aktionen ermöglichen.
  • Die No-Code- und Pro-Code-Optionen zum Erstellen benutzerdefinierter Agenten, die in Gemini Enterprise gehostet werden.
  • Wie Nutzer über die Gemini Enterprise Web-App und Google Workspace-Anwendungen auf Agents zugreifen können.

2. Einrichten

Konzepte für Rezensionen

Gemini Enterprise-App

Eine Gemini Enterprise-App bietet Endnutzern Suchergebnisse, Aktionen und Agents. Der Begriff „App“ kann im Zusammenhang mit APIs synonym mit dem Begriff „Engine“ verwendet werden. Eine App muss mit einem Datenspeicher verbunden sein, damit die Daten daraus für die Bereitstellung von Suchergebnissen, Antworten oder Aktionen verwendet werden können.

Gemini Enterprise Web-App

Eine Gemini Enterprise-Web-App ist mit einer Gemini Enterprise-App verknüpft. Sie dient als zentraler KI-Hub, in dem Mitarbeiter über eine einzige Chatoberfläche in isolierten Unternehmensdaten suchen, spezialisierte KI-Agenten für komplexe Workflows ausführen und professionelle Inhalte mit Datenschutz auf Unternehmensniveau generieren können.

Ressourcen initialisieren und darauf zugreifen

In diesem Abschnitt greifen Sie über Ihren bevorzugten Webbrowser auf die folgenden Ressourcen zu und konfigurieren sie.

Gemini Enterprise-App

Öffnen Sie die Google Cloud Console in einem neuen Tab und folgen Sie dieser Anleitung:

  1. Wählen Sie Ihr Projekt aus.
  2. Suchen Sie im Google Cloud-Suchfeld nach Gemini Enterprise und wählen Sie die Option aus. Klicken Sie dann auf + App erstellen. Wenn Sie keine Lizenz für Gemini Enterprise haben, werden Sie aufgefordert, eine 30-tägige kostenlose Testlizenz zu aktivieren.

  1. Legen Sie den App-Namen auf codelab fest.
  2. Eine ID wird anhand des Namens generiert und unter dem Feld angezeigt. Kopieren Sie sie.
  3. Legen Sie für Mehrere Regionen den Wert global (Global) fest.
  4. Klicken Sie auf Erstellen.

8712ada39377205e.png

  1. Die App wird erstellt und Sie werden automatisch zu Gemini Enterprise > Übersicht weitergeleitet.
  2. Klicken Sie unter Vollzugriff erhalten auf Identität einrichten.
  3. Wählen Sie auf dem neuen Bildschirm Google-Identität verwenden aus und klicken Sie auf Mitarbeiteridentität bestätigen.

3209c156eff4ba43.png

  1. Die Konfiguration wird gespeichert und Sie werden automatisch zu Gemini Enterprise > Übersicht weitergeleitet.
  2. Rufen Sie Konfigurationen auf.
  3. Aktivieren Sie auf dem Tab Funktionsverwaltung die Option Agent Designer aktivieren und klicken Sie auf Speichern.

f0cd9da419b41cb6.png

Gemini Enterprise Web-App

Öffnen Sie Gemini Enterprise in der Cloud Console auf einem neuen Tab und folgen Sie dieser Anleitung:

  1. Klicken Sie auf die App mit dem Namen codelab.
  2. Kopieren Sie die angezeigte URL, da wir sie in den nächsten Schritten verwenden werden, um zur Gemini Enterprise-Webanwendung zu gelangen.

b46ee6176744565d.png

3. Benutzerdefinierter No‑Code-Agent

Mit diesem KI-Agent können Nutzer in ihrer natürlichen Sprache nach Daten suchen und Aktionen für Workspace ausführen. Dabei werden die folgenden Elemente verwendet:

  • Modell:Gemini
  • Daten und Aktionen:Gemini Enterprise-Datenspeicher für Google Workspace (Kalender, Gmail, Drive, NotebookLM), Google Suche.
  • Tools zum Erstellen von Agenten:Gemini Enterprise Agent Designer.
  • Agent-Host:Gemini Enterprise.
  • Benutzeroberfläche:Gemini Enterprise Web-App.

Konzepte für Rezensionen

Gemini

Gemini ist ein multimodales LLM von Google. Sie helfen Menschen, ihr volles Potenzial zu entfalten, ihre Fantasie anzuregen, ihre Neugier zu wecken und ihre Produktivität zu steigern.

Gemini Enterprise-Datenspeicher

Ein Gemini Enterprise-Datenspeicher ist eine Entität, in die selbst erhobene Daten aus Quellen wie Google Workspace oder Drittanbieteranwendungen wie Jira oder Salesforce aufgenommen wurden. Datenspeicher mit Daten aus Drittanbieteranwendungen werden auch als Daten-Connectors bezeichnet.

Gemini Enterprise Agent Designer

Der Gemini Enterprise Agent Designer ist eine interaktive No-Code- bzw. Low-Code-Plattform zum Erstellen, Verwalten und Starten von ein- und mehrstufigen Agenten in Gemini Enterprise.

Lösungsarchitektur prüfen

e77aafb772502aaf.png

APIs aktivieren

Für die Gemini Enterprise Workspace-Datenspeicher müssen APIs aktiviert werden:

  1. Aktivieren Sie in der Google Cloud Console die Calendar, Gmail und People APIs:

573322606b715a69.png

  1. Klicken Sie auf das Menü ☰ > APIs und Dienste > Aktivierte APIs und Dienste und prüfen Sie, ob die Google Calendar API, die Gmail API und die People API in der Liste enthalten sind.

Für die Gemini Enterprise-Workspace-Kalender- und Gmail-Aktionen ist eine Konfiguration des Zustimmungsbildschirms erforderlich:

  1. Klicken Sie in der Google Cloud Console auf das Menü ☰ > Google Auth-Plattform > Branding.

  1. Klicken Sie auf Jetzt starten.
  2. Legen Sie unter App-Informationen den App-Namen auf Codelab fest .
  3. Wählen Sie unter E-Mail-Adresse des Nutzersupports eine Support-E-Mail-Adresse aus, über die Nutzer Sie mit Fragen zu ihrer Einwilligung kontaktieren können.
  4. Klicken Sie auf Weiter.
  5. Wählen Sie unter Zielgruppe die Option Intern aus.
  6. Klicken Sie auf Weiter.
  7. Geben Sie unter Kontaktdaten eine E-Mail-Adresse ein, unter der Sie über Änderungen an Ihrem Projekt benachrichtigt werden können.
  8. Klicken Sie auf Weiter.
  9. Sehen Sie sich unter Abschließen die Nutzerdatenrichtlinie für Google API-Dienste an. Wenn Sie damit einverstanden sind, wählen Sie Ich stimme der Nutzerdatenrichtlinie für Google API-Dienste zu aus.
  10. Klicken Sie auf Weiter und dann auf Erstellen.

578c2b38219b2f7b.png

  1. Die Konfiguration wird gespeichert und Sie werden automatisch zur Google Auth Platform > Übersicht weitergeleitet.
  2. Rufen Sie Datenzugriff auf.
  3. Klicken Sie auf Bereiche hinzufügen oder entfernen.
  4. Kopieren Sie die folgenden Bereiche und fügen Sie sie in das Feld Bereiche manuell hinzufügen ein.
https://www.googleapis.com/auth/calendar.readonly
https://www.googleapis.com/auth/calendar.events
https://www.googleapis.com/auth/calendar.calendars
https://www.googleapis.com/auth/gmail.send
https://www.googleapis.com/auth/gmail.readonly
  1. Klicken Sie auf Zur Tabelle hinzufügen, dann auf Aktualisieren und schließlich auf Speichern.

874b1dda14e8f379.png

Weitere Informationen finden Sie im vollständigen Leitfaden OAuth-Zustimmung konfigurieren.

OAuth-Clientanmeldedaten erstellen

So erstellen Sie einen neuen OAuth-Client für Gemini Enterprise, um Nutzer zu authentifizieren:

  1. Klicken Sie in der Google Cloud Console auf das Menü ☰ > Google Auth-Plattform > Clients.

  1. Klicken Sie auf + Client erstellen.
  2. Wählen Sie als Anwendungstyp die Option Webanwendung aus.
  3. Legen Sie als Name codelab fest.
  4. Überspringen Sie Autorisierte JavaScript-Quellen.
  5. Klicken Sie im Abschnitt Autorisierte Weiterleitungs-URIs auf URI hinzufügen und geben Sie https://vertexaisearch.cloud.google.com/oauth-redirect ein.
  6. Klicken Sie auf Erstellen.
  7. Ein Dialogfeld mit der neu erstellten OAuth-Client-ID und dem neuen Clientschlüssel wird angezeigt. Bewahren Sie diese Informationen an einem sicheren Ort auf.

a46e5ebfb851aea5.png

Datenspeicher erstellen

Öffnen Sie Gemini Enterprise in der Cloud Console auf einem neuen Tab und folgen Sie dieser Anleitung:

  1. Klicken Sie auf die App mit dem Namen codelab.
  2. Klicken Sie im Navigationsmenü auf Verbundene Datenspeicher.
  3. Klicken Sie auf + Neuer Datenspeicher.
  4. Suchen Sie unter Quelle nach Google Kalender und klicken Sie auf Auswählen.
  5. Geben Sie im Bereich Aktionen die Client-ID und den Clientschlüssel ein, die Sie in den vorherigen Schritten gespeichert haben, klicken Sie auf Authentifizierung bestätigen und folgen Sie der Anleitung, um den OAuth-Client zu authentifizieren und zu autorisieren.
  6. Aktivieren Sie die Aktionen Kalendertermin erstellen und Kalendertermin aktualisieren.
  7. Klicken Sie auf Weiter.

a1d76e70edec0cf.png

  1. Legen Sie im Abschnitt Konfiguration den Namen des Daten-Connectors auf calendar fest.
  2. Klicken Sie auf Erstellen.
  3. Sie werden automatisch zu Verbundene Datenspeicher weitergeleitet, wo Sie den neu hinzugefügten Datenspeicher sehen.

So erstellen Sie den Google Gmail-Datenspeicher:

  1. Klicken Sie auf + Neuer Datenspeicher.
  2. Suchen Sie unter Quelle nach Google Gmail und klicken Sie auf Auswählen.
  3. Geben Sie im Bereich Aktionen die Client-ID und den Clientschlüssel ein, die Sie in den vorherigen Schritten gespeichert haben, und klicken Sie dann auf Authentifizierung bestätigen.
  4. Aktivieren Sie die Aktion E-Mail senden.
  5. Klicken Sie auf Weiter.
  6. Legen Sie im Abschnitt Konfiguration den Namen des Daten-Connectors auf gmail fest.
  7. Klicken Sie auf Erstellen.
  8. Sie werden automatisch zu Verbundene Datenspeicher weitergeleitet, wo Sie den neu hinzugefügten Datenspeicher sehen.

Google Drive-Datenspeicher erstellen:

  1. Klicken Sie auf + Neuer Datenspeicher.
  2. Suchen Sie unter Quelle nach Google Drive und klicken Sie auf Auswählen.
  3. Wählen Sie im Abschnitt Daten die Option Alle aus und klicken Sie dann auf Weiter.
  4. Legen Sie im Abschnitt Konfiguration den Namen des Daten-Connectors auf drive fest.
  5. Klicken Sie auf Erstellen.
  6. Sie werden automatisch zu Verbundene Datenspeicher weitergeleitet, wo Sie den neu hinzugefügten Datenspeicher sehen.

NotebookLM-Datenspeicher erstellen:

  1. Klicken Sie auf + Neuer Datenspeicher.
  2. Suchen Sie unter Quelle nach NotebookLM und klicken Sie auf Auswählen.
  3. Legen Sie im Abschnitt Konfiguration den Namen des Daten-Connectors auf notebooklm fest.
  4. Klicken Sie auf Erstellen.
  5. Sie werden automatisch zu Verbundene Datenspeicher weitergeleitet, wo Sie den neu hinzugefügten Datenspeicher sehen.

Nach einigen Minuten ist der Status aller verbundenen Datenspeicher (außer NotebookLM) Aktiv. Wenn Fehler angezeigt werden, können Sie auf die Datenquelle klicken, um die Fehlerdetails aufzurufen.

ceba9eb2480a2696.png

Testdatenspeicher

Öffnen Sie die URL der Gemini Enterprise-Webanwendung, die wir zuvor kopiert haben:

  1. Klicken Sie auf das Dreistrich-Menü ☰ > Neuer Chat.
  2. Klicken Sie in der Fußzeile des neuen Chatnachrichtenfelds auf das Symbol Connectors und aktivieren Sie alle Connectors.
  3. Sie können jetzt Prompts ausprobieren, die sich auf die Connectors beziehen. Geben Sie beispielsweise im Chat Do I have any meetings today? ein und drücken Sie enter.
  4. Gib als Nächstes How many emails did I receive today? ein und drücke enter.
  5. Geben Sie abschließend Give me the title of the last Drive file I created ein und drücken Sie enter.

90e42539e5959634.png

Benutzerdefinierten Agenten erstellen

Erstellen Sie in der Gemini Enterprise-Web-App einen neuen Agenten mit dem Agent Designer:

  1. Klicken Sie auf das Dreistrich-Menü ☰ > + Neuer Agent.
  2. Geben Sie im Chat An agent that always sends pirate-themed emails but use normal English otherwise ein und drücken Sie enter.

2803c1dedd20433e.png

  1. Der Agent Designer entwirft den Agent basierend auf dem Prompt und öffnet ihn im Editor.
  2. Klicken Sie auf Erstellen.

Benutzerdefinierten Agent ausprobieren

  1. Chatten Sie in der Gemini Enterprise-Webanwendung mit dem neu erstellten Agenten:
  2. Klicken Sie auf das Dreistrich-Menü ☰ > Agents.
  3. Wählen Sie den Agent unter Meine Agenten aus.
  4. Klicken Sie in der Fußzeile des neuen Chatnachrichtenfelds auf das Symbol Connectors und dann auf Aktionen aktivieren für Mail. Folgen Sie der Anleitung, um den Agent zu autorisieren.
  5. Geben Sie im Chat Send an email to someone@example.com saying I'll see them at Cloud Next, generate some subject and body yourself ein und drücken Sie enter. Sie können die Beispiel-E-Mail durch Ihre E-Mail-Adresse ersetzen.
  6. Klicken Sie auf ✔️, um die E‑Mail zu senden.

60e62437ce29a818.png

d4fb65d14fdf27da.png

4. Benutzerdefinierter Pro-Code-Agent

Mit diesem Agenten können Nutzer mithilfe von benutzerdefinierten Tools und Regeln in natürlicher Sprache nach Daten suchen und Aktionen für Workspace ausführen. Dabei werden die folgenden Elemente verwendet:

  • Modell:Gemini
  • Daten und Aktionen:Gemini Enterprise-Datenspeicher für Google Workspace (Kalender, Gmail, Drive, NotebookLM), Google Suche, von Google verwalteter Vertex AI Search-Server mit Model Context Protocol (MCP), benutzerdefinierte Tool-Funktion zum Senden von Google Chat-Nachrichten (über die Google Chat API).
  • Tools zum Erstellen von Agents:Agent Development Kit (ADK).
  • Agent-Host:Vertex AI Agent Engine.
  • Benutzeroberfläche:Gemini Enterprise Web-App.

Sie wird über die Bring-Your-Own-Funktion in Gemini Enterprise integriert. Daher müssen wir die Bereitstellungs-, Registrierungs- und Konfigurationsschritte durchlaufen.

Konzepte für Rezensionen

Vertex AI

Vertex AI bietet alles, was Sie zum Erstellen und Verwenden von generativer KI benötigen – von KI-Lösungen über die Suche und Unterhaltung bis hin zu über 130 Foundation Models und einer einheitlichen KI-Plattform.

4670fcf7a826af4d.png

Agent Development Kit (ADK)

Das Agent Development Kit (ADK) ist eine spezielle Suite von Tools und Frameworks, die die Erstellung autonomer KI-Agenten vereinfachen. Es bietet vorgefertigte Module für die Verarbeitung von Anfragen, die Verwaltung von Erinnerungen und die Tool-Integration.

Model Context Protocol (MCP)

Das Model Context Protocol (MCP) ist ein offener Standard, der die nahtlose, sichere Integration zwischen KI-Anwendungen und verschiedenen Datenquellen oder Tools über eine universelle „Plug-and-Play“-Schnittstelle ermöglicht.

Funktionstool

Ein Funktionstool ist eine vordefinierte ausführbare Routine, die ein KI-Modell auslösen kann, um bestimmte Aktionen auszuführen oder Echtzeitdaten aus externen Systemen abzurufen. Dadurch werden die Funktionen des Modells über die einfache Textgenerierung hinaus erweitert.

Lösungsarchitektur prüfen

43df337e0f3d64e8.png

Quellcode prüfen

agent.py

...
MODEL = "gemini-2.5-flash"

# Gemini Enterprise authentication injects a bearer token into the ToolContext state.
# The key pattern is "GE_AUTH_NAME_<random_digits>".
# We dynamically parse this token to authenticate our MCP and API calls.
GE_AUTH_NAME = "enterprise-ai"

VERTEXAI_SEARCH_TIMEOUT = 15.0

def get_project_id():
    """Fetches the consumer project ID from the environment natively."""
    _, project = google.auth.default()
    if project:
        return project
    raise Exception(f"Failed to resolve GCP Project ID from environment.")

def find_serving_config_path():
    """Dynamically finds the default serving config in the engine."""
    project_id = get_project_id()
    engines = discoveryengine_v1.EngineServiceClient().list_engines(
        parent=f"projects/{project_id}/locations/global/collections/default_collection"
    )
    for engine in engines:
        # engine.name natively contains the numeric Project Number
        return f"{engine.name}/servingConfigs/default_serving_config"
    raise Exception(f"No Discovery Engines found in project {project_id}")

def _get_access_token_from_context(tool_context: ToolContext) -> str:
    """Helper method to dynamically parse the intercepted bearer token from the context state."""
    escaped_name = re.escape(GE_AUTH_NAME)
    pattern = re.compile(fr"^{escaped_name}_\d+$")
    # Handle ADK varying state object types (Raw Dict vs ADK State)
    state_dict = tool_context.state.to_dict() if hasattr(tool_context.state, 'to_dict') else tool_context.state
    matching_keys = [k for k in state_dict.keys() if pattern.match(k)]
    if matching_keys:
        return state_dict.get(matching_keys[0])
    raise Exception(f"No bearer token found in ToolContext state matching pattern {pattern.pattern}")

def auth_header_provider(tool_context: ToolContext) -> dict[str, str]:
    token = _get_access_token_from_context(tool_context)
    return {"Authorization": f"Bearer {token}"}

def send_direct_message(email: str, message: str, tool_context: ToolContext) -> dict:
    """Sends a Google Chat Direct Message (DM) to a specific user by email address."""
    chat_client = chat_v1.ChatServiceClient(
        credentials=Credentials(token=_get_access_token_from_context(tool_context))
    )

    # 1. Setup the DM space or find existing one
    person = chat_v1.User(
        name=f"users/{email}",
        type_=chat_v1.User.Type.HUMAN
    )
    membership = chat_v1.Membership(member=person)
    space_req = chat_v1.Space(space_type=chat_v1.Space.SpaceType.DIRECT_MESSAGE)
    setup_request = chat_v1.SetUpSpaceRequest(
        space=space_req,
        memberships=[membership]
    )
    space_response = chat_client.set_up_space(request=setup_request)
    space_name = space_response.name
    
    # 2. Send the message
    msg = chat_v1.Message(text=message)
    message_request = chat_v1.CreateMessageRequest(
        parent=space_name,
        message=msg
    )
    message_response = chat_client.create_message(request=message_request)
    
    return {"status": "success", "message_id": message_response.name, "space": space_name}

vertexai_mcp = McpToolset(
    connection_params=StreamableHTTPConnectionParams(
        url="https://discoveryengine.googleapis.com/mcp",
        timeout=VERTEXAI_SEARCH_TIMEOUT,
        sse_read_timeout=VERTEXAI_SEARCH_TIMEOUT
    ),
    tool_filter=['search'],
    # The auth_header_provider dynamically injects the bearer token from the ToolContext
    # into the MCP call for authentication.
    header_provider=auth_header_provider
)

# Answer nicely the following user queries:
#  - Please find my meetings for today, I need their titles and links
#  - What is the latest Drive file I created?
#  - What is the latest Gmail message I received?
#  - Please send the following message to someone@example.com: Hello, this is a test message.

root_agent = LlmAgent(
    model=MODEL,
    name='enterprise_ai',
    instruction=f"""
        You are a helpful assistant that always uses the Vertex AI MCP search tool to answer the user's message, unless the user asks you to send a message to someone.
        If the user asks you to send a message to someone, use the send_direct_message tool to send the message.
        You MUST unconditionally use the Vertex AI MCP search tool to find answer, even if you believe you already know the answer or believe the Vertex AI MCP search tool does not contain the data.
        The Vertex AI MCP search tool accesses the user's data through datastores including Google Drive, Google Calendar, and Gmail.
        Only use the Vertex AI MCP search tool with servingConfig and query parameters, do not use any other parameters.
        Always use the servingConfig {find_serving_config_path()} while using the Vertex AI MCP search tool.
    """,
    tools=[vertexai_mcp, FunctionTool(send_direct_message)]
)

APIs aktivieren

Für die Lösung müssen zusätzliche APIs aktiviert werden:

  1. Aktivieren Sie in der Google Cloud Console die Vertex AI-, Cloud Resource Manager- und Google Chat-APIs:

4f02a36b050bab00.png

  1. Klicken Sie auf Menü ☰ > APIs und Dienste > Aktivierte APIs und Dienste und prüfen Sie, ob die Vertex AI API, die Cloud Resource Manager API und die Google Chat API in der Liste enthalten sind.

Für die Lösung ist zusätzlicher Datenzugriff erforderlich:

  1. Klicken Sie in der Google Cloud Console auf das Menü ☰ > Google Auth-Plattform > Datenzugriff.

  1. Klicken Sie auf Bereiche hinzufügen oder entfernen.
  2. Kopieren Sie die folgenden Bereiche und fügen Sie sie in das Feld Bereiche manuell hinzufügen ein.
  3. Klicken Sie auf Zur Tabelle hinzufügen, dann auf Aktualisieren und schließlich auf Speichern.
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/chat.messages.create
https://www.googleapis.com/auth/chat.spaces.create
  1. Klicken Sie auf Zur Tabelle hinzufügen, dann auf Aktualisieren und schließlich auf Speichern.

56fbba733139acfe.png

OAuth-Clientanmeldedaten aktualisieren

Für die Lösung ist ein zusätzlicher autorisierter Weiterleitungs-URI erforderlich:

  1. Klicken Sie in der Google Cloud Console auf das Menü ☰ > Google Auth-Plattform > Clients.

  1. Klicken Sie auf den Namen des Kunden codelab.
  2. Klicken Sie im Abschnitt Autorisierte Weiterleitungs-URIs auf URI hinzufügen und geben Sie https://vertexaisearch.cloud.google.com/static/oauth/oauth.html ein.
  3. Klicken Sie auf Speichern.

deed597aa54fec91.png

Vertex AI Search MCP aktivieren

  1. Führen Sie im Terminal folgenden Befehl aus:
gcloud beta services mcp enable discoveryengine.googleapis.com \
     --project=$(gcloud config get-value project)

Chat-App konfigurieren

  1. Suchen Sie in der Google Cloud Console im Google Cloud-Suchfeld nach Google Chat API, klicken Sie auf Google Chat API, dann auf Verwalten und schließlich auf Konfiguration.

  1. Legen Sie App-Name und Beschreibung auf Gemini Enterprise fest.
  2. Legen Sie die Avatar-URL auf https://developers.google.com/workspace/add-ons/images/quickstart-app-avatar.png fest.
  3. Deaktivieren Sie Interaktive Funktionen aktivieren und klicken Sie im angezeigten modalen Dialogfeld auf Deaktivieren.
  4. Wählen Sie Fehler in Logging protokollieren aus.
  5. Klicken Sie auf Speichern.

90cb612e51bce4e6.png

Agent in Vertex AI Agent Engine bereitstellen

  1. Laden Sie dieses GitHub-Repository herunter.

  1. Öffnen Sie in einem Terminal das Verzeichnis solutions/enterprise-ai-agent und führen Sie Folgendes aus:
# 1. Create and activate a new virtual environment
python3 -m venv .venv
source .venv/bin/activate

# 2. Install poetry and project dependencies
pip install poetry
poetry install

# 3. Deploy the agent
adk deploy agent_engine \
  --project=$(gcloud config get-value project) \
  --region=us-central1 \
  --display_name="Enterprise AI" \
  enterprise_ai

eafd2f9c4fbf305.png

  1. Wenn Sie in den Logs die Zeile Deploying to agent engine... sehen, öffnen Sie ein neues Terminal und führen Sie den folgenden Befehl aus, um dem Vertex AI Reasoning Engine Service Agent die erforderlichen Berechtigungen hinzuzufügen:
# 1. Get the current Project ID
PROJECT_ID=$(gcloud config get-value project)

# 2. Extract the Project Number for that ID
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

# 3. Construct the Service Account name
SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-aiplatform-re.iam.gserviceaccount.com"

# 4. Apply the IAM policy binding
gcloud projects add-iam-policy-binding $PROJECT_ID \
     --member="serviceAccount:$SERVICE_ACCOUNT" \
     --role="roles/discoveryengine.viewer"
  1. Warten Sie, bis der Befehl adk deploy abgeschlossen ist, und kopieren Sie dann den Ressourcennamen des neu bereitgestellten Agents aus der Befehlsausgabe in Grün.

d098fe1347d6581b.png

Agent in Gemini Enterprise registrieren

Öffnen Sie Gemini Enterprise in der Cloud Console auf einem neuen Tab und folgen Sie dieser Anleitung:

  1. Klicken Sie auf die App mit dem Namen codelab.
  2. Klicken Sie im Navigationsmenü auf Agents.
  3. Klicken Sie auf + Agent hinzufügen.
  4. Klicken Sie für Benutzerdefinierter Agent über Agent Engine auf Hinzufügen. Der Bereich Autorisierungen wird angezeigt.
  5. Klicken Sie auf Autorisierung hinzufügen.
  6. Legen Sie als Name der Autorisierung enterprise-ai fest. Eine ID wird anhand des Namens generiert und unter dem Feld angezeigt. Kopieren Sie sie.
  7. Legen Sie die Client-ID auf denselben Wert wie den OAuth-Client fest, der in den vorherigen Schritten erstellt und aktualisiert wurde.
  8. Legen Sie Clientschlüssel auf denselben Wert wie den OAuth-Client fest, der in den vorherigen Schritten erstellt und aktualisiert wurde.
  9. Legen Sie den Token-URI auf https://oauth2.googleapis.com/token fest.
  10. Legen Sie den Autorisierungs-URI auf den folgenden Wert fest, nachdem Sie <CLIENT_ID> durch die OAuth-Client-ID ersetzt haben, die in den vorherigen Schritten erstellt und aktualisiert wurde.
https://accounts.google.com/o/oauth2/v2/auth?client_id=<CLIENT_ID>&redirect_uri=https%3A%2F%2Fvertexaisearch.cloud.google.com%2Fstatic%2Foauth%2Foauth.html&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.calendars%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.events%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.send%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fchat.messages.create%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fchat.spaces.create&include_granted_scopes=true&response_type=code&access_type=offline&prompt=consent
  1. Klicken Sie auf Fertig und dann auf Weiter. Der Abschnitt Konfiguration wird angezeigt.
  2. Legen Sie Enterprise AI als Agent name (Agentenname) und Agent description (Agentenbeschreibung) fest.
  3. Legen Sie die Reasoning Engine der Agent Engine auf den Ressourcennamen der Reasoning Engine fest, der in den vorherigen Schritten kopiert wurde. Sie hat folgendes Format:
projects/<PROJECT_ID>/locations/<LOCATION>/reasoningEngines/<REASONING_ENGINE_ID>
  1. Klicken Sie auf Erstellen. Der neu hinzugefügte Agent wird jetzt unter Agents aufgeführt.

Agent ausprobieren

  1. Chatten Sie in der Gemini Enterprise Web-App mit dem neu registrierten Agenten:
  2. Klicken Sie auf das Dreistrich-Menü ☰ > Agents.
  3. Wählen Sie den Agenten unter Von Ihrer Organisation aus.
  4. Geben Sie im Chat Please find my meetings for today, I need their titles and links ein und drücken Sie enter.
  5. Klicken Sie auf Autorisieren und folgen Sie dem Autorisierungsvorgang.

ed61cf654cbcd76c.png

  1. Der Agent antwortet mit einer Liste von Kalenderterminen (abhängig vom Konto des Nutzers).
  2. Geben Sie im Chat Please send a Chat message to someone@example.com with the following text: Hello! ein und drücken Sie enter.
  3. Der Agent antwortet mit einer Bestätigungsnachricht.

1647ebff031c42e7.png

a8087d2351e77fb4.png

5. Standard-Agent als Google Workspace-Add‑on

Mit diesem Agent können Nutzer in der Benutzeroberfläche von Workspace-Apps in natürlicher Sprache nach Workspace-Daten suchen. Dabei werden die folgenden Elemente verwendet:

  • Modell:Gemini
  • Daten:Gemini Enterprise-Datenspeicher für Google Workspace (Kalender, Gmail, Drive, NotebookLM), Google Suche.
  • Agent-Host:Gemini Enterprise.
  • Benutzeroberfläche:Google Workspace-Add‑on für Chat und Gmail (lässt sich problemlos auf Google Kalender, Drive, Docs, Sheets und Präsentationen ausweiten).
  • Google Workspace-Add‑on:Apps Script, Gemini Enterprise- und Vertex AI-APIs, kontextbezogen (Nutzer-Metadaten, ausgewählte Gmail-Nachricht).

Das Google Workspace-Add-on wird über die StreamAssist API mit Gemini Enterprise verbunden.

Konzepte

Google Workspace-Add-on

Ein Google Workspace-Add-on ist eine benutzerdefinierte Anwendung, die eine oder mehrere Google Workspace-Anwendungen (Gmail, Chat, Kalender, Docs, Drive, Meet, Tabellen und Präsentationen) erweitert.

Apps Script

Apps Script ist eine cloudbasierte JavaScript-Plattform, die auf Google Drive basiert und mit der Sie Aufgaben in Google-Produkten integrieren und automatisieren können.

Google Workspace Card-Framework

Mit dem Karten-Framework in Google Workspace können Entwickler umfangreiche, interaktive Benutzeroberflächen erstellen. Damit lassen sich übersichtliche und ansprechende Karten erstellen, die Text, Bilder, Schaltflächen und andere Widgets enthalten können. Diese Karten verbessern die Nutzerfreundlichkeit, da sie strukturierte Informationen enthalten und schnelle Aktionen direkt in Workspace-Anwendungen ermöglichen.

Lösungsarchitektur prüfen

1798c39f7aaed8fc.png

Quellcode prüfen

appsscript.json

...
"addOns": {
    "common": {
      "name": "Enterprise AI",
      "logoUrl": "https://developers.google.com/workspace/add-ons/images/quickstart-app-avatar.png"
    },
    "chat": {},
    "gmail": {
      "contextualTriggers": [
        {
          "unconditional": {},
          "onTriggerFunction": "onAddonEvent"
        }
      ]
    }
  },
  "oauthScopes": [
    "https://www.googleapis.com/auth/script.external_request",
    "https://www.googleapis.com/auth/discoveryengine.assist.readwrite",
    "https://www.googleapis.com/auth/gmail.addons.execute",
    "https://www.googleapis.com/auth/gmail.addons.current.message.readonly"
  ]
...

Chat.gs

...
// Service that handles Google Chat operations.

// Handle incoming Google Chat message events, actions will be taken via Google Chat API calls
function onMessage(event) {
  if (isInDebugMode()) {
    console.log(`MESSAGE event received (Chat): ${JSON.stringify(event)}`);
  }
  // Extract data from the event.
  const chatEvent = event.chat;
  setChatConfig(chatEvent.messagePayload.space.name);

  // Request AI agent to answer the message
  requestAgent(chatEvent.messagePayload.message);
  // Respond with an empty response to the Google Chat platform to acknowledge execution
  return null; 
}

// --- Utility functions ---

// The Chat direct message (DM) space associated with the user
const SPACE_NAME_PROPERTY = "DM_SPACE_NAME"

// Sets the Chat DM space name for subsequent operations.
function setChatConfig(spaceName) {
  const userProperties = PropertiesService.getUserProperties();
  userProperties.setProperty(SPACE_NAME_PROPERTY, spaceName);
  console.log(`Space is set to ${spaceName}`);
}

// Retrieved the Chat DM space name to sent messages to.
function getConfiguredChat() {
  const userProperties = PropertiesService.getUserProperties();
  return userProperties.getProperty(SPACE_NAME_PROPERTY);
}

// Finds the Chat DM space name between the Chat app and the given user.
function findChatAppDm(userName) {
  return Chat.Spaces.findDirectMessage(
    { 'name': userName },
    {'Authorization': `Bearer ${getAddonCredentials().getAccessToken()}`}
  ).name;
}

// Creates a Chat message in the configured space.
function createMessage(message) {
  const spaceName = getConfiguredChat();
  console.log(`Creating message in space ${spaceName}...`);
  return Chat.Spaces.Messages.create(
    message,
    spaceName,
    {},
    {'Authorization': `Bearer ${getAddonCredentials().getAccessToken()}`}
  ).name;
}

Sidebar.gs

...
// Service that handles Gmail operations.

// Triggered when the user opens the Gmail Add-on or selects an email.
function onAddonEvent(event) {
  // If this was triggered by a button click, handle it
  if (event.parameters && event.parameters.action === 'send') {
    return handleSendMessage(event);
  }

  // Otherwise, just render the default initial sidebar
  return createSidebarCard();
}

// Creates the standard Gmail sidebar card consisting of a text input and send button.
// Optionally includes an answer section if a response was generated.
function createSidebarCard(optionalAnswerSection) {
  const card = CardService.newCardBuilder();
  const actionSection = CardService.newCardSection();

  // Create text input for the user's message
  const messageInput = CardService.newTextInput()
    .setFieldName("message")
    .setTitle("Message")
    .setMultiline(true);

  // Create action for sending the message
  const sendAction = CardService.newAction()
    .setFunctionName('onAddonEvent')
    .setParameters({ 'action': 'send' });

  const sendButton = CardService.newTextButton()
    .setText("Send message")
    .setTextButtonStyle(CardService.TextButtonStyle.FILLED)
    .setOnClickAction(sendAction);

  actionSection.addWidget(messageInput);
  actionSection.addWidget(CardService.newButtonSet().addButton(sendButton));

  card.addSection(actionSection);

  // Attach the response at the bottom if we have one
  if (optionalAnswerSection) {
    card.addSection(optionalAnswerSection);
  }

  return card.build();
}

// Handles clicks from the Send message button.
function handleSendMessage(event) {
  const commonEventObject = event.commonEventObject || {};
  const formInputs = commonEventObject.formInputs || {};
  const messageInput = formInputs.message;

  let userMessage = "";
  if (messageInput && messageInput.stringInputs && messageInput.stringInputs.value.length > 0) {
    userMessage = messageInput.stringInputs.value[0];
  }

  if (!userMessage || userMessage.trim().length === 0) {
    return CardService.newActionResponseBuilder()
      .setNotification(CardService.newNotification().setText("Please enter a message."))
      .build();
  }

  let finalQueryText = `USER MESSAGE TO ANSWER: ${userMessage}`;

  // If we have an email selected in Gmail, append its content as context
  if (event.gmail && event.gmail.messageId) {
    try {
      GmailApp.setCurrentMessageAccessToken(event.gmail.accessToken);
      const message = GmailApp.getMessageById(event.gmail.messageId);

      const subject = message.getSubject();
      const bodyText = message.getPlainBody() || message.getBody();

      finalQueryText += `\n\nEMAIL THE USER HAS OPENED ON SCREEN:\nSubject: ${subject}\nBody:\n---\n${bodyText}\n---`;
    } catch (e) {
      console.error("Could not fetch Gmail context: " + e);
      // Invalidate the token explicitly so the next prompt requests the missing scopes
      ScriptApp.invalidateAuth();

      CardService.newAuthorizationException()
        .setResourceDisplayName("Enterprise AI")
        .setAuthorizationUrl(ScriptApp.getAuthorizationUrl())
        .throwException();
    }
  }

  try {
    const responseText = queryAgent({ text: finalQueryText, forceNewSession: true });

    // We leverage the 'showdown' library to parse the LLM's Markdown output into HTML
    // We also substitute markdown listings with arrows and adjust newlines for clearer rendering in the sidebar
    let displayedText = substituteListingsFromMarkdown(responseText);
    displayedText = new showdown.Converter().makeHtml(displayedText).replace(/\n/g, '\n\n');

    const textParagraph = CardService.newTextParagraph();
    textParagraph.setText(displayedText);

    const answerSection = CardService.newCardSection()
      .addWidget(textParagraph);

    const updatedCard = createSidebarCard(answerSection);

    return CardService.newActionResponseBuilder()
      .setNavigation(CardService.newNavigation().updateCard(updatedCard))
      .build();

  } catch (err) {
    return CardService.newActionResponseBuilder()
      .setNotification(CardService.newNotification().setText("Error fetching response: " + err.message))
      .build();
  }
}
...

AgentHandler.gs

...
// Service that handles Gemini Enterprise AI Agent operations.

// Submits a query to the AI agent and returns the response string synchronously
function queryAgent(input) {
  const isNewSession = input.forceNewSession || !PropertiesService.getUserProperties().getProperty(AGENT_SESSION_NAME);
  const sessionName = input.forceNewSession ? createAgentSession() : getOrCreateAgentSession();

  let systemPrompt = "SYSTEM PROMPT START Do not respond with tables but use bullet points instead.";
  if (input.forceNewSession) {
    systemPrompt += " Do not ask the user follow-up questions or converse with them as history is not kept in this interface.";
  }
  systemPrompt += " SYSTEM PROMPT END\n\n";

  const queryText = isNewSession ? systemPrompt + input.text : input.text;

  const requestPayload = {
    "session": sessionName,
    "userMetadata": { "timeZone": Session.getScriptTimeZone() },
    "query": { "text": queryText },
    "toolsSpec": { "vertexAiSearchSpec": { "dataStoreSpecs": getAgentDataStores().map(ds => { dataStore: ds }) } },
    "agentsSpec": { "agentSpecs": [{ "agentId": getAgentId() }] }
  };

  const responseContentText = UrlFetchApp.fetch(
    `https://${getLocation()}-discoveryengine.googleapis.com/v1alpha/${getReasoningEngine()}/assistants/default_assistant:streamAssist?alt=sse`,
    {
      method: 'post',
      headers: { 'Authorization': `Bearer ${ScriptApp.getOAuthToken()}` },
      contentType: 'application/json',
      payload: JSON.stringify(requestPayload),
      muteHttpExceptions: true
    }
  ).getContentText();

  if (isInDebugMode()) {
    console.log(`Response: ${responseContentText}`);
  }

  const events = responseContentText.split('\n').map(s => s.replace(/^data:\s*/, '')).filter(s => s.trim().length > 0);
  console.log(`Received ${events.length} agent events.`);

  let answerText = "";
  for (const eventJson of events) {
    if (isInDebugMode()) {
      console.log("Event: " + eventJson);
    }
    const event = JSON.parse(eventJson);

    // Ignore internal events
    if (!event.answer) {
      console.log(`Ignored: internal event`);
      continue;
    }

    // Handle text replies
    const replies = event.answer.replies || [];
    for (const reply of replies) {
      const content = reply.groundedContent.content;
      if (content) {
        if (isInDebugMode()) {
          console.log(`Processing content: ${JSON.stringify(content)}`);
        }
        if (content.thought) {
          console.log(`Ignored: thought event`);
          continue;
        }
        answerText += content.text;
      }
    }

    if (event.answer.state === "SUCCEEDED") {
      console.log(`Answer text: ${answerText}`);
      return answerText;
    } else if (event.answer.state !== "IN_PROGRESS") {
      throw new Error("Something went wrong, check the Apps Script logs for more info.");
    }
  }
  return answerText;
}

// Gets the list of data stores configured for the agent to include in the request.
function getAgentDataStores() {
  const responseContentText = UrlFetchApp.fetch(
    `https://${getLocation()}-discoveryengine.googleapis.com/v1/${getReasoningEngine().split('/').slice(0, 6).join('/')}/dataStores`,
    {
      method: 'get',
      // Use the add on service account credentials for data store listing access
      headers: { 'Authorization': `Bearer ${getAddonCredentials().getAccessToken()}` },
      contentType: 'application/json',
      muteHttpExceptions: true
    }
  ).getContentText();
  if (isInDebugMode()) {
    console.log(`Response: ${responseContentText}`);
  }
  const dataStores = JSON.parse(responseContentText).dataStores.map(ds => ds.name);
  if (isInDebugMode()) {
    console.log(`Data stores: ${dataStores}`);
  }
  return dataStores;
}
...

Dienstkonto initiieren

Gehen Sie in der Google Cloud Console so vor:

  1. Klicken Sie auf das Dreistrich-Menü ☰ > IAM & Verwaltung > Dienstkonten > + Dienstkonto erstellen.

  1. Legen Sie für Name des Dienstkontos den Wert ge-add-on fest.

d44d6aae29e2464c.png

  1. Klicken Sie auf Erstellen und fortfahren.
  2. Fügen Sie die Rolle Discovery Engine-Betrachter in den Berechtigungen hinzu.

f1374efa4f326ef5.png

  1. Klicken Sie auf Weiter und dann auf Fertig. Sie werden zur Seite Dienstkonten weitergeleitet und können das von Ihnen erstellte Dienstkonto sehen.

b9496085f1404c5c.png

  1. Wählen Sie das neu erstellte Dienstkonto und dann den Tab Schlüssel aus.
  2. Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
  3. Wählen Sie JSON aus und klicken Sie auf Erstellen.

f4280f5533a08821.png

  1. Das Dialogfeld wird geschlossen und das neu erstellte öffentliche/private Schlüsselpaar wird automatisch als JSON-Datei in Ihre lokale Umgebung heruntergeladen.

Apps Script-Projekt erstellen und konfigurieren

  1. Klicken Sie auf die folgende Schaltfläche, um das Apps Script-Projekt Enterprise AI-Add-on zu öffnen:

  1. Klicken Sie auf Übersicht > Kopie erstellen.
  2. Klicken Sie in Ihrem Apps Script-Projekt auf Projekteinstellungen > Skripteigenschaften bearbeiten > Skripteigenschaft hinzufügen, um Skripteigenschaften hinzuzufügen.
  3. Setzen Sie REASONING_ENGINE_RESOURCE_NAME auf den Ressourcennamen der Gemini Enterprise-Anwendung. Sie hat folgendes Format:
# 1. Replace PROJECT_ID with the Google Cloud project ID.
# 2. Replace GE_APP_ID with the codelab app ID found in Google Cloud console > Gemini Enterprise > Apps.

projects/<PROJECT_ID>/locations/global/collections/default_collection/engines/<GE_APP_ID>
  1. Legen Sie APP_SERVICE_ACCOUNT_KEY auf den JSON-Schlüssel aus der Dienstkontodatei fest, die Sie in den vorherigen Schritten heruntergeladen haben.
  2. Klicken Sie auf Skripteigenschaften speichern.

In Gmail und Google Chat bereitstellen

Führen Sie in Ihrem Apps Script-Projekt die folgenden Schritte aus:

  1. Klicken Sie auf Bereitstellen > Bereitstellungen testen und dann auf Installieren. Sie ist jetzt in Gmail verfügbar.
  2. Klicken Sie unter Head-Deployment-ID auf Kopieren.

2ed2df972ad92715.png

Gehen Sie in der Google Cloud Console so vor:

  1. Suchen Sie im Google Cloud-Suchfeld nach Google Chat API, klicken Sie auf Google Chat API, dann auf Verwalten und schließlich auf Konfiguration.

  1. Wählen Sie Interaktive Funktionen aktivieren aus.
  2. Deaktivieren Sie Gruppenbereichen und Gruppenunterhaltungen beitreten.
  3. Wählen Sie unter Verbindungseinstellungen die Option Apps Script aus.
  4. Legen Sie Deployment ID auf die Head Deployment ID fest, die Sie in den vorherigen Schritten kopiert haben.
  5. Wählen Sie unter Sichtbarkeit die Option Diese Chat-App bestimmten Personen und Gruppen in Ihrer Workspace-Domain zur Verfügung stellen aus und geben Sie Ihre E-Mail-Adresse ein.
  6. Klicken Sie auf Speichern.

3b7d461c423f7c51.png

Add-on ausprobieren

Öffnen Sie Google Chat in einem neuen Tab und folgen Sie dieser Anleitung:

  1. Öffnen Sie einen Direktnachrichtenbereich mit der Chat-App Gemini Enterprise.

3da8690d19baf2d0.png

  1. Klicken Sie auf Konfigurieren und führen Sie den Authentifizierungsvorgang aus.
  2. Geben Sie What are my meetings for today? ein und drücken Sie enter. Die Chat-App Gemini Enterprise sollte mit den Ergebnissen antworten.

c8c63fb3f324fecf.png

Öffnen Sie Gmail in einem neuen Tab und folgen Sie dieser Anleitung:

  1. Senden Sie sich selbst eine E‑Mail mit dem Betreff We need to talk und dem Text Are you available today between 8 and 9 AM?.
  2. Öffnen Sie die neu empfangene E‑Mail-Nachricht.
  3. Öffnen Sie die Seitenleiste für das Add-on Enterprise AI.
  4. Legen Sie Message auf Am I? fest.
  5. Klicke auf Nachricht senden.
  6. Die Antwort wird nach der Schaltfläche angezeigt.

d33b8cb50ee251b7.png

6. Bereinigen

Google Cloud-Projekt löschen

Damit Ihrem Google Cloud-Konto die in diesem Codelab verwendeten Ressourcen nicht in Rechnung gestellt werden, empfehlen wir, das Google Cloud-Projekt zu löschen.

Gehen Sie in der Google Cloud Console so vor:

  1. Klicken Sie auf das Menü ☰ > IAM & Verwaltung > Einstellungen.

  1. Klicken Sie auf Beenden.
  2. Geben Sie die Projekt-ID ein.
  3. Klicken Sie auf Trotzdem beenden.

3b9492d97f771b2c.png

7. Glückwunsch

Glückwunsch! Sie haben Lösungen entwickelt, die die Vorteile von Gemini Enterprise und Google Workspace für Mitarbeiter nutzen.

Nächste Schritte

In diesem Codelab werden nur die typischsten Anwendungsfälle behandelt. Es gibt jedoch viele Erweiterungsbereiche, die Sie in Ihren Lösungen berücksichtigen sollten, z. B.:

  • KI-basierte Entwicklertools wie die Gemini CLI und Antigravity verwenden
  • Integration mit anderen Agent-Frameworks und ‑Tools wie benutzerdefinierten MCPs, benutzerdefinierten Funktionsaufrufen und generativen Benutzeroberflächen
  • Integration mit anderen KI-Modellen, einschließlich benutzerdefinierter Modelle, die auf dedizierten Plattformen wie Vertex AI gehostet werden.
  • Einbindung in andere Agents, die auf dedizierten Plattformen wie Dialogflow oder von Drittanbietern über den Cloud Marketplace gehostet werden.
  • Veröffentlichen Sie Agents auf dem Cloud Marketplace, um Teams, Organisationen oder öffentlichen Nutzern die Möglichkeit zu geben, sie zu verwenden.

Weitere Informationen

Für Entwickler sind viele Ressourcen verfügbar, z. B. YouTube-Videos, Dokumentationswebsites, Codebeispiele und Tutorials: