Sviluppare ed eseguire il deployment di agenti su Vertex AI Agent Engine

Questa pagina mostra come creare ed eseguire il deployment di un agente che restituisce il tasso di cambio tra due valute in una data specifica utilizzando i seguenti framework dell'agente:

Prima di iniziare

  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  4. Enable the Vertex AI and Cloud Storage APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  7. Enable the Vertex AI and Cloud Storage APIs.

    Enable the APIs

  8. Per ottenere le autorizzazioni necessarie per utilizzare Vertex AI Agent Engine, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto:

    Per ulteriori informazioni 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.

    Installare e inizializzare l'SDK Vertex AI Python

    1. Esegui il seguente comando per installare l'SDK Vertex AI Python e altri pacchetti richiesti:

      ADK

      pip install --upgrade --quiet google-cloud-aiplatform[agent_engines,adk]

      LangGraph

      pip install --upgrade --quiet google-cloud-aiplatform[agent_engines,langchain]

      LangChain

      pip install --upgrade --quiet google-cloud-aiplatform[agent_engines,langchain]

      AG2

      pip install --upgrade --quiet google-cloud-aiplatform[agent_engines,ag2]

      LlamaIndex

      pip install --upgrade --quiet google-cloud-aiplatform[agent_engines,llama_index]
    2. Autenticarsi come utente

      Colab

      Esegui questo codice:

      from google.colab import auth
      
      auth.authenticate_user(project_id="PROJECT_ID")
      

      Cloud Shell

      Non occorre alcun intervento.

      Local Shell

      Esegui questo comando:

      gcloud auth application-default login
    3. Esegui il seguente codice per importare Vertex AI Agent Engine e inizializzare l'SDK:

      import vertexai
      from vertexai import agent_engines
      
      vertexai.init(
          project="PROJECT_ID",               # Your project ID.
          location="LOCATION",                # Your cloud region.
          staging_bucket="gs://BUCKET_NAME",  # Your staging bucket.
      )
      

    Sviluppare un agente

    Innanzitutto, sviluppa uno strumento:

    def get_exchange_rate(
        currency_from: str = "USD",
        currency_to: str = "EUR",
        currency_date: str = "latest",
    ):
        """Retrieves the exchange rate between two currencies on a specified date."""
        import requests
    
        response = requests.get(
            f"https://api.frankfurter.app/{currency_date}",
            params={"from": currency_from, "to": currency_to},
        )
        return response.json()
    

    Successivamente, crea un'istanza di un agente:

    ADK

    from google.adk.agents import Agent
    from vertexai.preview.reasoning_engines import AdkApp
    
    agent = Agent(
        model="gemini-2.0-flash",
        name='currency_exchange_agent',
        tools=[get_exchange_rate],
    )
    
    app = AdkApp(agent=agent)
    

    LangGraph

    from vertexai import agent_engines
    
    agent = agent_engines.LanggraphAgent(
        model="gemini-2.0-flash",
        tools=[get_exchange_rate],
        model_kwargs={
            "temperature": 0.28,
            "max_output_tokens": 1000,
            "top_p": 0.95,
        },
    )
    

    LangChain

    from vertexai import agent_engines
    
    agent = agent_engines.LangchainAgent(
        model="gemini-2.0-flash",
        tools=[get_exchange_rate],
        model_kwargs={
            "temperature": 0.28,
            "max_output_tokens": 1000,
            "top_p": 0.95,
        },
    )
    

    AG2

    from vertexai import agent_engines
    
    agent = agent_engines.AG2Agent(
        model="gemini-2.0-flash",
        runnable_name="Get Exchange Rate Agent",
        tools=[get_exchange_rate],
    )
    

    LlamaIndex

    from vertexai.preview import reasoning_engines
    
    def runnable_with_tools_builder(model, runnable_kwargs=None, **kwargs):
        from llama_index.core.query_pipeline import QueryPipeline
        from llama_index.core.tools import FunctionTool
        from llama_index.core.agent import ReActAgent
    
        llama_index_tools = []
        for tool in runnable_kwargs.get("tools"):
            llama_index_tools.append(FunctionTool.from_defaults(tool))
        agent = ReActAgent.from_tools(llama_index_tools, llm=model, verbose=True)
        return QueryPipeline(modules = {"agent": agent})
    
    agent = reasoning_engines.LlamaIndexQueryPipelineAgent(
        model="gemini-2.0-flash",
        runnable_kwargs={"tools": [get_exchange_rate]},
        runnable_builder=runnable_with_tools_builder,
    )
    

    Infine, testa l'agente localmente:

    ADK

    for event in app.stream_query(
        user_id="USER_ID",
        message="What is the exchange rate from US dollars to SEK today?",
    ):
        print(event)
    

    dove USER_ID è un ID definito dall'utente con un limite di 128 caratteri.

    LangGraph

    agent.query(input={"messages": [
        ("user", "What is the exchange rate from US dollars to SEK today?"),
    ]})
    

    LangChain

    agent.query(
        input="What is the exchange rate from US dollars to SEK today?"
    )
    

    AG2

    agent.query(
        input="What is the exchange rate from US dollars to SEK today?"
    )
    

    LlamaIndex

    agent.query(
        input="What is the exchange rate from US dollars to SEK today?"
    )
    

    Esegui il deployment di un agente

    Per eseguire il deployment dell'agente:

    ADK

    from vertexai import agent_engines
    
    remote_agent = agent_engines.create(
        app,
        requirements=["google-cloud-aiplatform[agent_engines,adk]"],
    )
    

    LangGraph

    from vertexai import agent_engines
    
    remote_agent = agent_engines.create(
        agent,
        requirements=["google-cloud-aiplatform[agent_engines,langchain]"],
    )
    

    LangChain

    from vertexai import agent_engines
    
    remote_agent = agent_engines.create(
        agent,
        requirements=["google-cloud-aiplatform[agent_engines,langchain]"],
    )
    

    AG2

    from vertexai import agent_engines
    
    remote_agent = agent_engines.create(
        agent,
        requirements=["google-cloud-aiplatform[agent_engines,ag2]"],
    )
    

    LlamaIndex

    from vertexai import agent_engines
    
    remote_agent = agent_engines.create(
        agent,
        requirements=["google-cloud-aiplatform[agent_engines,llama_index]"],
    )
    

    Viene creata una risorsa reasoningEngine in Vertex AI.

    Utilizzare un agente

    Prova l'agente di cui è stato eseguito il deployment inviando una query:

    ADK

    for event in remote_agent.stream_query(
        user_id="USER_ID",
        message="What is the exchange rate from US dollars to SEK today?",
    ):
        print(event)
    

    LangGraph

    remote_agent.query(input={"messages": [
        ("user", "What is the exchange rate from US dollars to SEK today?"),
    ]})
    

    LangChain

    remote_agent.query(
        input="What is the exchange rate from US dollars to SEK today?"
    )
    

    AG2

    remote_agent.query(
        input="What is the exchange rate from US dollars to SEK today?"
    )
    

    LlamaIndex

    remote_agent.query(
        input="What is the exchange rate from US dollars to SEK today?"
    )
    

    Esegui la pulizia

    Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.

    remote_agent.delete(force=True)
    

    Passaggi successivi