在 Agent Runtime 上开发和部署代理
借助 Agent Runtime,您可以托管使用各种框架开发的代理。本文档介绍了如何使用 LangGraph、LangChain、AG2 或 LlamaIndex 创建、部署和测试代理。
本快速入门将引导您完成以下步骤:
- 设置 Google Cloud 项目。
- 安装 Agent Platform SDK for Python 和您选择的框架。
- 开发货币兑换代理。
- 将代理部署到 Agent Runtime。
- 测试已部署的代理。
如需了解使用智能体开发套件 (ADK) 的快速入门,请参阅使用智能体开发套件在 Agent Platform 上开发和部署代理。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud的新用户, 请创建一个账号,以便在 真实场景中评估我们产品的性能。新客户还可获享 $300 赠金,用于 运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Agent Platform and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Agent Platform and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
如需获取使用 Agent Runtime 所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:
-
Agent Platform User (
roles/aiplatform.user) -
Storage Admin (
roles/storage.admin)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
安装并初始化 Agent Platform SDK for Python
运行以下命令以安装 Agent Platform SDK for Python 和其他 所需的软件包:
LangGraph
pip install --upgrade --quiet google-cloud-aiplatform[agent_engines,langchain]>=1.112LangChain
pip install --upgrade --quiet google-cloud-aiplatform[agent_engines,langchain]>=1.112AG2
pip install --upgrade --quiet google-cloud-aiplatform[agent_engines,ag2]>=1.112LlamaIndex
pip install --upgrade --quiet google-cloud-aiplatform[agent_engines,llama_index]>=1.112以用户身份进行身份验证
Colab
运行以下代码:
from google.colab import auth auth.authenticate_user(project_id="PROJECT_ID")Cloud Shell
您无需执行任何操作。
本地 Shell
运行以下命令:
gcloud auth application-default login运行以下代码以导入 Agent Platform 并初始化 SDK:
开发代理
为代理开发货币兑换工具:
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()实例化代理:
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, )在本地测试代理:
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?" )
部署代理
通过在 Agent Platform 中创建 reasoningEngine 资源来部署代理:
LangGraph
remote_agent = client.agent_engines.create(
agent,
config={
"requirements": ["google-cloud-aiplatform[agent_engines,langchain]"],
"identity_type": types.IdentityType.AGENT_IDENTITY,
},
)
LangChain
remote_agent = client.agent_engines.create(
agent,
config={
"requirements": ["google-cloud-aiplatform[agent_engines,langchain]"],
"identity_type": types.IdentityType.AGENT_IDENTITY,
},
)
AG2
remote_agent = client.agent_engines.create(
agent,
config={
"requirements": ["google-cloud-aiplatform[agent_engines,ag2]"],
"identity_type": types.IdentityType.AGENT_IDENTITY,
},
)
LlamaIndex
remote_agent = client.agent_engines.create(
agent,
config={
"requirements": ["google-cloud-aiplatform[agent_engines,llama_index]"],
"identity_type": types.IdentityType.AGENT_IDENTITY,
},
)
使用代理
通过发送查询来测试部署的代理:
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)