Guide de démarrage rapide : Créer et déployer un agent d'IA sur Cloud Run à l'aide de l'Agent Development Kit (ADK)

Découvrez comment utiliser une seule commande pour créer et déployer un agent d'IA sur Cloud Run à l'aide de l'Agent Development Kit (ADK) pour Python. L'agent que vous déployez récupère les prévisions météo pour une ville que vous spécifiez.

En suivant les étapes de ce guide de démarrage rapide, Cloud Run crée automatiquement un fichier Dockerfile pour vous lorsque vous déployez à partir du code source.

Pour en savoir plus sur la façon dont le buildpack Python détermine le point d'entrée par défaut pour les déploiements de sources Cloud Run, consultez Créer une application Python.

Avant de commencer

  1. 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.
  2. Install the Google Cloud CLI.

  3. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  4. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  5. Create or select 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 the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Si vous utilisez un projet existant pour ce guide, vérifiez que vous disposez des autorisations nécessaires pour suivre les instructions. Si vous avez créé un projet, vous disposez déjà des autorisations requises.

  7. Verify that billing is enabled for your Google Cloud project.

  8. Install the Google Cloud CLI.

  9. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  10. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  11. Create or select 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 the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. Si vous utilisez un projet existant pour ce guide, vérifiez que vous disposez des autorisations nécessaires pour suivre les instructions. Si vous avez créé un projet, vous disposez déjà des autorisations requises.

  13. Verify that billing is enabled for your Google Cloud project.

  14. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable run.googleapis.com aiplatform.googleapis.com cloudbuild.googleapis.com
  15. Installez l'ADK en suivant les instructions de la documentation Agent Development Kit.
  16. Si vous êtes soumis à une règle d'administration de restriction de domaine limitant les appels non authentifiés pour votre projet, vous devez accéder au service déployé comme décrit dans la section Tester les services privés.

  17. Consultez les tarifs de Cloud Run ou estimez les coûts à l'aide du simulateur de coût.
  18. Rôles requis

    Pour obtenir les autorisations nécessaires pour suivre ce guide de démarrage rapide, demandez à votre administrateur de vous accorder les rôles IAM suivants :

    Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

    Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

    Accorder au compte de service Cloud Build l'accès à votre projet

    Cloud Build utilise automatiquement le compte de service Compute Engine par défaut comme compte de service Cloud Build par défaut pour compiler votre code source et votre ressource Cloud Run, sauf si vous modifiez ce comportement.

    Pour que Cloud Build puisse créer vos sources, accordez au compte de service Cloud Build le rôle Créateur Cloud Run (roles/run.builder) dans votre projet :

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_EMAIL_ADDRESS \
        --role=roles/run.builder

    Remplacez PROJECT_ID par l'ID de votre projet Google Cloudet SERVICE_ACCOUNT_EMAIL_ADDRESS par l'adresse e-mail du compte de service Cloud Build. Si vous utilisez le compte de service Compute Engine par défaut comme compte de service Cloud Build, utilisez le format suivant pour l'adresse e-mail du compte de service :

    PROJECT_NUMBER-compute@developer.gserviceaccount.com

    Remplacez PROJECT_NUMBER par votre numéro de projet Google Cloud.

    Pour obtenir des instructions détaillées sur la recherche de votre ID et de votre numéro de projet, consultez Créer et gérer des projets.

    L'application du rôle de compilateur Cloud Run prend quelques minutes.

    Coder l'exemple d'application

    Pour écrire une application en Python :

    1. Créez un répertoire parent nommé parent_folder et accédez-y :

      mkdir parent_folder
      cd parent_folder
      
    2. Dans le répertoire parent_folder, créez un sous-répertoire nommé multi_tool_agent et accédez-y :

      mkdir multi_tool_agent
      cd multi_tool_agent
      
    3. Créez un fichier __init__.py pour importer l'agent :

      from . import agent
      
    4. Créez un fichier agent.py pour définir l'agent qui répond aux questions sur l'heure et la météo dans une ville spécifique :

      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],
      )
      
    5. Créez un fichier .env et ajoutez les variables suivantes :

      GOOGLE_GENAI_USE_VERTEXAI=TRUE
      GOOGLE_CLOUD_PROJECT=PROJECT_ID
      GOOGLE_CLOUD_LOCATION=REGION
      

      Remplacez les éléments suivants :

      • PROJECT_ID : ID du projet Google Cloud .
      • REGION : région dans laquelle vous prévoyez de déployer votre service.
    6. Accédez au répertoire du dossier parent parent_folder et créez un fichier requirements.txt pour ajouter la dépendance google-adk :

      google-adk
      

      Votre projet source inclut la structure suivante :

      parent_folder/
      ├── requirements.txt
      └── multi_tool_agent/
          ├── __init__.py
          ├── agent.py
          └── .env
      

    Votre application est terminée et prête à être déployée.

    Déployer sur Cloud Run depuis la source

    Cette fonction crée automatiquement une image de conteneur à partir du code source et la déploie.

    1. Dans le répertoire du code source (parent_folder), déployez sur Cloud Run à l'aide de la commande suivante :

      gcloud beta run deploy --source .
      1. Lorsque vous êtes invité à saisir le nom du service, appuyez sur Entrée pour accepter le nom par défaut, par exemple weather-agent.

      2. Si vous êtes invité à activer des API supplémentaires sur le projet, par exemple l'API Artifact Registry, répondez en appuyant sur y.

      3. Lorsque vous êtes invité à indiquer la région, sélectionnez la région de votre choix, par exemple europe-west1.

      4. Si vous êtes invité à créer un dépôt dans la région spécifiée, répondez en appuyant sur y.

      5. Si vous êtes invité à autoriser l'accès public, répondez y. Cette invite peut ne pas s'afficher si une règle d'administration de restriction de domaine l'empêche. Pour plus d'informations, consultez la section Avant de commencer.

      Patientez quelques instants jusqu'à la fin du déploiement. En cas de réussite, la ligne de commande affiche l'URL du service. Accédez à /list-apps à partir de l'URL de votre service. Exemple : https://weather-agent-123456789101.us-central1.run.app/list-apps.

    Exécuter votre agent

    Pour interroger l'agent ADK, exécutez les commandes curl suivantes :

    1. Pour obtenir la liste des applications, exécutez la commande suivante :

      curl -X GET SERVICE_URL/list-apps
      

      Remplacez SERVICE_URL par l'URL de votre service déployé.

    2. Pour démarrer une session, exécutez la commande suivante :

      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}'
      
    3. Pour interroger l'agent, exécutez la commande suivante :

      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'agent renvoie les informations météorologiques dans les résultats de votre requête.

    Pour en savoir plus et obtenir des exemples sur les commandes curl compatibles, consultez Utiliser le serveur d'API dans la documentation de l'ADK.

    Effectuer un nettoyage

    Pour éviter que des frais supplémentaires ne soient facturés sur votre compte Google Cloud , supprimez toutes les ressources que vous avez déployées avec ce guide de démarrage rapide.

    Supprimer votre dépôt

    Cloud Run ne vous facture pas lorsque votre service déployé n'est pas utilisé. Toutefois, il se peut que des frais vous soient facturés pour le stockage de l'image de conteneur dans Artifact Registry. Pour supprimer des dépôts Artifact Registry, suivez les étapes décrites dans Supprimer des dépôts de la documentation Artifact Registry.

    Supprimer votre service

    Les services Cloud Run n'entraînent pas de coûts tant qu'ils ne reçoivent pas de requêtes. Pour supprimer votre service Cloud Run, procédez comme suit :

    Console

    Pour supprimer un service, procédez comme suit :

    1. Dans la console Google Cloud , accédez à la page Services de Cloud Run :

      Accédez à Cloud Run

    2. Recherchez le service que vous souhaitez supprimer dans la liste des services, puis cliquez la case correspondante pour le sélectionner.

    3. Cliquez sur Supprimer pour supprimer toutes les révisions du service.

    gcloud

    Pour supprimer un service, exécutez la commande suivante :

    gcloud run services delete SERVICE --region REGION

    Remplacez les éléments suivants :

    • SERVICE : nom de votre service.
    • REGION : Google Cloud région du service.

    Supprimer votre projet de test

    La suppression de votre projet Google Cloud arrête la facturation de toutes les ressources de ce projet. Pour libérer toutes les ressources Google Cloud de votre projet, procédez comme suit :

      Delete a Google Cloud project:

      gcloud projects delete PROJECT_ID

    Étapes suivantes

    Pour savoir comment créer un conteneur à partir d'une source de code et le transférer vers un dépôt, consultez la section suivante :