aboutsummaryrefslogtreecommitdiffstats
path: root/model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-10-01 12:52:30 +0200
committerJon Bratseth <bratseth@oath.com>2018-10-01 12:52:30 +0200
commitd410a107a048070d07afc199a12dff85bdea139e (patch)
treee26f33065ebfb612a8c83d840de5661523590d1d /model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java
parent50bc3b3c198d29374448cc3eac73fbb26e42cab0 (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.java12
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));