在 Vertex AI Agent Engine 上開發及部署代理

本頁說明如何使用下列代理框架建立及部署代理,以便傳回兩種貨幣在指定日期的匯率:

事前準備

  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. 如要取得使用 Vertex AI Agent Engine 的必要權限,請要求管理員授予您專案的下列 IAM 角色:

    如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

    您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

    安裝並初始化 Vertex AI SDK for Python

    1. 執行下列指令,安裝 Vertex AI SDK for Python 和其他必要套件:

      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. 以使用者身分進行驗證

      Colab

      請執行下列程式碼:

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

      Cloud Shell

      您無需採取任何動作。

      本機殼層

      執行下列指令:

      gcloud auth application-default login
    3. 執行下列程式碼,匯入 Vertex AI Agent Engine 並初始化 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.
      )
      

    開發代理

    首先,開發工具:

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

    接著,將代理程式例項化:

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

    最後,在本機測試代理程式:

    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)
    

    其中 USER_ID 是使用者定義的 ID,字元上限為 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

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

    部署代理程式

    如要部署代理程式,請按照下列步驟操作:

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

    這會在 Vertex AI 中建立 reasoningEngine 資源。

    使用代理程式

    傳送查詢內容,測試已部署的代理程式:

    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?"
    )
    

    清除所用資源

    如要避免系統向您的 Google Cloud 帳戶收取本頁所用資源的費用,請按照下列步驟操作。

    remote_agent.delete(force=True)
    

    後續步驟