在 Vertex AI Agent Engine 上開發及部署代理
本頁說明如何使用下列代理框架建立及部署代理,以便傳回兩種貨幣在指定日期的匯率:
代理開發套件 (ADK) (預先發布版)
LlamaIndex 查詢管道 (預先發布版)
事前準備
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI and Cloud Storage APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI and Cloud Storage APIs.
-
Vertex AI 使用者 (
roles/aiplatform.user
) -
儲存空間管理員 (
roles/storage.admin
) 執行下列指令,安裝 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]
以使用者身分進行驗證
Colab
請執行下列程式碼:
from google.colab import auth auth.authenticate_user(project_id="PROJECT_ID")
Cloud Shell
您無需採取任何動作。
本機殼層
執行下列指令:
gcloud auth application-default login
執行下列程式碼,匯入 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. )
如要取得使用 Vertex AI Agent Engine 的必要權限,請要求管理員授予您專案的下列 IAM 角色:
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
安裝並初始化 Vertex AI SDK for Python
開發代理
首先,開發工具:
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)