diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-10-01 12:52:30 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-10-01 12:52:30 +0200 |
commit | d410a107a048070d07afc199a12dff85bdea139e (patch) | |
tree | e26f33065ebfb612a8c83d840de5661523590d1d /model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java | |
parent | 50bc3b3c198d29374448cc3eac73fbb26e42cab0 (diff) |
Validate all bindings
Diffstat (limited to 'model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java')
-rw-r--r-- | model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java b/model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java index 683a1f345d8..6edcd84272e 100644 --- a/model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java +++ b/model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java @@ -10,13 +10,16 @@ import com.yahoo.searchlib.rankingexpression.ExpressionFunction; import com.yahoo.slime.Cursor; import com.yahoo.slime.Slime; import com.yahoo.tensor.Tensor; +import com.yahoo.tensor.TensorType; import com.yahoo.tensor.serialization.JsonFormat; +import com.yahoo.yolean.Exceptions; import java.io.IOException; import java.io.OutputStream; import java.net.URI; import java.nio.charset.Charset; import java.util.Arrays; +import java.util.Map; import java.util.Optional; import java.util.concurrent.Executor; @@ -60,14 +63,17 @@ public class ModelsEvaluationHandler extends ThreadedHttpRequestHandler { return listModelInformation(request, model, function); } catch (IllegalArgumentException e) { - return new ErrorResponse(404, e.getMessage()); + return new ErrorResponse(404, Exceptions.toMessageString(e)); + } catch (IllegalStateException e) { // On missing bindings + return new ErrorResponse(400, Exceptions.toMessageString(e)); } } private HttpResponse evaluateModel(HttpRequest request, Model model, String[] function) { FunctionEvaluator evaluator = model.evaluatorOf(function); - for (String bindingName : evaluator.context().names()) { - property(request, bindingName).ifPresent(s -> evaluator.bind(bindingName, Tensor.from(s))); + for (Map.Entry<String, TensorType> argument : evaluator.function().argumentTypes().entrySet()) { + property(request, argument.getKey()).ifPresent(value -> evaluator.bind(argument.getKey(), + Tensor.from(argument.getValue(), value))); } Tensor result = evaluator.evaluate(); return new Response(200, JsonFormat.encode(result)); |