xref: /aosp_15_r20/external/googleapis/google/cloud/retail/v2beta/model.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker// Copyright 2021 Google LLC
2*d5c09012SAndroid Build Coastguard Worker//
3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*d5c09012SAndroid Build Coastguard Worker//
7*d5c09012SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*d5c09012SAndroid Build Coastguard Worker//
9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*d5c09012SAndroid Build Coastguard Worker// limitations under the License.
14*d5c09012SAndroid Build Coastguard Worker
15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3";
16*d5c09012SAndroid Build Coastguard Worker
17*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.retail.v2beta;
18*d5c09012SAndroid Build Coastguard Worker
19*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto";
20*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto";
21*d5c09012SAndroid Build Coastguard Workerimport "google/cloud/retail/v2beta/common.proto";
22*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto";
23*d5c09012SAndroid Build Coastguard Worker
24*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.Retail.V2Beta";
25*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/retail/apiv2beta/retailpb;retailpb";
26*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
27*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "ModelProto";
28*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.retail.v2beta";
29*d5c09012SAndroid Build Coastguard Workeroption objc_class_prefix = "RETAIL";
30*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\Retail\\V2beta";
31*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::Retail::V2beta";
32*d5c09012SAndroid Build Coastguard Worker
33*d5c09012SAndroid Build Coastguard Worker// Metadata that describes the training and serving parameters of a
34*d5c09012SAndroid Build Coastguard Worker// [Model][google.cloud.retail.v2beta.Model]. A
35*d5c09012SAndroid Build Coastguard Worker// [Model][google.cloud.retail.v2beta.Model] can be associated with a
36*d5c09012SAndroid Build Coastguard Worker// [ServingConfig][google.cloud.retail.v2beta.ServingConfig] and then queried
37*d5c09012SAndroid Build Coastguard Worker// through the Predict API.
38*d5c09012SAndroid Build Coastguard Workermessage Model {
39*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
40*d5c09012SAndroid Build Coastguard Worker    type: "retail.googleapis.com/Model"
41*d5c09012SAndroid Build Coastguard Worker    pattern: "projects/{project}/locations/{location}/catalogs/{catalog}/models/{model}"
42*d5c09012SAndroid Build Coastguard Worker  };
43*d5c09012SAndroid Build Coastguard Worker
44*d5c09012SAndroid Build Coastguard Worker  // Represents an ordered combination of valid serving configs, which
45*d5c09012SAndroid Build Coastguard Worker  // can be used for `PAGE_OPTIMIZATION` recommendations.
46*d5c09012SAndroid Build Coastguard Worker  message ServingConfigList {
47*d5c09012SAndroid Build Coastguard Worker    // Optional. A set of valid serving configs that may be used for
48*d5c09012SAndroid Build Coastguard Worker    // `PAGE_OPTIMIZATION`.
49*d5c09012SAndroid Build Coastguard Worker    repeated string serving_config_ids = 1
50*d5c09012SAndroid Build Coastguard Worker        [(google.api.field_behavior) = OPTIONAL];
51*d5c09012SAndroid Build Coastguard Worker  }
52*d5c09012SAndroid Build Coastguard Worker
53*d5c09012SAndroid Build Coastguard Worker  // The serving state of the model.
54*d5c09012SAndroid Build Coastguard Worker  enum ServingState {
55*d5c09012SAndroid Build Coastguard Worker    // Unspecified serving state.
56*d5c09012SAndroid Build Coastguard Worker    SERVING_STATE_UNSPECIFIED = 0;
57*d5c09012SAndroid Build Coastguard Worker
58*d5c09012SAndroid Build Coastguard Worker    // The model is not serving.
59*d5c09012SAndroid Build Coastguard Worker    INACTIVE = 1;
60*d5c09012SAndroid Build Coastguard Worker
61*d5c09012SAndroid Build Coastguard Worker    // The model is serving and can be queried.
62*d5c09012SAndroid Build Coastguard Worker    ACTIVE = 2;
63*d5c09012SAndroid Build Coastguard Worker
64*d5c09012SAndroid Build Coastguard Worker    // The model is trained on tuned hyperparameters and can be
65*d5c09012SAndroid Build Coastguard Worker    // queried.
66*d5c09012SAndroid Build Coastguard Worker    TUNED = 3;
67*d5c09012SAndroid Build Coastguard Worker  }
68*d5c09012SAndroid Build Coastguard Worker
69*d5c09012SAndroid Build Coastguard Worker  // The training state of the model.
70*d5c09012SAndroid Build Coastguard Worker  enum TrainingState {
71*d5c09012SAndroid Build Coastguard Worker    // Unspecified training state.
72*d5c09012SAndroid Build Coastguard Worker    TRAINING_STATE_UNSPECIFIED = 0;
73*d5c09012SAndroid Build Coastguard Worker
74*d5c09012SAndroid Build Coastguard Worker    // The model training is paused.
75*d5c09012SAndroid Build Coastguard Worker    PAUSED = 1;
76*d5c09012SAndroid Build Coastguard Worker
77*d5c09012SAndroid Build Coastguard Worker    // The model is training.
78*d5c09012SAndroid Build Coastguard Worker    TRAINING = 2;
79*d5c09012SAndroid Build Coastguard Worker  }
80*d5c09012SAndroid Build Coastguard Worker
81*d5c09012SAndroid Build Coastguard Worker  // Describes whether periodic tuning is enabled for this model
82*d5c09012SAndroid Build Coastguard Worker  // or not. Periodic tuning is scheduled at most every three months. You can
83*d5c09012SAndroid Build Coastguard Worker  // start a tuning process manually by using the `TuneModel`
84*d5c09012SAndroid Build Coastguard Worker  // method, which starts a tuning process immediately and resets the quarterly
85*d5c09012SAndroid Build Coastguard Worker  // schedule. Enabling or disabling periodic tuning does not affect any
86*d5c09012SAndroid Build Coastguard Worker  // current tuning processes.
87*d5c09012SAndroid Build Coastguard Worker  enum PeriodicTuningState {
88*d5c09012SAndroid Build Coastguard Worker    // Unspecified default value, should never be explicitly set.
89*d5c09012SAndroid Build Coastguard Worker    PERIODIC_TUNING_STATE_UNSPECIFIED = 0;
90*d5c09012SAndroid Build Coastguard Worker
91*d5c09012SAndroid Build Coastguard Worker    // The model has periodic tuning disabled. Tuning
92*d5c09012SAndroid Build Coastguard Worker    // can be reenabled by calling the `EnableModelPeriodicTuning`
93*d5c09012SAndroid Build Coastguard Worker    // method or by calling the `TuneModel` method.
94*d5c09012SAndroid Build Coastguard Worker    PERIODIC_TUNING_DISABLED = 1;
95*d5c09012SAndroid Build Coastguard Worker
96*d5c09012SAndroid Build Coastguard Worker    // The model cannot be tuned with periodic tuning OR the
97*d5c09012SAndroid Build Coastguard Worker    // `TuneModel` method. Hide the options in customer UI and
98*d5c09012SAndroid Build Coastguard Worker    // reject any requests through the backend self serve API.
99*d5c09012SAndroid Build Coastguard Worker    ALL_TUNING_DISABLED = 3;
100*d5c09012SAndroid Build Coastguard Worker
101*d5c09012SAndroid Build Coastguard Worker    // The model has periodic tuning enabled. Tuning
102*d5c09012SAndroid Build Coastguard Worker    // can be disabled by calling the `DisableModelPeriodicTuning`
103*d5c09012SAndroid Build Coastguard Worker    // method.
104*d5c09012SAndroid Build Coastguard Worker    PERIODIC_TUNING_ENABLED = 2;
105*d5c09012SAndroid Build Coastguard Worker  }
106*d5c09012SAndroid Build Coastguard Worker
107*d5c09012SAndroid Build Coastguard Worker  // Describes whether this model have sufficient training data
108*d5c09012SAndroid Build Coastguard Worker  // to be continuously trained.
109*d5c09012SAndroid Build Coastguard Worker  enum DataState {
110*d5c09012SAndroid Build Coastguard Worker    // Unspecified default value, should never be explicitly set.
111*d5c09012SAndroid Build Coastguard Worker    DATA_STATE_UNSPECIFIED = 0;
112*d5c09012SAndroid Build Coastguard Worker
113*d5c09012SAndroid Build Coastguard Worker    // The model has sufficient training data.
114*d5c09012SAndroid Build Coastguard Worker    DATA_OK = 1;
115*d5c09012SAndroid Build Coastguard Worker
116*d5c09012SAndroid Build Coastguard Worker    // The model does not have sufficient training data. Error
117*d5c09012SAndroid Build Coastguard Worker    // messages can be queried via Stackdriver.
118*d5c09012SAndroid Build Coastguard Worker    DATA_ERROR = 2;
119*d5c09012SAndroid Build Coastguard Worker  }
120*d5c09012SAndroid Build Coastguard Worker
121*d5c09012SAndroid Build Coastguard Worker  // Required. The fully qualified resource name of the model.
122*d5c09012SAndroid Build Coastguard Worker  //
123*d5c09012SAndroid Build Coastguard Worker  // Format:
124*d5c09012SAndroid Build Coastguard Worker  // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}`
125*d5c09012SAndroid Build Coastguard Worker  // catalog_id has char limit of 50.
126*d5c09012SAndroid Build Coastguard Worker  // recommendation_model_id has char limit of 40.
127*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = REQUIRED];
128*d5c09012SAndroid Build Coastguard Worker
129*d5c09012SAndroid Build Coastguard Worker  // Required. The display name of the model.
130*d5c09012SAndroid Build Coastguard Worker  //
131*d5c09012SAndroid Build Coastguard Worker  // Should be human readable, used to display Recommendation Models in the
132*d5c09012SAndroid Build Coastguard Worker  // Retail Cloud Console Dashboard. UTF-8 encoded string with limit of 1024
133*d5c09012SAndroid Build Coastguard Worker  // characters.
134*d5c09012SAndroid Build Coastguard Worker  string display_name = 2 [(google.api.field_behavior) = REQUIRED];
135*d5c09012SAndroid Build Coastguard Worker
136*d5c09012SAndroid Build Coastguard Worker  // Optional. The training state that the model is in (e.g.
137*d5c09012SAndroid Build Coastguard Worker  // `TRAINING` or `PAUSED`).
138*d5c09012SAndroid Build Coastguard Worker  //
139*d5c09012SAndroid Build Coastguard Worker  // Since part of the cost of running the service
140*d5c09012SAndroid Build Coastguard Worker  // is frequency of training - this can be used to determine when to train
141*d5c09012SAndroid Build Coastguard Worker  // model in order to control cost. If not specified: the default value for
142*d5c09012SAndroid Build Coastguard Worker  // `CreateModel` method is `TRAINING`. The default value for
143*d5c09012SAndroid Build Coastguard Worker  // `UpdateModel` method is to keep the state the same as before.
144*d5c09012SAndroid Build Coastguard Worker  TrainingState training_state = 3 [(google.api.field_behavior) = OPTIONAL];
145*d5c09012SAndroid Build Coastguard Worker
146*d5c09012SAndroid Build Coastguard Worker  // Output only. The serving state of the model: `ACTIVE`, `NOT_ACTIVE`.
147*d5c09012SAndroid Build Coastguard Worker  ServingState serving_state = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
148*d5c09012SAndroid Build Coastguard Worker
149*d5c09012SAndroid Build Coastguard Worker  // Output only. Timestamp the Recommendation Model was created at.
150*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp create_time = 5
151*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
152*d5c09012SAndroid Build Coastguard Worker
153*d5c09012SAndroid Build Coastguard Worker  // Output only. Timestamp the Recommendation Model was last updated. E.g.
154*d5c09012SAndroid Build Coastguard Worker  // if a Recommendation Model was paused - this would be the time the pause was
155*d5c09012SAndroid Build Coastguard Worker  // initiated.
156*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp update_time = 6
157*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
158*d5c09012SAndroid Build Coastguard Worker
159*d5c09012SAndroid Build Coastguard Worker  // Required. The type of model e.g. `home-page`.
160*d5c09012SAndroid Build Coastguard Worker  //
161*d5c09012SAndroid Build Coastguard Worker  // Currently supported values: `recommended-for-you`, `others-you-may-like`,
162*d5c09012SAndroid Build Coastguard Worker  // `frequently-bought-together`, `page-optimization`, `similar-items`,
163*d5c09012SAndroid Build Coastguard Worker  // `buy-it-again`, `on-sale-items`, and `recently-viewed`(readonly value).
164*d5c09012SAndroid Build Coastguard Worker  //
165*d5c09012SAndroid Build Coastguard Worker  //
166*d5c09012SAndroid Build Coastguard Worker  // This field together with
167*d5c09012SAndroid Build Coastguard Worker  // [optimization_objective][google.cloud.retail.v2beta.Model.optimization_objective]
168*d5c09012SAndroid Build Coastguard Worker  // describe model metadata to use to control model training and serving.
169*d5c09012SAndroid Build Coastguard Worker  // See https://cloud.google.com/retail/docs/models
170*d5c09012SAndroid Build Coastguard Worker  // for more details on what the model metadata control and which combination
171*d5c09012SAndroid Build Coastguard Worker  // of parameters are valid. For invalid combinations of parameters (e.g. type
172*d5c09012SAndroid Build Coastguard Worker  // = `frequently-bought-together` and optimization_objective = `ctr`), you
173*d5c09012SAndroid Build Coastguard Worker  // receive an error 400 if you try to create/update a recommendation with
174*d5c09012SAndroid Build Coastguard Worker  // this set of knobs.
175*d5c09012SAndroid Build Coastguard Worker  string type = 7 [(google.api.field_behavior) = REQUIRED];
176*d5c09012SAndroid Build Coastguard Worker
177*d5c09012SAndroid Build Coastguard Worker  // Optional. The optimization objective e.g. `cvr`.
178*d5c09012SAndroid Build Coastguard Worker  //
179*d5c09012SAndroid Build Coastguard Worker  // Currently supported
180*d5c09012SAndroid Build Coastguard Worker  // values: `ctr`, `cvr`, `revenue-per-order`.
181*d5c09012SAndroid Build Coastguard Worker  //
182*d5c09012SAndroid Build Coastguard Worker  //  If not specified, we choose default based on model type.
183*d5c09012SAndroid Build Coastguard Worker  // Default depends on type of recommendation:
184*d5c09012SAndroid Build Coastguard Worker  //
185*d5c09012SAndroid Build Coastguard Worker  // `recommended-for-you` => `ctr`
186*d5c09012SAndroid Build Coastguard Worker  //
187*d5c09012SAndroid Build Coastguard Worker  // `others-you-may-like` => `ctr`
188*d5c09012SAndroid Build Coastguard Worker  //
189*d5c09012SAndroid Build Coastguard Worker  // `frequently-bought-together` => `revenue_per_order`
190*d5c09012SAndroid Build Coastguard Worker  //
191*d5c09012SAndroid Build Coastguard Worker  // This field together with
192*d5c09012SAndroid Build Coastguard Worker  // [optimization_objective][google.cloud.retail.v2beta.Model.type]
193*d5c09012SAndroid Build Coastguard Worker  // describe model metadata to use to control model training and serving.
194*d5c09012SAndroid Build Coastguard Worker  // See https://cloud.google.com/retail/docs/models
195*d5c09012SAndroid Build Coastguard Worker  // for more details on what the model metadata control and which combination
196*d5c09012SAndroid Build Coastguard Worker  // of parameters are valid. For invalid combinations of parameters (e.g. type
197*d5c09012SAndroid Build Coastguard Worker  // = `frequently-bought-together` and optimization_objective = `ctr`), you
198*d5c09012SAndroid Build Coastguard Worker  // receive an error 400 if you try to create/update a recommendation with
199*d5c09012SAndroid Build Coastguard Worker  // this set of knobs.
200*d5c09012SAndroid Build Coastguard Worker  string optimization_objective = 8 [(google.api.field_behavior) = OPTIONAL];
201*d5c09012SAndroid Build Coastguard Worker
202*d5c09012SAndroid Build Coastguard Worker  // Optional. The state of periodic tuning.
203*d5c09012SAndroid Build Coastguard Worker  //
204*d5c09012SAndroid Build Coastguard Worker  // The period we use is 3 months - to do a
205*d5c09012SAndroid Build Coastguard Worker  // one-off tune earlier use the `TuneModel` method. Default value
206*d5c09012SAndroid Build Coastguard Worker  // is `PERIODIC_TUNING_ENABLED`.
207*d5c09012SAndroid Build Coastguard Worker  PeriodicTuningState periodic_tuning_state = 11
208*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OPTIONAL];
209*d5c09012SAndroid Build Coastguard Worker
210*d5c09012SAndroid Build Coastguard Worker  // Output only. The timestamp when the latest successful tune finished.
211*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp last_tune_time = 12
212*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
213*d5c09012SAndroid Build Coastguard Worker
214*d5c09012SAndroid Build Coastguard Worker  // Output only. The tune operation associated with the model.
215*d5c09012SAndroid Build Coastguard Worker  //
216*d5c09012SAndroid Build Coastguard Worker  // Can be used to determine if there is an ongoing tune for this
217*d5c09012SAndroid Build Coastguard Worker  // recommendation. Empty field implies no tune is goig on.
218*d5c09012SAndroid Build Coastguard Worker  string tuning_operation = 15 [(google.api.field_behavior) = OUTPUT_ONLY];
219*d5c09012SAndroid Build Coastguard Worker
220*d5c09012SAndroid Build Coastguard Worker  // Output only. The state of data requirements for this model: `DATA_OK` and
221*d5c09012SAndroid Build Coastguard Worker  // `DATA_ERROR`.
222*d5c09012SAndroid Build Coastguard Worker  //
223*d5c09012SAndroid Build Coastguard Worker  // Recommendation model cannot be trained if the data is in
224*d5c09012SAndroid Build Coastguard Worker  // `DATA_ERROR` state. Recommendation model can have `DATA_ERROR` state even
225*d5c09012SAndroid Build Coastguard Worker  // if serving state is `ACTIVE`: models were trained successfully before, but
226*d5c09012SAndroid Build Coastguard Worker  // cannot be refreshed because model no longer has sufficient
227*d5c09012SAndroid Build Coastguard Worker  // data for training.
228*d5c09012SAndroid Build Coastguard Worker  DataState data_state = 16 [(google.api.field_behavior) = OUTPUT_ONLY];
229*d5c09012SAndroid Build Coastguard Worker
230*d5c09012SAndroid Build Coastguard Worker  // Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering
231*d5c09012SAndroid Build Coastguard Worker  // by attributes is enabled for the model.
232*d5c09012SAndroid Build Coastguard Worker  RecommendationsFilteringOption filtering_option = 18
233*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OPTIONAL];
234*d5c09012SAndroid Build Coastguard Worker
235*d5c09012SAndroid Build Coastguard Worker  // Output only. The list of valid serving configs associated with the
236*d5c09012SAndroid Build Coastguard Worker  // PageOptimizationConfig.
237*d5c09012SAndroid Build Coastguard Worker  repeated ServingConfigList serving_config_lists = 19
238*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
239*d5c09012SAndroid Build Coastguard Worker}
240