Google AutoML Ruby宝石表:分配给子消息字段的无效字符串”

时间:2019-11-06 22:54:23

标签: ruby-on-rails ruby rubygems google-cloud-automl

我正在尝试使用来自Ruby gem google-cloud-automl的AutoML预测服务,并且不断出错。我已经有一个用于在线预测的部署模型。

这是我当前的代码:

payload = {
  row: {
    column_spec_ids: %w(COLUMN_NUMBER_1 COLUMN_NUMBER_2 COLUMN_NUMBER_3 COLUMN_NUMBER_4),
    values: [
      DATA_1,
      DATA_2,
      DATA_3,
      DATA_4
    ]
  }
}

client = Google::Cloud::AutoML::Prediction.new(version: :v1beta1)
response = client.predict(formatted_model_path, payload)

,我收到此错误:

Google::Protobuf::TypeError: Invalid type String to assign to submessage field ''.
from path/to/my/vendor/bundle/ruby/2.5.0/gems/google-gax-1.8.1/lib/google/gax/util.rb:65:in `initialize'

(在我的代码中,COLUMN_NUMBER_1至_4实际上是真实ID蚂蚁DATA_1至_4是字符串) formatted_model_path是我的模型的路径。我可以使用此代码更早地访问NLP模型(我仅更新了有效负载格式)

我已经尝试生成Google :: Cloud :: AutoML :: V1beta1 :: Row。我可以填写column_spec_ids,但是每次我尝试输入此代码

request = Google::Cloud::AutoML::V1beta1::Row.new
request.values = payload[:row][:values]

我收到此错误

Google::Protobuf::TypeError: Expected repeated field array
from (pry):4:in `method_missing'

1 个答案:

答案 0 :(得分:0)

我实际上找到了解决方法...

您需要提供要传递的数据类型。 代替

values: [
      DATA_1,
      DATA_2,
      DATA_3,
      DATA_4
    ]

我应该有

values: [
      {string_value: DATA_1},
      {string_value: DATA_2},
      {string_value: DATA_3},
      {string_value: DATA_4}
    ]

(您可以使用string_value,number_value和其他类型,我认为完整列表为here