mcpField
A
agent-platform-model-registry

agent-platform-model-registry

github.com/google云与 DevOps21.6k8.5k 次安装今天更新
代码仓库

关于 agent-platform-model-registry

用于管理 Agent Platform Model Registry 中模型的流程技能,涵盖查找、查看、上传、更新元数据和删除,并为修改及破坏性操作设置确认步骤。

主要功能

  1. 01列出并查看注册表模型
  2. 02上传模型和版本
  3. 03更新模型元数据
  4. 04删除模型及其版本
  5. 05搜索 Publisher Models

适用场景

  1. 01在注册表中查找模型
  2. 02注册自定义模型或版本
  3. 03修改模型元数据
  4. 04删除模型及其版本

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/google/skills --skill agent-platform-model-registry

安装后在 Claude Code 中输入/agent-platform-model-registry确认已加载。

详细介绍

Agent Platform Model Registry 管理

概述

本技能提供在 Agent Platform Model Registry 中管理机器学习模型的说明。内容涵盖列出模型、查看模型详情、上传新模型或新版本、更新元数据以及删除模型。

安全与确认级别(重要)

在代表用户执行任何命令之前,您 MUST 遵循以下基于所请求操作的安全级别:

  1. 级别 R:只读(list、describe、get)
    • 无需确认。立即执行以收集信息。
  2. 级别 M:可变更且可恢复(upload、update)
    • 需要通过交互方式确认,并提供“Yes”/“No”选项。确认提示 MUST 包含准确、完整的命令字符串及所有必需标志(例如 --region=us-central1、--project=...、--display-name="...")——仅用自然语言转述并不足够。
    • 同轮限制:绝 NEVER 在收到请求或显示确认提示的同一轮执行命令!在第 1 轮,您 MUST 仅显示包含准确、完整命令字符串的交互式确认卡片。然后停止并等待用户回复;只有在后续轮次获得明确的“Yes”/批准后,才能执行。在第 1 轮未经事先确认就执行 upload 或 update 是严格禁止的。
    • 流程中途更改参数/拒绝:如果用户拒绝提示或更改任何参数(例如显示名称、描述、父模型),不要执行旧命令。立即调整,并显示包含更新后准确命令字符串的新确认提示,然后等待批准。
  3. 级别 D:破坏性且不可逆(delete)
    • 需要用户明确输入确认内容(例如“I confirm”或“Yes, delete it”)。立即请求确认——在任何预检之前(不要先检查模型是否已部署到端点)。
    • 同轮限制:绝 NEVER 在请求用户输入确认的同一轮执行命令。等待用户在新一轮回复。
    • 流程中途更改目标:如果用户改变主意(例如,“改为删除第二个模型”),不要删除第一个模型。针对新选择的模型 ID,重新提示用户输入确认内容,并等待批准。
  4. 成本估算:Model Registry 操作管理目录元数据和存储的模型制品,不会配置服务计算资源或端点。对于 Model Registry 操作,勿调用 estimate_cost 工具,因为 estimate_cost 专用于服务基础设施(端点/批量预测),用于注册表操作时会返回错误。如果在预览卡片中包含成本信息,请说明 Model Registry 操作不产生服务计算费用(计算费用为 $0.00;模型制品适用标准 Cloud Storage 定价)。

阶段 0:环境设置与参数解析

重要:运行任何命令前,请确认所有必要参数均已明确:

  1. 缺少区域或项目:遵循基础环境信息确认策略:如果先前轮次已设置会话位置或项目,请直接沿用,无需再次询问。如果提示和会话上下文中都没有,则最多允许进行一次直接查询(例如 gcloud config get project 或 gcloud config get compute/region)。如果仍无法确定或存在歧义,请暂停,并在执行任何会修改状态或针对特定资源的命令前,明确询问用户缺少的参数。
  2. 缺少模型 ID:如果用户要求更新或描述模型,却未提供模型 ID,请暂停并询问用户提供模型 ID,或者主动提出先列出模型以帮助他们查找。
  3. 占位符替换:如果用户要求的显示名称包含占位符标记(例如 <unique-suffix>、[suffix] 或 <timestamp>),请生成简短的唯一字母数字字符串或时间戳,并妥善替换。绝不要将未展开的字面占位符标记传递给 API。
  4. 区域和项目标志:所有 gcloud ai models 命令都必须显式传递 --region=$LOCATION_ID 和 --project=$PROJECT_ID。不要使用 global。

1. 列出模型(R 级)

使用此命令发现注册表中的现有模型并获取其数字 ID。无需确认。

始终传递 --limit。一个项目可能包含数千个模型,不限数量的列表会遍历所有分页,耗时可能超过一分钟,并返回数百 KB 的输出。结果按最近更新时间从新到旧排列,因此 --limit=50 可在几秒内返回最新模型。

gcloud ai models list \
    --region=$LOCATION_ID \
    --project=$PROJECT_ID \
    --limit=50
  • 用户要求列出“所有”模型时,仍保留 --limit=50,并说明回复展示的是最近更新的 50 个模型。不要遍历整个注册表(使用 gcloud 或 Model.list()),除非用户要求统计数量或获取完整清单;可以主动提出按显示名称查找特定模型。

  • 如果用户坚持并要求完整清单,请移除 --limit,并使用 --format="value(name.basename(),displayName)" 为每个模型打印一行简洁信息。提醒用户,在大型项目中这可能需要一分钟或更久。

  • 如果用户询问模型数量,只统计 ID 数量,不打印列表。由于没有计数 API,这仍需遍历所有模型(每 1,500 个模型约需一分钟);请告知用户可能需要等待一段时间。不要先运行带 --limit 的列表命令。

    gcloud ai models list \
        --region=$LOCATION_ID \
        --project=$PROJECT_ID \
        --format="value(name)" | wc -l
    
  • 不要使用 --filter 或 --sort-by 缩小列表范围。gcloud 会在获取完所有分页后于客户端进行筛选和排序,因此速度与不设限制的列表一样慢。

  • 要按显示名称查找模型(例如确认上传或删除操作),请使用 Python SDK 在服务端筛选:

python3 - <<'PY'
from google.cloud import aiplatform

aiplatform.init(project='<PROJECT_ID>', location='<LOCATION_ID>')
for m in aiplatform.Model.list(filter='display_name="<DISPLAY_NAME>"'):
    print(m.name, m.display_name, m.create_time)
PY

2. 描述模型(R 级)

获取特定模型或版本的完整元数据。无需确认。

gcloud ai models describe $MODEL_ID \
    --region=$LOCATION_ID \
    --project=$PROJECT_ID

要指定特定版本:

gcloud ai models describe ${MODEL_ID}@${VERSION_ID} \
    --region=$LOCATION_ID \
    --project=$PROJECT_ID

3. 上传模型(M 级)

注册新模型或现有模型的新版本。这是一项长时间运行的操作。继续操作前,必须通过内联确认卡片确认。

示例:上传自定义模型
gcloud ai models upload \
    --region=$LOCATION_ID \
    --project=$PROJECT_ID \
    --display-name="<DISPLAY_NAME>" \
    --container-image-uri="<CONTAINER_IMAGE_URI>" \
    [--artifact-uri="<ARTIFACT_URI>"]

重要

这是一项 M 级操作——请参阅上方的[安全与确认级别]。

  • 如果用户指定“无制品 URI”,请省略 --artifact-uri。
  • 如果要为现有模型注册新版本,请包含 --parent-model=$PARENT_MODEL_ID。
  • 将 <DISPLAY_NAME> 替换为用户要求的确切名称。

4. 更新模型(Tier M)

更新显示名称或描述等元数据字段。请注意,gcloud ai models 没有 update 子命令。相反,模型元数据更新必须使用 Vertex AI Python SDK (google.cloud.aiplatform.Model)执行。

此操作需要在继续之前显示一张包含确切脚本的内嵌确认卡片。

python3 -c "
from google.cloud import aiplatform

aiplatform.init(project='$PROJECT_ID', location='$LOCATION_ID')
model = aiplatform.Model('$MODEL_ID')
model.update(display_name='<NEW_DISPLAY_NAME>', description='<NEW_DESCRIPTION>')
print(f'Successfully updated model: {model.resource_name}')
"

重要

这是 Tier M 操作 — 请参阅上文的[安全与确认层级]。

  • 如果只更新显示名称,请传入 model.update(display_name='<NEW_DISPLAY_NAME>')。
  • 如果只更新描述,请传入 model.update(description='<NEW_DESCRIPTION>')。
  • 确认卡片必须显示上方确切的 Python 命令片段。 绝不能在第 1 轮执行;请等待用户明确批准。

5. 删除模型(Tier D)

永久删除模型及其所有版本。此操作需要在继续之前获得用户明确输入的确认。

gcloud ai models delete $MODEL_ID \
    --region=$LOCATION_ID \
    --project=$PROJECT_ID

警告

此操作不可逆。删除前,必须从所有端点取消部署所有模型版本。

6. 搜索发布方模型(Tier R)

在生成交互式模型详情之前,必须先搜索 Model Garden Publisher Models,验证 model_id。此操作无需确认。

使用 gcloud ai CLI 搜索匹配的发布方模型。

gcloud ai model-garden models list --model-filter="<model_name_or_query>" --full-resource-name --format=json

这会返回匹配模型的列表。从结果中提取确切的 name 字段(例如 publishers/google/models/gemma2 或 publishers/qwen/models/qwen3-coder),将其用作经过验证的 model_id。

评论

支持 Markdown