Integrare Vertex AI Agents con Google Workspace

1. Prima di iniziare

99afae2505f696fb.png

Che cos'è Vertex AI?

Vertex AI è la piattaforma di sviluppo unificata di Google Cloud per creare, eseguire il deployment e scalare agenti e applicazioni di AI di livello enterprise. Fornisce a sviluppatori e data scientist gli strumenti sofisticati necessari per progettare workflow agentici personalizzati profondamente integrati con l'infrastruttura su scala globale.

  • Accedi a Model Garden:scegli tra oltre 150 modelli di base, tra cui l'intera famiglia Gemini, modelli di terze parti e modelli open source specializzati per trovare la soluzione giusta per attività specifiche dell'agente.
  • Progettare un'orchestrazione complessa:Vertex AI fornisce il framework per progettare agenti autonomi che utilizzano il ragionamento per pianificare, eseguire attività in più passaggi e chiamare API esterne.
  • Fondatezza di livello enterprise: collega gli agenti a dati aziendali in tempo reale, inclusa la RAG (Retrieval-Augmented Generation) ad alte prestazioni, per eliminare le allucinazioni e garantire l'accuratezza dei fatti.
  • DevOps: integra perfettamente lo sviluppo di agenti nelle pipeline CI/CD esistenti con SDK, API e strumenti di valutazione robusti per misurare le prestazioni e la sicurezza degli agenti su larga scala.
  • Sicurezza di livello industriale:Vertex AI garantisce che i dati dei clienti utilizzati per l'addestramento o la base rimangano privati, criptati e conformi ai requisiti di residenza globali.
  • Infrastruttura ottimizzata:scala i carichi di lavoro degli agenti senza sforzo nei cluster TPU e GPU di livello mondiale di Google, garantendo prestazioni a bassa latenza anche per le applicazioni globali più esigenti.

127f2ed7d484722c.png

Cos'è Google Workspace?

Google Workspace è una raccolta di soluzioni di produttività e collaborazione basate su cloud progettate per privati, scuole e aziende:

  • Comunicazione:servizi email professionali (Gmail), videoconferenze (Meet) e messaggistica di gruppo (Chat).
  • Creazione di contenuti:strumenti per scrivere documenti (Documenti), creare fogli di lavoro (Fogli) e progettare presentazioni (Presentazioni).
  • Organizzazione:calendari condivisi (Calendar) e appunti digitali (Keep).
  • Archiviazione:spazio cloud centralizzato per salvare e condividere i file in modo sicuro (Drive).
  • Gestione:controlli amministrativi per gestire gli utenti e le impostazioni di sicurezza (Console di amministrazione Workspace).

Quali tipi di integrazioni personalizzate?

Google Workspace e Vertex AI creano un potente ciclo di feedback in cui Workspace fornisce dati in tempo reale e contesto di collaborazione, mentre Vertex AI offre i modelli, il ragionamento agentico e l'orchestrazione necessari per automatizzare i flussi di lavoro intelligenti.

  • Connettività intelligente:gli archivi dati, le API e i server MCP gestiti da Google (personalizzati e gestiti da Google) consentono agli agenti di accedere in modo sicuro e senza problemi ai dati di Workspace e di eseguire azioni per conto degli utenti.
  • Agenti personalizzati:utilizzando progettisti no-code o framework pro-code, i team possono creare agenti specializzati basati su dati e azioni di Workspace gestiti dall'amministratore.
  • Integrazione nativa:i componenti aggiuntivi di Workspace colmano il divario tra i sistemi di AI e le applicazioni come Chat e Gmail, tramite componenti UI dedicati o processi in background. In questo modo, gli agenti possono incontrare gli utenti esattamente dove si trovano per un'assistenza immediata e consapevole del contesto.

Combinando il solido ecosistema di produttività di Google Workspace con la potenza avanzata di Vertex AI, le organizzazioni possono trasformare le proprie operazioni grazie ad agenti di AI personalizzati e basati sui dati che automatizzano flussi di lavoro complessi direttamente negli strumenti che i team utilizzano già ogni giorno.

Prerequisiti

Se vuoi seguire tutti i passaggi nel tuo ambiente, ti serviranno:

Cosa creerai

In questo codelab, creiamo tre soluzioni con agenti Vertex AI strettamente integrati con Google Workspace. Mostreranno i pattern architetturali che possono essere utilizzati per interagire con dati, azioni e UI.

App Vertex AI Search

Questo agente consente agli utenti di cercare dati ed eseguire azioni per Workspace nel loro linguaggio naturale. Si basa sui seguenti elementi:

  • Modello: Gemini.
  • Dati e azioni:datastore Vertex AI per Google Workspace (Calendar, Gmail, Drive).
  • Host dell'agente:Vertex AI Search.
  • UI: widget web di Vertex AI Search.

d276ff8e2b9d0ddf.png

Agente personalizzato

Questo agente consente agli utenti di cercare dati ed eseguire azioni per Workspace nel loro linguaggio naturale utilizzando strumenti e regole personalizzati. Si basa sui seguenti elementi:

  • Modello: Gemini.
  • Dati e azioni:datastore Vertex AI per Google Workspace (Calendar, Gmail, Drive), server del protocollo di contesto del modello (MCP) Vertex AI gestito da Google, funzione di strumento personalizzato per inviare messaggi Google Chat (tramite l'API Google Chat).
  • Strumenti di creazione di agenti:Agent Development Kit (ADK).
  • Host dell'agente:Vertex AI Agent Engine.
  • UI: ADK Web.

145f47f45332e6be.png

293ec4d3e2bb6a0.png

Agente come componente aggiuntivo di Google Workspace

Questo agente consente agli utenti di cercare dati per Workspace nel loro linguaggio naturale all'interno del contesto delle UI delle app Workspace. Si basa sui seguenti elementi:

  • Modello: Gemini.
  • Dati e azioni:datastore Vertex AI per Google Workspace (Calendar, Gmail, Drive), server del protocollo di contesto del modello (MCP) Vertex AI gestito da Google, funzione di strumento personalizzato per inviare messaggi Google Chat (tramite l'API Google Chat).
  • Strumenti di creazione di agenti:Agent Development Kit (ADK).
  • Host dell'agente:Vertex AI Agent Engine.
  • UI: componente aggiuntivo Google Workspace per Chat e Gmail (facilmente estendibile a Calendar, Drive, Documenti, Fogli e Presentazioni).
  • Componente aggiuntivo Google Workspace: Apps Script, API Vertex AI Agent Engine, contestuale (messaggio Gmail selezionato).

172da43f310a0579.png

840b494aa5eaa1ef.png

Cosa imparerai a fare

  • I punti di integrazione tra Vertex AI Search e Google Workspace che consentono dati e azioni.
  • Le opzioni per creare agenti personalizzati ospitati in Vertex AI.
  • I modi in cui gli utenti possono accedere agli agenti, ad esempio il widget web di Vertex AI Search e le applicazioni Google Workspace.

2. Configura

Prima di creare soluzioni, dobbiamo inizializzare le impostazioni delle applicazioni Vertex AI del progetto, abilitare le API richieste e creare i datastore Vertex AI Workspace.

Concetti relativi alle recensioni

Applicazione Vertex AI

Un'applicazione Vertex AI è una soluzione end-to-end gestita su Google Cloud che integra modelli di machine learning (come agenti di AI generativa o motori di ricerca) con dati aziendali e strumenti specializzati per eseguire attività complesse come la ricerca semantica, la generazione di contenuti o l'interazione automatizzata con i clienti.

Vertex AI data store

Un datastore Vertex AI è un'entità che contiene i dati importati da un'origine dati proprietaria come Google Workspace o da applicazioni di terze parti come Jira o Shopify. I datastore che contengono dati di applicazioni di terze parti sono chiamati anche connettori di dati.

Avvia le impostazioni di Vertex AI Applications

Inizializza le impostazioni di Vertex AI Applications per attivare la creazione di agenti.

Apri la console Google Cloud in una nuova scheda, quindi segui questi passaggi:

  1. Seleziona il progetto.
  2. Nel campo di ricerca di Google Cloud, vai ad AI Applications.

  1. Dopo aver esaminato e accettato i termini, fai clic su Continua e attiva l'API.
  2. Apri le Impostazioni.
  3. Nella scheda Autenticazione, modifica globale.

93b0cc6ed63fba0c.png

  1. Seleziona Google Identity, quindi fai clic su Salva.

5c01b4cbeebaa93b.png

Abilita API

I datastore Vertex AI Workspace richiedono l'attivazione delle API:

  1. Nella console Google Cloud, abilita le API Calendar, Gmail e People:

3877dcaa56624d0b.png

  1. Fai clic su Menu ☰ > API e servizi > API e servizi abilitati e poi verifica che API Google Calendar, API Gmail e API People siano nell'elenco.

Crea datastore

Crea il datastore Google Drive:

  1. Nella console Google Cloud, vai ad AI Applications, quindi vai a Data Stores.

  1. Fai clic su + Crea datastore.
  2. In Origine, nella sezione Google Drive, fai clic su Seleziona.

6939363368bde36d.png

  1. In Dati, seleziona Tutti e fai clic su Continua.

5044243322acec9e.png

  1. In Configurazione, imposta Nome connettore dati su drive e fai clic su Continua dopo aver esaminato e accettato gli addebiti che potrebbero essere applicati.

1f5deb1aeecee983.png

  1. In Prezzi, seleziona il modello di prezzo che preferisci e fai clic su Crea. In questo codelab è consigliato l'utilizzo dei prezzi generali.
  2. Viene eseguito automaticamente il reindirizzamento alla pagina Datastore, dove puoi visualizzare il datastore appena aggiunto.

Crea il datastore Google Calendar:

  1. Fai clic su + Crea datastore.
  2. In Origine, cerca Google Calendar e fai clic su Seleziona.
  3. Nella sezione Azioni, fai clic su Salta.
  4. Nella sezione Configurazione, imposta Nome connettore dati su calendar.
  5. Fai clic su Crea.
  6. Viene eseguito automaticamente il reindirizzamento alla pagina Datastore, dove puoi visualizzare il datastore appena aggiunto.

Crea il datastore Google Gmail:

  1. Fai clic su + Nuovo datastore.
  2. In Origine, cerca Google Gmail e fai clic su Seleziona.
  3. Nella sezione Azioni, fai clic su Salta.
  4. Nella sezione Configurazione, imposta Nome connettore dati su gmail.
  5. Fai clic su Crea.
  6. Viene eseguito automaticamente il reindirizzamento alla pagina Datastore, dove puoi visualizzare il datastore appena aggiunto.

3. App Vertex AI Search

Questo agente consente agli utenti di cercare dati ed eseguire azioni per Workspace nel loro linguaggio naturale. Si basa sui seguenti elementi:

  • Modello: Gemini.
  • Dati e azioni:datastore Vertex AI per Google Workspace (Calendar, Gmail, Drive).
  • Host dell'agente:Vertex AI Search.
  • UI: widget web di Vertex AI Search.

Rivedere i concetti

App Vertex AI Search

Un'app Vertex AI Search fornisce risultati di ricerca, azioni e agenti agli utenti finali. Il termine app può essere utilizzato in modo intercambiabile con il termine motore nel contesto delle API. Un'app deve essere connessa a un datastore per poter utilizzare i dati al suo interno per mostrare risultati di ricerca, risposte o azioni.

Widget web di Vertex AI Search

Il widget web di Vertex AI Search è un componente UI predefinito e personalizzabile che consente agli sviluppatori di incorporare una barra di ricerca e un'interfaccia dei risultati basate sull'AI direttamente in un sito web con una programmazione minima.

Anteprima di Vertex AI Search

L'anteprima di Vertex AI Search è un ambiente di test integrato nella console Google Cloud che consente agli sviluppatori di convalidare le configurazioni di ricerca e le risposte generative prima di implementare senza problemi le stesse impostazioni in un widget web di Vertex AI Search pronto per la produzione.

Esamina l'architettura della soluzione

1f337dc91da74391.png

Crea app

Crea una nuova app di ricerca per ancorare i datastore.

Apri AI Applications > App dalla console Cloud, poi segui questi passaggi:

  1. Fai clic su + Crea app.
  2. In Tipo, in Ricerca personalizzata (generale), fai clic su Crea.

9714a5fff49b5e1b.png

  1. In Configurazione, seleziona Funzionalità dell'edizione Enterprise e Risposte generative dopo aver esaminato e accettato i prezzi.
  2. Imposta Nome app su codelab.
  3. Viene generato un ID in base al nome e visualizzato sotto il campo. Copialo.
  4. Imposta Nome azienda su Codelab.
  5. Imposta Più regioni su global (Global).
  6. Fai clic su Continua.

327702cd837cbb18.png

  1. In Dati, seleziona i datastore Drive, Gmail e Calendar, poi fai clic su Continua.

5745607f3c43d5c0.png

  1. In Prezzi, seleziona il modello di prezzo che preferisci e fai clic su Crea. In questo codelab è consigliato l'utilizzo dei prezzi generali.
  2. L'app viene creata e viene eseguito automaticamente il reindirizzamento a Applicazioni AI > App > codelab > Panoramica dell'app.
  3. Vai a Datastore connessi.
  4. Dopo qualche minuto, tutti gli stati dei datastore connessi dovrebbero essere Attivo.

d53ed9d9d1ced955.png

Configurare il widget web

Configura l'aspetto visivo e il comportamento del widget Ricerca.

  1. Vai a Configurazioni.
  2. Nella scheda UI, imposta Tipo di ricerca su Cerca con follow-up, quindi fai clic su Salva e pubblica.

af1ca3bd78e1cb4f.png

Prova l'app

Testa l'app di ricerca direttamente nella console Google Cloud.

  1. Vai ad Anteprima, dove viene visualizzato il widget web.
  2. Nella chat, digita Do I have any meetings today? e premi enter.
  3. Nella chat, digita Did I receive an email on March 1st 2026? e premi enter.
  4. Nella chat, digita Give me the title of the latest Drive file I created e premi enter.

d276ff8e2b9d0ddf.png

4. Agente personalizzato

Questo agente consente agli utenti di cercare dati ed eseguire azioni per Workspace nel loro linguaggio naturale utilizzando strumenti e regole personalizzati. Si basa sui seguenti elementi:

  • Modello: Gemini.
  • Dati e azioni:datastore Vertex AI per Google Workspace (Calendar, Gmail, Drive), server del protocollo di contesto del modello (MCP) Vertex AI gestito da Google, funzione di strumento personalizzato per inviare messaggi Google Chat (tramite l'API Google Chat).
  • Strumenti di creazione di agenti:Agent Development Kit (ADK).
  • Host dell'agente:Vertex AI Agent Engine.
  • UI: ADK Web.

Concetti relativi alle recensioni

Agent Development Kit (ADK)

Agent Development Kit (ADK) è una suite specializzata di strumenti e framework progettati per semplificare la creazione di agenti AI autonomi fornendo moduli predefiniti per il ragionamento, la gestione della memoria e l'integrazione degli strumenti.

Model Context Protocol (MCP)

Il Model Context Protocol (MCP) è uno standard aperto progettato per consentire un'integrazione semplice e sicura tra le applicazioni AI e varie origini dati o strumenti tramite un'interfaccia universale "plug and play".

Strumento Funzione

Uno strumento di funzione è una routine eseguibile predefinita che un modello di AI può attivare per eseguire azioni specifiche o recuperare dati in tempo reale da sistemi esterni, estendendo le sue funzionalità oltre la semplice generazione di testo.

ADK Web

ADK web è l'interfaccia utente di sviluppo integrata fornita con l'SDK ADK per semplificare lo sviluppo e il debug.

Esamina l'architettura della soluzione

f14251cca6a19b1f.png

Esaminare il codice sorgente

agent.py

Il seguente codice esegue l'autenticazione con Vertex AI, inizializza gli strumenti API Vertex AI Search MCP e Chat e definisce il comportamento dell'agente.

  1. Autenticazione: recupera ACCESS_TOKEN dalle variabili di ambiente per autenticare le chiamate MCP e API.
  2. Configurazione degli strumenti: inizializza vertexai_mcp, un insieme di strumenti che si connette al server Model Context Protocol (MCP) di Vertex AI Search, e lo strumento send_direct_message. In questo modo, l'agente può eseguire ricerche nei datastore connessi e inviare messaggi di Google Chat.
  3. Definizione dell'agente: definisce root_agent utilizzando il modello gemini-2.5-flash. Le istruzioni indicano all'agente di dare la priorità all'utilizzo dello strumento di ricerca per il recupero delle informazioni e dello strumento send_direct_message per le azioni, basandosi in modo efficace sui dati aziendali.
...
MODEL = "gemini-2.5-flash"

# Access token for authentication
ACCESS_TOKEN = os.environ.get("ACCESS_TOKEN")
if not ACCESS_TOKEN:
    raise ValueError("ACCESS_TOKEN environment variable must be set")

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 send_direct_message(email: str, message: str) -> dict:
    """Sends a Google Chat Direct Message (DM) to a specific user by email address."""
    chat_client = chat_v1.ChatServiceClient(
        credentials=Credentials(token=ACCESS_TOKEN)
    )

    # 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,
        headers={"Authorization": f"Bearer {ACCESS_TOKEN}"}
    ),
    tool_filter=['search']
)

# 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)]
)

Scarica il codice sorgente

Per iniziare, scarica il codice campione nell'ambiente locale.

  1. Scarica questo repository GitHub.

  1. In un terminale, apri la directory solutions/enterprise-ai-agent-local.

Abilita le API

La soluzione richiede l'abilitazione di API aggiuntive:

  1. Nella console Google Cloud, abilita le API Vertex AI, Cloud Resource Manager e Google Chat:

60bae4065338c5bf.png

  1. Fai clic su Menu ☰ > API e servizi > API e servizi abilitati e poi verifica che API Vertex AI, API Cloud Resource Manager e API Google Chat siano nell'elenco.

La soluzione richiede una configurazione della schermata di consenso:

  1. Nella console Google Cloud, fai clic su per visualizzare il menu ☰ > Piattaforma Google Auth > Branding.

  1. Fai clic su Inizia.
  2. Nella sezione Informazioni sull'app, imposta il Nome app su Codelab .
  3. In Email dell'assistenza utente, scegli un indirizzo email dell'assistenza a cui gli utenti possono contattarti in caso di domande sul loro consenso.
  4. Fai clic su Avanti.
  5. Nella sezione Pubblico, seleziona Interno.
  6. Fai clic su Avanti.
  7. In Informazioni di contatto, inserisci un indirizzo email a cui ricevere notifiche in caso di modifiche al tuo progetto.
  8. Fai clic su Avanti.
  9. In Fine, esamina le Norme relative ai dati utente dei servizi API di Google e, se le accetti, seleziona Accetto le Norme relative ai dati utente dei servizi API di Google.
  10. Fai clic su Continua e poi su Crea.

bb53eeb45c51d301.png

  1. La configurazione viene salvata e viene visualizzata automaticamente la pagina Google Auth Platform > Panoramica.

Per saperne di più, consulta la guida completa Configurare il consenso OAuth.

Crea le credenziali client OAuth

Crea un nuovo client OAuth per app desktop per autenticare l'utente in un ambiente locale:

  1. Nella console Google Cloud, fai clic su per visualizzare il menu ☰ > Piattaforma Google Auth > Client.

  1. Fai clic su + Crea cliente.
  2. Per Tipo di applicazione, seleziona App desktop.
  3. Imposta Nome su codelab.
  4. Fai clic su Crea. Viene visualizzata la credenziale appena creata.
  5. Fai clic su Scarica JSON e salva il file come client_secret.json nella directory solutions/enterprise-ai-agent-local.

c1c9bc2f8c14dd6c.png

Abilita Vertex AI Search MCP

  1. In un terminale, esegui:
gcloud beta services mcp enable discoveryengine.googleapis.com \
     --project=$(gcloud config get-value project)

Configurare l'app Chat

Configura l'app Google Chat con i dettagli informativi di base.

  1. Nella console Google Cloud, cerca Google Chat API nel campo di ricerca di Google Cloud, fai clic su API Google Chat, poi su Gestisci e infine su Configurazione.

  1. Imposta Nome app e Descrizione su Vertex AI.
  2. Imposta l'URL dell'avatar su https://developers.google.com/workspace/add-ons/images/quickstart-app-avatar.png.
  3. Deseleziona Attiva funzionalità interattive, quindi fai clic su Disattiva nella finestra di dialogo modale visualizzata.
  4. Seleziona Errori di log in Logging.
  5. Fai clic su Salva.

952e7ebcb945f1b2.png

Esegui l'agente in ADK Web

Avvia l'agente localmente utilizzando l'interfaccia web ADK.

  1. In un terminale, apri la directory solutions/enterprise-ai-agent-local ed esegui:
# 1. Authenticate with all the required scopes
gcloud auth application-default login \
  --client-id-file=client_secret.json \
   --scopes=https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/chat.spaces,https://www.googleapis.com/auth/chat.messages

# 2. Configure environment
export ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
export GOOGLE_GENAI_USE_VERTEXAI=1
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value project)
export GOOGLE_CLOUD_LOCATION=us-central1

# 3. Create and activate a new virtual environment
python3 -m venv .venv
source .venv/bin/activate

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

# 5. Start ADK Web
adk web

95fc30883ce3d56f.png

Prova l'agente

Verifica il flusso chattando con l'agente personalizzato.

  1. Nel browser internet, apri il sito web ADK.
  2. Nella chat, digita Please find my meetings for today, I need their titles and links e premi enter.
  3. L'agente risponde con un elenco di eventi di calendario (a seconda dell'account dell'utente).
  4. Nella chat, digita Please send a Chat message to someone@example.com with the following text: Hello! e premi enter.
  5. L'agente risponde con un messaggio di conferma.

145f47f45332e6be.png

293ec4d3e2bb6a0.png

5. Agente come componente aggiuntivo di Google Workspace

Questo agente consente agli utenti di cercare dati per Workspace nel loro linguaggio naturale all'interno del contesto delle UI delle app Workspace. Si basa sui seguenti elementi:

  • Modello: Gemini.
  • Dati e azioni:datastore Vertex AI per Google Workspace (Calendar, Gmail, Drive), server del protocollo di contesto del modello (MCP) Vertex AI gestito da Google, funzione di strumento personalizzato per inviare messaggi Google Chat (tramite l'API Google Chat).
  • Strumenti di creazione di agenti:Agent Development Kit (ADK).
  • Host dell'agente:Vertex AI Agent Engine.
  • UI: componente aggiuntivo Google Workspace per Chat e Gmail (facilmente estendibile a Calendar, Drive, Documenti, Fogli e Presentazioni).
  • Componente aggiuntivo Google Workspace: Apps Script, API Vertex AI Agent Engine, contestuale (messaggio Gmail selezionato).

Rivedere i concetti

Componente aggiuntivo di Google Workspace

Un componente aggiuntivo di Google Workspace è un'applicazione personalizzata che estende una o più applicazioni Google Workspace (Gmail, Chat, Calendar, Documenti, Drive, Meet, Fogli e Presentazioni).

Apps Script

Apps Script è una piattaforma JavaScript basata sul cloud e basata su Google Drive che ti consente di integrare e automatizzare le attività nei prodotti Google.

Framework delle schede di Google Workspace

Il framework delle schede in Google Workspace consente agli sviluppatori di creare interfacce utente interattive e avanzate. Consente di creare schede organizzate e visivamente accattivanti che possono includere testo, immagini, pulsanti e altri widget. Queste schede migliorano l'esperienza utente fornendo informazioni strutturate e consentendo azioni rapide direttamente all'interno delle applicazioni Workspace.

Esamina l'architettura della soluzione

f2fd048ba298f431.png

Esaminare il codice sorgente

Agent

agent.py

Il seguente codice esegue l'autenticazione con Vertex AI, inizializza gli strumenti API Vertex AI Search MCP e Chat e definisce il comportamento dell'agente.

  1. Autenticazione: utilizza una funzione helper _get_access_token_from_context per recuperare il token di autenticazione (CLIENT_AUTH_NAME) inserito dal client. Questo token è fondamentale per chiamare in modo sicuro i servizi downstream come Vertex AI Search MCP e gli strumenti Google Chat.
  2. Configurazione degli strumenti: inizializza vertexai_mcp, un insieme di strumenti che si connette al server Model Context Protocol (MCP) di Vertex AI Search, e lo strumento send_direct_message. In questo modo, l'agente può eseguire ricerche nei datastore connessi e inviare messaggi di Google Chat.
  3. Definizione dell'agente: definisce root_agent utilizzando il modello gemini-2.5-flash. Le istruzioni indicano all'agente di dare la priorità all'utilizzo dello strumento di ricerca per il recupero delle informazioni e dello strumento send_direct_message per le azioni, basandosi in modo efficace sui dati aziendali.
...
MODEL = "gemini-2.5-flash"

# Client injects a bearer token into the ToolContext state.
# The key pattern is "CLIENT_AUTH_NAME_<random_digits>".
# We dynamically parse this token to authenticate our MCP and API calls.
CLIENT_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(CLIENT_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)]
)

Client

appsscript.json

La seguente configurazione definisce i trigger e le autorizzazioni del componente aggiuntivo.

  1. Definisce il componente aggiuntivo: indica a Workspace che questo progetto è un componente aggiuntivo sia per Chat sia per Gmail.
  2. Trigger contestuali: per Gmail, configura un contextualTrigger che viene attivato onAddonEvent ogni volta che un utente apre un messaggio email. In questo modo, il componente aggiuntivo può "vedere" i contenuti dell'email.
  3. Autorizzazioni: elenca le oauthScopes necessarie per l'esecuzione del componente aggiuntivo, ad esempio le autorizzazioni per leggere l'email corrente, eseguire lo script e connettersi a servizi esterni (come le API Vertex AI).
...
"addOns": {
    "common": {
      "name": "Vertex 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/cloud-platform",
   "https://www.googleapis.com/auth/gmail.addons.execute",
   "https://www.googleapis.com/auth/gmail.addons.current.message.readonly"
 ]
...

Chat.gs

Il seguente codice gestisce i messaggi di Google Chat in arrivo.

  1. Riceve messaggi: la funzione onMessage è il punto di ingresso per le interazioni con i messaggi.
  2. Gestisce il contesto: salva space.name (l'ID dello spazio di Chat) nelle proprietà dell'utente. In questo modo, quando l'agente è pronto a rispondere, sa esattamente a quale conversazione inviare il messaggio.
  3. Delegates to Agent: chiama requestAgent, passando il messaggio dell'utente alla logica principale che gestisce la comunicazione API.
...
// 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

Il seguente codice crea la barra laterale di Gmail e acquisisce il contesto dell'email.

  1. Crea la UI: createSidebarCard crea l'interfaccia visiva utilizzando il servizio di schede di Workspace. Crea un layout semplice con un'area di input di testo e un pulsante "Invia messaggio".
  2. Acquisizione del contesto email: in handleSendMessage, il codice verifica se l'utente sta attualmente visualizzando un'email (event.gmail.messageId). In caso affermativo, recupera in modo sicuro l'oggetto e il corpo dell'email e li aggiunge al prompt dell'utente.
  3. Visualizza il risultato: una volta che l'agente risponde, il codice aggiorna la scheda della barra laterale per mostrare la risposta.
...
// 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 response = queryAgent({ text: finalQueryText });

    // 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(response.text);
    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

Il seguente codice coordina la chiamata API a Vertex AI.

  1. Orchestra la chiamata API: queryAgent è il ponte tra il componente aggiuntivo e Vertex AI Agent Engine. Costruisce una richiesta che include la query dell'utente e il token di autenticazione nello stato.
  2. Trasmette in streaming la risposta: poiché le risposte dell'agente possono richiedere un po' di tempo, utilizza l'API streamQuery con Server-Sent Events (SSE). Il codice raccoglie la risposta in blocchi e ricostruisce la risposta completa.
...
// Service that handles Vertex AI Agent operations.

// Submits a query to the AI agent and returns the response string synchronously
function queryAgent(input) {
 let systemPrompt = "SYSTEM PROMPT START Do not respond with tables but use bullet points instead." +
   " Do not ask the user follow-up questions or converse with them as history is not kept in this interface." +
   " SYSTEM PROMPT END\n\n";

 const requestPayload = {
   "class_method": "async_stream_query",
   "input": {
     "user_id": "vertex_ai_add_on",
     "message": { "role": "user", "parts": [{ "text": systemPrompt + input.text }] },
     "state_delta": {
       "enterprise-ai_999": `${ScriptApp.getOAuthToken()}`
     }
   }
 };

 const responseContentText = UrlFetchApp.fetch(
   `https://${getLocation()}-aiplatform.googleapis.com/v1/${getReasoningEngine()}:streamQuery?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 author = "default";
 let answerText = "";
 for (const eventJson of events) {
   if (isInDebugMode()) {
     console.log("Event: " + eventJson);
   }
   const event = JSON.parse(eventJson);

   // Retrieve the agent responsible for generating the content
   author = event.author;
  
   // Ignore events that are not useful for the end-user
   if (!event.content) {
     console.log(`${author}: internal event`);
     continue;
   }

   // Handle text answers
   const parts = event.content.parts || [];
   const textPart = parts.find(p => p.text);
   if (textPart) {
     answerText += textPart.text;
   }
 }
 return { author: author, text: answerText };
}
...

Esegui il deployment dell'agente in Vertex AI Agent Engine

  1. In un terminale, apri la directory solutions/enterprise-ai-agent dalle origini scaricate nei passaggi precedenti, quindi esegui:
# 1. Create and activate a new virtual environment
deactivate
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. Quando nei log viene visualizzata la riga Deploying to agent engine..., apri un nuovo terminale ed esegui il comando seguente per aggiungere le autorizzazioni richieste a Vertex AI Reasoning Engine Service Agent:
# 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. Attendi il completamento del comando adk deploy, quindi copia il nome della risorsa dell'agente appena sottoposto a deployment dall'output del comando in verde.

d098fe1347d6581b.png

Avviare il service account

Crea un service account dedicato per autorizzare le operazioni lato server del componente aggiuntivo.

Nella console Google Cloud, segui questi passaggi:

  1. Fai clic su Menu ☰ > IAM e amministrazione > Service account > + Crea service account.

  1. Imposta Nome service account su vertexai-add-on.

46be0eb53f416c59.png

  1. Fai clic su Fine. Viene visualizzata la pagina Service account e puoi vedere il service account che hai creato.

f002fef61c71ed8.png

  1. Seleziona il service account appena creato e poi la scheda Chiavi.
  2. Fai clic su Aggiungi chiave, poi su Crea nuova chiave.
  3. Seleziona JSON, quindi fai clic su Crea.

7b140535d9e1af44.png

  1. La finestra di dialogo si chiude e la coppia di chiavi pubblica/privata appena creata viene scaricata automaticamente nell'ambiente locale come file JSON.

Creare e configurare il progetto Apps Script

Crea un nuovo progetto Apps Script per ospitare il codice del componente aggiuntivo e configurare le relative proprietà di connessione.

  1. Fai clic sul pulsante seguente per aprire il progetto Apps Script Enterprise AI add on:

  1. Fai clic su Panoramica > Crea una copia.
  2. Nel progetto Apps Script, fai clic su Impostazioni progetto > Modifica proprietà script > Aggiungi proprietà script per aggiungere le proprietà dello script.
  3. Imposta REASONING_ENGINE_RESOURCE_NAME sul nome della risorsa dell'agente Vertex AI copiato nei passaggi precedenti. Il formato è il seguente:
projects/<PROJECT_NUMBER>/locations/us-central1/reasoningEngines/<AGENT_ID>
  1. Imposta APP_SERVICE_ACCOUNT_KEY sulla chiave JSON del file del service account scaricato nei passaggi precedenti.
  2. Fai clic su Salva proprietà script.

Eseguire il deployment in Gmail e Chat

Esegui il deployment del componente aggiuntivo per testarlo direttamente in Gmail e Google Chat.

Nel progetto Apps Script, segui questi passaggi:

  1. Fai clic su Deployment > Test deployment, poi su Installa. Ora è disponibile in Gmail.
  2. Fai clic su Copia in ID deployment head.

b0cba69eef271850.png

Nella console Google Cloud, segui questi passaggi:

  1. Cerca Google Chat API nel campo di ricerca di Google Cloud, fai clic su API Google Chat, poi su Gestisci e infine su Configurazione.

  1. Seleziona Abilita funzionalità interattive.
  2. Deseleziona Partecipa a spazi e conversazioni di gruppo.
  3. Nella sezione Impostazioni di connessione, seleziona Apps Script.
  4. Imposta Deployment ID (ID deployment) sull'Head Deployment ID (ID deployment principale) copiato nei passaggi precedenti.
  5. Nella sezione Visibilità, seleziona Rendi disponibile questa app di chat a utenti e gruppi specifici nel tuo dominio Workspace e inserisci il tuo indirizzo email.
  6. Fai clic su Salva.

6ea187ccb90a0e49.png

Prova il componente aggiuntivo

Interagisci con il componente aggiuntivo live per verificare che possa recuperare i dati e rispondere alle domande nel contesto.

Apri Google Chat in una nuova scheda, poi segui questi passaggi:

  1. Apri uno spazio di messaggi diretti con l'app di chat Vertex AI.

495632314dec5a5d.png

  1. Fai clic su Configura e segui il flusso di autenticazione.
  2. Digita What are my meetings for today? e premi enter. L'app di chat Vertex AI dovrebbe rispondere con i risultati.

172da43f310a0579.png

Apri Gmail in una nuova scheda, poi segui questi passaggi:

  1. Inviati un'email con il campo Oggetto impostato su We need to talk e il campo Corpo impostato su Are you available today between 8 and 9 AM?.
  2. Apri il messaggio email appena ricevuto.
  3. Apri la barra laterale del componente aggiuntivo Vertex AI.
  4. Imposta Messaggio su Do I have any meeting conflicts?
  5. Fai clic su Invia messaggio.
  6. La risposta viene visualizzata dopo il pulsante.

840b494aa5eaa1ef.png

6. Esegui la pulizia

Elimina progetto Google Cloud

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo codelab, ti consigliamo di eliminare il progetto Google Cloud.

Nella console Google Cloud, segui questi passaggi:

  1. Fai clic su Menu ☰ > IAM e amministrazione > Impostazioni.

  1. Fai clic su Chiudi.
  2. Inserisci l'ID progetto.
  3. Fai clic su Chiudi comunque.

3b9492d97f771b2c.png

7. Complimenti

Complimenti! Avete creato soluzioni che sfruttano la potenza di avvicinare Vertex AI e Google Workspace ai lavoratori.

Passaggi successivi

In questo codelab mostriamo solo i casi d'uso più tipici, ma ci sono molte aree di espansione che potresti prendere in considerazione nelle tue soluzioni, ad esempio:

  • Utilizza strumenti per sviluppatori basati sull'AI come Gemini CLI e Antigravity.
  • Integrati con altri framework e strumenti per agenti, come MCP personalizzati, chiamate di funzioni personalizzate e UI generative.
  • Esegui l'integrazione con altri modelli di AI, inclusi quelli personalizzati, ospitati su piattaforme dedicate come Vertex AI.
  • Eseguire l'integrazione con altri agenti, ospitati in piattaforme dedicate come Dialogflow o da terze parti tramite Cloud Marketplace.
  • Pubblica agenti su Cloud Marketplace per consentire a team, organizzazioni o utenti pubblici di utilizzarli.

Scopri di più

Gli sviluppatori hanno a disposizione molte risorse, come video di YouTube, siti web di documentazione, esempi di codice e tutorial: