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

如何使用C#为PredictionServiceClient序列化payload并调用GCP AutoML预测接口

解决方法

1. 修复区域端点不匹配问题

Google.Cloud.AutoML.V1库默认调用全球通用端点,部署在eu区域的模型必须指定对应区域专属端点,你需要在创建客户端时手动配置PredictionServiceSettings的Endpoint属性:

var settings = new PredictionServiceSettings
{
    Endpoint = "eu-automl.googleapis.com"
};
// 传入自定义配置创建客户端
PredictionServiceClient predictionServiceClient = PredictionServiceClient.Create(settings);

如果未在系统环境变量中配置GOOGLE_APPLICATION_CREDENTIALS,也可以手动加载服务账号密钥:

var credential = GoogleCredential.FromFile("[MY-SERVICE-ACCOUNT-KEY-FILE].json");
var settings = new PredictionServiceSettings
{
    Endpoint = "eu-automl.googleapis.com",
    Credential = credential
};

2. 修复Payload未填充问题

你当前初始化的ExamplePayload为空对象,针对Tables类型的预测,需要将待预测的特征数据填充到ExamplePayload.Tables属性中,数据内容对应你PowerShell请求里[MY-REQUEST-FILE].json的入参:

ExamplePayload payload = new ExamplePayload
{
    Tables = new TablesPayload
    {
        Row = new Row
        {
            // 按你训练模型时的输入特征顺序,依次填入待预测的特征值
            Values = 
            {
                Value.ForString("特征1的值"),
                Value.ForNumber(123), // 数值类型特征
                Value.ForBool(true) // 布尔类型特征
                // 其余特征按顺序补充
            }
        }
    }
};

完整代码示例

using Google.Cloud.AutoML.V1;
using Google.Protobuf.WellKnownTypes;
using Google.Apis.Auth.OAuth2;
using System.Collections.Generic;

// 配置客户端
var settings = new PredictionServiceSettings
{
    Endpoint = "eu-automl.googleapis.com",
    // 若已配置环境变量可省略下面的Credential配置
    Credential = GoogleCredential.FromFile("[MY-SERVICE-ACCOUNT-KEY-FILE].json")
};
PredictionServiceClient predictionServiceClient = PredictionServiceClient.Create(settings);

// 配置请求参数
ModelName name = ModelName.FromProjectLocationModel("[MY-PROJECT-ID]", "eu", "[MY-MODEL-ID]");
ExamplePayload payload = new ExamplePayload
{
    Tables = new TablesPayload
    {
        Row = new Row
        {
            Values = 
            {
                // 替换为你实际的待预测特征值,顺序与训练时输入特征顺序一致
                Value.ForString("xxx"),
                Value.ForNumber(xx),
                // 补充所有特征
            }
        }
    }
};
IDictionary<string, string> @params = new Dictionary<string, string> { { "feature_importance", "true" } };

// 发起请求
PredictResponse response = predictionServiceClient.Predict(name, payload, @params);

// 输出预测结果,对应你PowerShell返回的payload内容
foreach (var result in response.Payload)
{
    System.Console.WriteLine($"分类: {result.Tables.Value}, 置信度: {result.Tables.Score}");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:27:03