如需构建在Google Cloud上可靠且安全地运行的自主 AI 智能体,您可以结合使用结构化系统指令、显式工具架构、推理边界、人机协同 (HITL) 安全控制和上下文清理。与依赖基本输入输出提示的交互式聊天机器人不同,采用 Gemini 的智能体系统可执行多步骤规划、调用外部 API、监控执行反馈,并在多轮工作流中维护工作记忆。
本文档介绍了用于设计自主智能体的架构模式和提示词工程实践。如果您想了解如何为 Gemini Cloud Assist 或 IDE 对话撰写互动式提示,请参阅为 Gemini in Google Cloud撰写更好的提示。
系统指令
在智能体架构中,您可以使用系统指令来定义智能体的基准身份、规则和权限。与每次对话轮次都会变化的标准用户提示不同,系统指令只需定义一次,并在所有执行轮次中保持一致。
系统指令定义了以下内容:
- 基准身份和角色:定义智能体的角色和主要功能,例如“您是数据库管理员智能体”。
- 行为规则:建立操作限制、安全边界和输出格式要求,例如“未经人工批准,切勿执行写入操作”或“以 JSON 格式返回结果”。
- 工具调用指南:定义工具选择、排序和重试规则。
下一部分中的示例将这些内容分别归入各自的 XML 标记:<role>、<rules> 和 <tool_usage>。
系统指令不应包含动态运行时输入,例如用户问题、文件内容或工具执行日志。在执行轮次期间发送的内容载荷中保留这些动态值。
使用 XML 标记构建系统指令
使用 XML 结构设置系统指令格式有助于模型准确细分不同类型的指导。
XML 标签不是 Gemini API 的硬编码功能。而是提示词工程惯例。由于 Gemini 模型是基于结构化代码和网页进行训练的,因此它们会解析 XML 标记,以区分指令类型并防止多轮会话中出现指令漂移。
将系统指令传递给 SDK 或 API 时,请勿将整个指令块封装在外部标记(例如 <system_instruction>)中。API 已将整个字符串作为系统指令进行处理。而应在块内使用单独的标记对指令进行分组:
<role>
You are an autonomous Cloud Infrastructure Management Agent responsible
for diagnosing and remediating GKE cluster issues.
</role>
<rules>
- Always run diagnostic tools before proposing or applying remediation.
- Never delete storage volumes, IAM bindings, or database
instances without explicit human authorization.
- Verify target cluster and namespace names from diagnostic output before
proposing changes.
</rules>
<tool_usage>
- Call `gke_get_cluster_status` to fetch node pool health.
- Call `gke_inspect_logs` to retrieve pod error logs.
- Use strict JSON schemas when supplying tool parameters.
</tool_usage>
当您使用 <role>、<rules> 和 <tool_usage> 等 XML 标记分隔指令时,模型会将每个块视为一个不同的指导类别。
系统指令的常见 XML 标记
虽然 Gemini 可以解析任何符合您领域的自定义 XML 标记,但使用一组通用标记有助于保持指令的一致性,并更轻松地在各个智能体之间进行维护。
下表列出了可用于构建系统指令的示例标记。标记名称是惯例,因此您可以根据自己的代理对其进行重命名。例如,CX Agent Studio 指令指南使用 <constraints> 来表示本文档在 <rules> 中放置的指导类型。
| 标记 | 说明 |
|---|---|
<role> |
定义智能体的核心身份、角色设定和主要功能。 |
<rules> |
列出约束条件、格式规则和安全边界。 |
<tool_usage> |
概述了选择和调用工具的政策。 |
<example> |
包含一个少样本示例,其中显示了预期的输入和输出。每个示例使用一个标签。 |
如需了解更多详情和提示模式,请参阅以下资源:
工具和函数定义最佳实践
在智能体系统中,您可以使用工具和函数调用,让智能体能够与 Google Cloud API、数据库和微服务进行交互。由于模型通过匹配您定义的架构来请求执行客户端代码,因此提供清晰、明确的工具声明对于防止调用错误至关重要。
架构设计原则
定义工具架构时,请遵循以下原则:
- 使用显式类型:为 OpenAPI 或 JSON 架构中的每个参数指定精确的数据类型,例如
string、integer、boolean、array或object。 - 提供有意义的说明:说明每个参数的格式要求、限制和有效范围,而不是仅依赖字段名称。
- 声明必填字段:在 JSON 架构中填充
required数组,以便模型不会传递null或省略必填字段的实参。 - 使用枚举限制值:对于具有固定有效输入的字段(例如环境名称或日志严重级别),请使用
enum值。
函数声明架构示例
以下示例定义了一个函数声明,其中包含用于重启 Google Kubernetes Engine (GKE) 部署的工具的 JSON 架构:
{
"name": "restart_gke_deployment",
"description": "Performs a rolling restart of a GKE deployment.",
"parameters": {
"type": "object",
"properties": {
"cluster_id": {
"type": "string",
"description": "Fully qualified GKE cluster resource ID."
},
"namespace": {
"type": "string",
"description": "Kubernetes namespace containing the deployment."
},
"deployment_name": {
"type": "string",
"description": "The exact metadata name of the deployment."
},
"environment": {
"type": "string",
"description": "Target environment for the restart.",
"enum": ["dev", "staging", "prod"]
},
"reason": {
"type": "string",
"description": "Brief operational rationale for the restart."
}
},
"required": ["cluster_id", "namespace", "deployment_name", "reason"]
}
}
推理和思考预算控制
为了在复杂工作流中执行操作之前进行内部推理,智能体使用 Gemini 思考功能和 thinking_config 参数。此配置可让智能体执行“规划-验证-执行”循环,在调用工具之前验证操作。
实现“规划-验证-执行”循环
“规划-验证-执行”循环包含以下阶段:
- 规划:分析提示,确定依赖项,并制定一系列工具调用。
- 验证:根据系统限制、安全政策和必需参数检查建议的工具调用。
- 执行:发出工具调用并观察执行反馈。
内置思考功能在内部渠道中运行,而不是在回答文本中发出 <thinking> XML 标记。如果您在 thinking_config 中设置 include_thoughts=True,则可以在工具调用之前检查思考摘要 (part.thought):
1. User requests scaling down node pool 'pool-1' in cluster
'prod-us-central1'.
2. Verification: Scaling down production node pools requires checking
current CPU utilization first.
3. Plan: Call `get_node_pool_metrics` first. If utilization < 30%, request
human approval before scaling down.
在 SDK 中配置 thinking_config 时,请设置 thinking_level(对于 Gemini 3 模型)或 thinking_budget(对于 Gemini 2.5 模型),以平衡推理深度和延迟时间。
上下文窗口健全度和工作记忆
虽然旗舰 Gemini 模型支持 100 万个 token 的上下文窗口,但长上下文序列可能会引入噪声、延迟和上下文降级。保持工作记忆的整洁有助于确保长时间运行的智能体保持准确。
上下文清理策略
请使用以下策略来管理长时间运行的智能体中的上下文:
- 子智能体委托:将孤立的子任务(例如代码分析或日志搜索)委托给短期子智能体,仅将合成摘要返回到主上下文。
- 状态总结:定期总结多轮对话历史记录,舍弃临时调试日志并保留关键事实。
- 记忆文件:在外部 Markdown 文件(例如
GOALS.md和MEMORY.md)中持久保存结构化状态、项目限制和操作上下文,而不是在上下文中保留整个原始对话历史记录。
人机协同 (HITL) 检查点
在实时 Google Cloud 环境中运行的自主智能体应针对高风险操作强制执行审批检查点。
需要 HITL 的高风险操作
在智能体执行以下任何操作之前,需要获得人工批准:
- 访问权限和权限:修改 Identity and Access Management (IAM) 角色、授予服务账号访问权限或使资源可公开访问,例如允许对服务进行未经身份验证的访问或向所有 IP 地址开放防火墙规则。
- 资源删除:删除 Cloud SQL 数据库、Cloud Storage 存储桶、Pub/Sub 主题或 GKE 节点池等资源。
- 结算和配额:预配高成本机器类型(例如 Cloud TPU Pod 或多 GPU 实例)或提高配额限制。
设计审批暂停
不要仅依靠提示指令来限制破坏性操作。由于应用代码会执行工具,因此请在编排器中强制执行确定性审批检查,方法是在运行高风险 function_call 请求之前拦截这些请求,并向人工审核者显示确认载荷:
{
"action": "delete_cloud_sql_instance",
"target_resource": "projects/my-prod/instances/user-db-primary",
"risk_level": "CRITICAL",
"status": "WAITING_FOR_HUMAN_APPROVAL"
}
自动错误恢复和重试循环
在分布式云环境中,工具执行失败是不可避免的。
智能体应自主处理暂时性错误、PERMISSION_DENIED 状态代码和架构验证失败。
错误反馈架构
当工具调用返回错误时,请将原始错误输出以及重试指南反馈到智能体的上下文中,而不是立即失败:
- 架构不匹配:如果参数格式无效,则向模型返回架构错误,以便模型更正工具实参。
- 权限遭拒错误:指示代理检查所需的 IAM 权限,或回退到只读诊断工具。
- 速率限制和节流:在客户端代码中使用指数退避算法处理暂时性
429错误,并将永久性配额错误返回给模型,以便模型调整其计划。
使用函数调用时,请在 FunctionResponse 部分中返回结构化错误详细信息(保留上一个模型轮次的内容和思考签名),而不是原始文本:
from google.genai import types
error_part = types.Part.from_function_response(
name="gke_get_cluster_status",
response={
"status": "ERROR",
"error_code": "PERMISSION_DENIED",
"message": (
"Caller lacks permission 'container.clusters.get' on"
" 'projects/demo/locations/us-central1/clusters/dev'."
),
"remediation_hint": (
"Verify service account permissions or check another project."
),
},
)
代码架构示例(更改前与更改后)
以下对比展示了如何使用 Google Gen AI SDK 从传统的非结构化文本提示词转换为具有结构化 JSON 工具架构的智能体系统指令。
旧版非结构化文本提示词
以下示例将 shell 命令嵌入到非结构化文本提示中,这可能会导致幻觉工具调用或缺少参数:
# Legacy unstructured approach (prone to hallucinated tool calls and missing
# parameters)
prompt = """
You are a Cloud helper. Restart the app deployment in namespace 'prod' for
cluster 'prod-cluster'.
Run command: kubectl rollout restart deployment/web-app -n prod
"""
response = client.models.generate_content(
model="gemini-2.5-flash",
contents=prompt,
)
智能体系统指令和工具定义架构
以下示例将系统指令与用户提示分开,并声明了显式函数架构:
from google import genai
from google.genai import types
# 1. Define explicit function schema with required parameters
restart_deployment_tool = types.FunctionDeclaration(
name="restart_gke_deployment",
description=(
"Executes a rolling restart for a Kubernetes deployment in Google"
" Kubernetes Engine."
),
parameters=types.Schema(
type=types.Type.OBJECT,
properties={
"cluster_id": types.Schema(
type=types.Type.STRING,
description=(
"Fully qualified GKE cluster ID (e.g."
" projects/my-project/locations/us-central1/"
"clusters/prod-cluster)."
),
),
"namespace": types.Schema(
type=types.Type.STRING,
description=(
"Kubernetes namespace (e.g. default, production)."
),
),
"deployment_name": types.Schema(
type=types.Type.STRING,
description="Metadata name of the target deployment.",
),
},
required=["cluster_id", "namespace", "deployment_name"],
),
)
# 2. Configure System Instruction with identity, safety rules, and tools
system_instruction = """
<role>You are an autonomous Cloud Infrastructure Remediation Agent.</role>
<rules>
- Always validate parameter schemas before invoking tool calls.
- Require human approval before performing destructive actions.
- Verify cluster and namespace identifiers before invoking remediation tools.
</rules>
"""
config = types.GenerateContentConfig(
system_instruction=system_instruction,
tools=[types.Tool(function_declarations=[restart_deployment_tool])],
thinking_config=types.ThinkingConfig(thinking_budget=1024),
)
client = genai.Client(vertexai=True, project="my-project", location="global")
response = client.models.generate_content(
model="gemini-2.5-flash",
contents=(
"Restart the deployment 'web-app' in namespace 'prod' under"
" cluster"
" 'projects/my-proj/locations/us-central1/clusters/prod-cluster'."
),
config=config,
)
# Inspect response.function_calls, validate arguments, and require human
# approval in your orchestrator before executing restart_gke_deployment.
后续步骤
- 如需在 Google Cloud 控制台或 IDE 聊天中撰写互动式提示,请参阅为 Gemini in Google Cloud撰写更好的提示。
- 如需详细了解 Gemini 的 Responsible AI 原则,请参阅Google Cloud 和 Responsible AI。
- 如需详细了解数据隐私权和治理,请参阅 Google Cloud 中的 Gemini 产品如何使用您的数据。