Develop and deploy agents on Vertex AI Agent Engine

This page demonstrates how to create and deploy an agent that returns the exchange rate between two currencies on a specified date, using the following agent frameworks:

Before you begin

  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

To get the permissions that you need to use Vertex AI Agent Engine, ask your administrator to grant you the following IAM roles on your project:

For more information about granting roles, see Manage access to projects, folders, and organizations .

You might also be able to get the required permissions through custom roles or other predefined roles .

Install and initialize the Vertex AI SDK for Python

  1. Run the following command to install the Vertex AI SDK for Python and other required packages:

    ADK

    Preview

    This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of the Service Specific Terms . Pre-GA features are available "as is" and might have limited support. For more information, see the launch stage descriptions .

     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

    Preview

    This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of the Service Specific Terms . Pre-GA features are available "as is" and might have limited support. For more information, see the launch stage descriptions .

     pip  
    install  
    --upgrade  
    --quiet  
    google-cloud-aiplatform [ 
    agent_engines,llama_index ] 
     
    
  2. Authenticate as a user

    Colab

    Run the following code:

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

    Cloud Shell

    No action required.

    Local Shell

    Run the following command:

     gcloud  
    auth  
    application-default  
    login 
    
  3. Run the following code to import Vertex AI Agent Engine and initialize the 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. 
     ) 
     
    

Develop an agent

First, develop a tool:

  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 
 () 
 

Next, instantiate an agent:

ADK

Preview

This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of the Service Specific Terms . Pre-GA features are available "as is" and might have limited support. For more information, see the launch stage descriptions .

  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

Preview

This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of the Service Specific Terms . Pre-GA features are available "as is" and might have limited support. For more information, see the launch stage descriptions .

  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 
 , 
 ) 
 

Finally, test the agent locally:

ADK

Preview

This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of the Service Specific Terms . Pre-GA features are available "as is" and might have limited support. For more information, see the launch stage descriptions .

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

where USER_ID is a user-defined ID with a character limit of 128.

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

Preview

This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of the Service Specific Terms . Pre-GA features are available "as is" and might have limited support. For more information, see the launch stage descriptions .

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

Deploy an agent

To deploy the agent:

ADK

Preview

This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of the Service Specific Terms . Pre-GA features are available "as is" and might have limited support. For more information, see the launch stage descriptions .

  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

Preview

This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of the Service Specific Terms . Pre-GA features are available "as is" and might have limited support. For more information, see the launch stage descriptions .

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

This creates a reasoningEngine resource in Vertex AI.

Use an agent

Test the deployed agent by sending a query:

ADK

Preview

This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of the Service Specific Terms . Pre-GA features are available "as is" and might have limited support. For more information, see the launch stage descriptions .

  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

Preview

This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of the Service Specific Terms . Pre-GA features are available "as is" and might have limited support. For more information, see the launch stage descriptions .

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

Clean up

To avoid incurring charges to your Google Cloud account for the resources used on this page, follow these steps.

  remote_agent 
 . 
 delete 
 ( 
 force 
 = 
 True 
 ) 
 

What's next

Create a Mobile Website
View Site in Mobile | Classic
Share by: