| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module media.learning.mojom; |
| |
| import "mojo/public/mojom/base/unguessable_token.mojom"; |
| import "media/learning/mojo/public/mojom/learning_types.mojom"; |
| |
| // Client for a single learning task. Intended to be the primary API for client |
| // code that generates FeatureVectors / requests predictions for a single task. |
| // The API supports sending in an observed FeatureVector without a target value, |
| // so that framework-provided features (FeatureProvider) can be snapshotted at |
| // the right time. One doesn't generally want to wait until the TargetValue is |
| // observed to do that. |
| // |
| // Typically, this interface will allow non-browser processes to communicate |
| // with the learning framework in the browser. |
| interface LearningTaskController { |
| // Start a new observation. Call this at the time one would try to predict |
| // the TargetValue. This lets the framework snapshot any framework-provided |
| // feature values at prediction time. Later, if you want to turn these |
| // features into an example for training a model, then call |
| // CompleteObservation with the same id and an ObservationCompletion. |
| // Otherwise, call CancelObservation with |id|. It's also okay to destroy the |
| // controller with outstanding observations; these will be cancelled if no |
| // |default_target| was specified, else they will be completed using that as |
| // the target value. |
| BeginObservation(mojo_base.mojom.UnguessableToken id, |
| array<FeatureValue> features, |
| TargetValue? default_target); |
| |
| // Complete observation |id| by providing |completion|. |
| CompleteObservation(mojo_base.mojom.UnguessableToken id, |
| ObservationCompletion completion); |
| |
| // Cancel observation |id|. Deleting |this| will do the same. |
| CancelObservation(mojo_base.mojom.UnguessableToken id); |
| |
| // Update the default target for |id| to |default_target|. May also unset it, |
| // so that the observation will be cancelled if the controller is destroyed. |
| UpdateDefaultTarget(mojo_base.mojom.UnguessableToken id, |
| TargetValue? default_target); |
| |
| // Asynchronously predicts distribution for given |features|. |callback| will |
| // receive a absl::nullopt prediction when model is not available. |
| PredictDistribution(array<FeatureValue> features) |
| => (TargetHistogram? predicted); |
| }; |