Guida rapida: crea ed esegui il deployment di un'app web Python (smolagents) in Cloud Run

Questo documento mostra come creare ed eseguire il deployment di un'applicazione smolagents in Cloud Run.

Seguendo i passaggi di questa guida rapida, Cloud Run crea automaticamente un Dockerfile quando esegui il deployment dal codice sorgente.

Prima di iniziare

  1. Accedi al tuo Google Cloud account. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  2. Installa Google Cloud CLI.

  3. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  4. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  5. Crea o seleziona un Google Cloud progetto.

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico: puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l' resourcemanager.projects.create autorizzazione. Scopri come concedere i ruoli.
    • Crea un Google Cloud progetto:

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il Google Cloud progetto che stai creando.

    • Seleziona il Google Cloud progetto che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del Google Cloud progetto.

  6. Se utilizzi un progetto esistente per questa guida, verifica di disporre delle autorizzazioni necessarie per completare la guida. Se hai creato un nuovo progetto, disponi già delle autorizzazioni necessarie.

  7. Verifica che la fatturazione sia abilitata per il tuo Google Cloud progetto.

  8. Installa Google Cloud CLI.

  9. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  10. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  11. Crea o seleziona un Google Cloud progetto.

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico: puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l' resourcemanager.projects.create autorizzazione. Scopri come concedere i ruoli.
    • Crea un Google Cloud progetto:

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il Google Cloud progetto che stai creando.

    • Seleziona il Google Cloud progetto che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del Google Cloud progetto.

  12. Se utilizzi un progetto esistente per questa guida, verifica di disporre delle autorizzazioni necessarie per completare la guida. Se hai creato un nuovo progetto, disponi già delle autorizzazioni necessarie.

  13. Verifica che la fatturazione sia abilitata per il tuo Google Cloud progetto.

  14. Se sei soggetto a un criterio dell'organizzazione di limitazione del dominio che limita le chiamate non autenticate per il tuo progetto, dovrai accedere al servizio di cui hai eseguito il deployment come descritto in Testare i servizi privati.

  15. Abilita l'API Cloud Run Admin e le API Cloud Build:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin), che contiene l' serviceusage.services.enable autorizzazione. Scopri come concedere i ruoli.

    gcloud services enable run.googleapis.com cloudbuild.googleapis.com

    Dopo aver abilitato l'API Cloud Run Admin, viene creato automaticamente l'account di servizio predefinito di Compute Engine.

  16. Esamina i prezzi di Cloud Run o stima i costi con il Calcolatore prezzi.
  17. Per eseguire il deployment dell'app smolagents con un modello Gemini, devi disporre di una chiave API di Google AI Studio. Per generare una chiave API utilizzando Google AI Studio, consulta la sezione Utilizzo delle chiavi API Gemini nella documentazione dell'API Gemini.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per completare questa guida rapida, 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.

Concedi al account di servizio Cloud Build l'accesso al tuo progetto

Per impostazione predefinita, Cloud Build utilizza automaticamente il service account predefinito di Compute Engine come account di servizio Cloud Build predefinito per creare il codice sorgente e la risorsa Cloud Run, a meno che tu non esegua l'override di questo comportamento.

Affinché Cloud Build possa creare le tue origini, concedi al service account il Cloud Run Builder (roles/run.builder) ruolo sul tuo progetto:

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

Sostituisci PROJECT_ID con il tuo Google Cloud ID progetto e SERVICE_ACCOUNT_EMAIL_ADDRESS con l' indirizzo email del account di servizio Cloud Build. Se utilizzi il account di servizio predefinito di Compute Engine come account di servizio Cloud Build, utilizza il seguente formato per l'indirizzo email del account di servizio:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

Sostituisci PROJECT_NUMBER con il tuo Google Cloud numero del progetto.

Per istruzioni dettagliate su come trovare l'ID progetto e il numero di progetto, consulta Creazione e gestione dei progetti.

La propagazione della concessione del ruolo Cloud Run Builder richiede un paio di minuti per propagarsi.

scrivi l'applicazione di esempio

Per scrivere un'applicazione in Python:

  1. Crea una nuova directory denominata my-agent-app e accedi alla directory:

    mkdir my-agent-app
    cd my-agent-app
    
  2. Crea un file denominato main.py e incolla il seguente codice:

    import os
    from fastapi import FastAPI, HTTPException
    from pydantic import BaseModel
    from smolagents import CodeAgent, LiteLLMModel, tool
    
    # 1. Define a simple tool for the agent
    @tool
    def get_greeting(name: str) -> str:
      """
      Returns a special greeting for the user.
      Args:
          name: The name of the person to greet.
      """
      return f"Hello {name}, welcome to the agentic world running on Cloud Run!"
    
    # 2. Initialize the Gemini Model via LiteLLM
    # Make sure GEMINI_API_KEY is set in your environment variables
    model = LiteLLMModel(
    model_id="gemini/gemini-2.5-flash", # This is the model name. If a newer model is available, you can use that.
    api_key=os.environ.get("GEMINI_API_KEY")
    )
    
    # 3. Create the CodeAgent
    agent = CodeAgent(
      tools=[get_greeting],
      model=model,
      add_base_tools=True # Adds basic python tools like print
    )
    
    # 4. Setup FastAPI
    app = FastAPI()
    
    class AgentRequest(BaseModel):
      task: str
    
    @app.get("/")
    def health_check():
      return {"status": "running", "service": "smolagents-fastapi"}
    
    @app.post("/run")
    def run_agent(request: AgentRequest):
      try:
        # Run the agent with the user's task
        response = agent.run(request.task)
        return {"response": str(response)}
      except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))
    
  3. Crea un file denominato requirements.txt e incolla il seguente codice:

    fastapi
    uvicorn
    smolagents[toolkit]
    litellm
    

Esegui il deployment in Cloud Run dall'origine

Il deployment dall'origine crea automaticamente un'immagine container dal codice sorgente ed esegue il deployment.

Per eseguire il deployment dall'origine utilizzando il seguente comando:

  gcloud run deploy smolagents-demo \
    --source . \
    --region us-central1 \
    --no-allow-unauthenticated \
    --set-env-vars GEMINI_API_KEY=API_KEY

Sostituisci API_KEY con la tua chiave API di Google AI Studio.

Dopo aver eseguito il deployment dell'app, Cloud Run visualizza l'URL del servizio, ad esempio https://smolagents-demo-xyz-uc.a.run.app.

Testa il servizio Cloud Run

Testa il servizio inviando un'attività all'agente utilizzando il seguente comando curl:

  curl -X POST YOUR-SERVICE-URL/run \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
    -d '{"task": "Use the greeting tool to say hello to Gemini User"}'

Sostituisci YOUR-SERVICE-URL con l'URL del tuo servizio.

L'agente invia la seguente risposta:

{
 "response": "Hello Gemini User, welcome to the agentic world running on Cloud Run!"
}

Per verificare che il servizio funzioni correttamente, controlla la scheda Log del servizio Cloud Run.

Libera spazio

Per evitare che al tuo Google Cloud account vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il Google Cloud progetto con le risorse.

Per evitare addebiti aggiuntivi al tuo Google Cloud account, elimina tutte le risorse di cui hai eseguito il deployment con questa guida rapida.

Elimina il repository

Cloud Run non addebita costi quando il servizio di cui hai eseguito il deployment non è in uso. Tuttavia, potresti comunque ricevere addebiti per l'archiviazione dell'immagine container in Artifact Registry. Per eliminare i repository Artifact Registry, segui i passaggi descritti in Eliminare i repository nella documentazione di Artifact Registry.

Elimina il servizio

I servizi Cloud Run non comportano costi finché non ricevono richieste. Per eliminare il servizio Cloud Run, segui uno di questi passaggi:

Console

Per eliminare un servizio:

  1. Nella Google Cloud console, vai alla pagina Servizi di Cloud Run:

    Vai a Cloud Run

  2. Individua il servizio che vuoi eliminare nell'elenco dei servizi e fai clic sulla relativa casella di controllo per selezionarlo.

  3. Fai clic su Elimina. Verranno eliminate tutte le revisioni del servizio.

gcloud

Per eliminare un servizio, esegui questo comando:

gcloud run services delete SERVICE --region REGION

Sostituisci quanto segue:

  • SERVICE: nome del servizio.
  • REGION: Google Cloud regione del servizio.

Elimina il progetto di test

L'eliminazione del progetto interrompe la fatturazione per tutte le risorse del progetto. Google Cloud Per rilasciare tutte le Google Cloud risorse del progetto:

    Elimina un Google Cloud progetto:

    gcloud projects delete PROJECT_ID

Passaggi successivi

Per saperne di più sulla creazione di un container dal codice sorgente e sul push in un repository, consulta: