Il framework Agent Development Kit (ADK) semplifica la creazione, la valutazione e il deployment di agenti AI. L'ADK fornisce un approccio modulare e basato sul codice per la creazione di agenti in grado di ragionare, pianificare e utilizzare strumenti.
Questo tutorial mostra come creare ed eseguire il deployment di un agente AI in Cloud Run utilizzando l'ADK per Python. Questo agente recupera il report meteo per una città specificata.
Per saperne di più sull'hosting dell'agente ADK utilizzando Google Cloud CLI, consulta Esegui il deployment su Cloud Run nella documentazione di ADK.
Obiettivi
- Scrivi l'applicazione di esempio per definire l'agente meteo.
- Esegui il deployment dell'agente in Cloud Run dal codice sorgente.
- Esegui l'agente per interrogare le informazioni meteo.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il Calcolatore prezzi.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run Admin API, Vertex AI API, and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Configura l'ambiente di sviluppo Cloud Run nel tuo progetto Google Cloud .
- Installa ADK seguendo le istruzioni riportate nella documentazione di Agent Development Kit.
Se il tuo progetto è soggetto a un criterio dell'organizzazione con restrizioni di dominio che limitano le chiamate non autenticate, devi accedere al servizio di cui è stato eseguito il deployment come descritto in Test dei servizi privati.
-
Cloud Run Source Developer (
roles/run.sourceDeveloper) sul progetto -
Vertex AI User (
roles/aiplatform.user) sul progetto -
Service Account User (
roles/iam.serviceAccountUser) sull'identità di servizio -
Visualizzatore log (
roles/logging.viewer) sul progetto
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per eseguire il deployment di un agente AI su Cloud Run, chiedi all'amministratore di concederti i seguenti ruoli IAM:
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
scrivi l'applicazione di esempio
Per scrivere un'applicazione in Python:
Crea una nuova directory principale denominata
parent_foldere passa alla directory:mkdir parent_folder cd parent_folderNella directory
parent_folder, crea una nuova sottodirectory denominatamulti_tool_agente passa a questa directory:mkdir multi_tool_agent cd multi_tool_agentCrea un file
__init__.pyper importare l'agente:from . import agentCrea un file
agent.pyper definire l'agente per rispondere alle domande sull'ora e sul meteo in una città specificata:import datetime from zoneinfo import ZoneInfo from google.adk.agents import Agent def get_weather(city: str) -> dict: """Retrieves the current weather report for a specified city. Args: city (str): The name of the city for which to retrieve the weather report. Returns: dict: status and result or error msg. """ if city.lower() == "new york": return { "status": "success", "report": ( "The weather in New York is sunny with a temperature of 25 degrees" " Celsius (77 degrees Fahrenheit)." ), } else: return { "status": "error", "error_message": f"Weather information for '{city}' is not available.", } def get_current_time(city: str) -> dict: """Returns the current time in a specified city. Args: city (str): The name of the city for which to retrieve the current time. Returns: dict: status and result or error msg. """ if city.lower() == "new york": tz_identifier = "America/New_York" else: return { "status": "error", "error_message": ( f"Sorry, I don't have timezone information for {city}." ), } tz = ZoneInfo(tz_identifier) now = datetime.datetime.now(tz) report = ( f'The current time in {city} is {now.strftime("%Y-%m-%d %H:%M:%S %Z%z")}' ) return {"status": "success", "report": report} root_agent = Agent( name="weather_time_agent", model="gemini-2.0-flash", description=( "Agent to answer questions about the time and weather in a city." ), instruction=( "You are a helpful agent who can answer user questions about the time and weather in a city." ), tools=[get_weather, get_current_time], )Crea un file
.enve aggiungi le seguenti variabili:GOOGLE_GENAI_USE_VERTEXAI=TRUE GOOGLE_CLOUD_PROJECT=PROJECT_ID GOOGLE_CLOUD_LOCATION=REGIONSostituisci quanto segue:
- PROJECT_ID: l'ID progetto Google Cloud .
- REGION: la regione in cui prevedi di eseguire il deployment del servizio.
Vai alla directory della cartella principale
parent_foldere crea un filerequirements.txtper aggiungere la dipendenzagoogle-adk:google-adkIl progetto di origine include la seguente struttura:
parent_folder/ ├── requirements.txt └── multi_tool_agent/ ├── __init__.py ├── agent.py └── .env
La tua app è terminata e pronta per il deployment.
Esegui il deployment in Cloud Run dall'origine
Il deployment dal codice sorgente crea automaticamente un'immagine container dal codice sorgente e la esegue il deployment.
Nella directory del codice sorgente (
parent_folder), esegui il deployment su Cloud Run utilizzando il seguente comando:gcloud beta run deploy --source .
Quando ti viene richiesto il nome del servizio, premi Invio per accettare il nome predefinito, ad esempio
weather-agent.Se ti viene chiesto di abilitare API aggiuntive nel progetto, ad esempio l'API Artifact Registry, rispondi premendo
y.Quando ti viene chiesto di selezionare la regione, scegli la regione che preferisci, ad esempio
europe-west1.Se ti viene chiesto di creare un repository nella regione specificata, rispondi premendo
y.Se ti viene chiesto di consentire l'accesso pubblico: rispondi
y. Potresti non visualizzare questo prompt se è presente un criterio dell'organizzazione con limitazioni del dominio che lo impedisce. Per maggiori dettagli, consulta la sezione Prima di iniziare.
Quindi, attendi qualche istante fino al completamento del deployment. Se l'operazione riesce, la riga di comando visualizza l'URL del servizio. Vai a
/list-appsdall'URL del servizio. Ad esempio,https://weather-agent-123456789101.us-central1.run.app/list-apps.
Esegui l'agente
Per eseguire query sull'agente ADK, esegui i seguenti comandi curl:
Per ottenere l'elenco delle app, esegui questo comando:
curl -X GET SERVICE_URL/list-appsSostituisci SERVICE_URL con l'URL del servizio di cui è stato eseguito il deployment.
Per avviare una sessione, esegui questo comando:
curl -X POST SERVICE_URL/apps/multi_tool_agent/users/u_123/sessions/s_123 -H "Content-Type: application/json" -d '{"key1": "value1", "key2": 42}'Per eseguire una query sull'agente, esegui questo comando:
curl -X POST SERVICE_URL/run \ -H "Content-Type: application/json" \ -d "{\"appName\": \"multi_tool_agent\",\"userId\": \"u_123\",\"sessionId\": \"s_123\",\"newMessage\": { \"role\": \"user\", \"parts\": [{ \"text\": \"What's the weather in New York today?\" }]}}"
L'agente restituisce le informazioni meteo nei risultati della query.
Per ulteriori informazioni ed esempi sui comandi curl supportati, consulta Utilizzare il server API nella documentazione di ADK.
Esegui la pulizia
Per evitare addebiti aggiuntivi al tuo account Google Cloud , elimina tutte le risorse che hai implementato con questo tutorial.
Elimina il progetto
Se hai creato un nuovo progetto per questo tutorial, eliminalo. Se hai utilizzato un progetto esistente e devi conservarlo senza le modifiche che hai aggiunto in questo tutorial, elimina le risorse che hai creato per il tutorial.
Il modo più semplice per eliminare la fatturazione è eliminare il progetto creato per il tutorial.
Per eliminare il progetto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Elimina le risorse del tutorial
Elimina il servizio Cloud Run di cui hai eseguito il deployment in questo tutorial. I servizi Cloud Run non comportano costi finché non ricevono richieste.
Per eliminare il servizio Cloud Run, esegui questo comando:
gcloud run services delete SERVICE-NAME
Sostituisci SERVICE-NAME con il nome del servizio.
Puoi eliminare i servizi Cloud Run anche dalla consoleGoogle Cloud .
Rimuovi la configurazione della regione predefinita
gcloudche hai aggiunto durante la configurazione del tutorial:gcloud config unset run/regionRimuovi la configurazione del progetto:
gcloud config unset project