You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用Vertex AI:模型/项目ID查询及批预测列排除问题

一、通过名称获取模型ID与项目ID

1. 获取模型ID

使用Vertex AI Python SDK的list_models方法,通过筛选模型名称来获取对应ID,示例代码如下:

from google.cloud import aiplatform

aiplatform.init(project="你的项目ID", location="你的区域")

# 根据模型名称筛选模型
models = aiplatform.Model.list(filter='display_name="My_Model"')
if models:
    # 从资源名称中提取模型ID
    model_id = models[0].resource_name.split('/')[-1]
    print(f"模型ID: {model_id}")
else:
    print("未找到指定名称的模型")

如果存在重名模型,可在筛选条件中添加版本限制,例如filter='display_name="My_Model" AND model_version_id="v1"'。

2. 获取项目ID

Google Cloud没有直接通过项目名称获取ID的SDK函数,可借助Resource Manager API实现,示例代码如下:

from google.cloud import resource_manager

client = resource_manager.Client()

# 遍历项目列表匹配名称
for project in client.list_projects():
    if project.name == "你的项目名称":
        project_id = project.project_id
        print(f"项目ID: {project_id}")
        break
else:
    print("未找到指定名称的项目")

若需限定特定文件夹范围,可在list_projects中添加参数parent=f"folders/{你的文件夹ID}"缩小检索范围。

二、批预测保留行ID且不参与预测

可以通过指定特征列的方式实现,在提交批预测作业时,明确告诉模型仅使用所需的特征列,忽略ID列,示例代码如下:

from google.cloud import aiplatform

aiplatform.init(project="你的项目ID", location="你的区域")

# 加载目标模型
model = aiplatform.Model(model_name=f"projects/你的项目ID/locations/你的区域/models/{你的模型ID}")

# 提交批预测作业,指定模型所需特征列
batch_prediction_job = model.batch_predict(
    job_display_name="带ID的批预测作业",
    bigquery_source=f"bq://你的项目ID.你的数据集.你的输入表",
    bigquery_destination_prefix=f"bq://你的项目ID.你的数据集",
    prediction_parameters={
        "feature_columns": ["特征列1", "特征列2"]  # 仅填入模型需要的特征列,排除ID列
    }
)

batch_prediction_job.wait()

此方式下,ID列不会被传入模型参与预测,同时输出表会自动保留原输入表的ID列与预测结果,避免模型因识别到非特征列报错。

内容的提问来源于stack exchange,提问作者Nathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 10:42:16