diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-08-10 12:51:12 +0200 |
---|---|---|
committer | olaaun <ola.aunroe@gmail.com> | 2018-08-10 12:51:12 +0200 |
commit | bc41b0e6489e3002d75c400e4dda4f4218306554 (patch) | |
tree | 9f9b1fd110d1587c5baeaac9f074ab46e939ff65 | |
parent | 8e43b0a8b6ac17ddd067e50649e05e80e22425f9 (diff) |
Add handler skeleton (#6541)
3 files changed, 76 insertions, 1 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/handler/test/MockService.java b/container-core/src/main/java/com/yahoo/container/handler/test/MockService.java index 7bd18c519eb..eef80e95b3d 100644 --- a/container-core/src/main/java/com/yahoo/container/handler/test/MockService.java +++ b/container-core/src/main/java/com/yahoo/container/handler/test/MockService.java @@ -38,7 +38,7 @@ import java.util.logging.Logger; * The file formats supported out of the box is text, see {@link com.yahoo.container.handler.test.MockService.TextFileHandler}. * for descriptions of the format. * - * @author lulf + * @author Ulf Lilleengen */ @Beta public class MockService extends LoggingRequestHandler { diff --git a/model-inference/pom.xml b/model-inference/pom.xml index ad258d1edf4..f97045f88ff 100644 --- a/model-inference/pom.xml +++ b/model-inference/pom.xml @@ -28,6 +28,24 @@ </dependency> <dependency> <groupId>com.yahoo.vespa</groupId> + <artifactId>jdisc_core</artifactId> + <version>${project.version}</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>com.yahoo.vespa</groupId> + <artifactId>container-core</artifactId> + <version>${project.version}</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>com.yahoo.vespa</groupId> + <artifactId>config</artifactId> + <version>${project.version}</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>com.yahoo.vespa</groupId> <artifactId>configdefinitions</artifactId> <version>${project.version}</version> <scope>provided</scope> diff --git a/model-inference/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java b/model-inference/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java new file mode 100644 index 00000000000..78c46864d7b --- /dev/null +++ b/model-inference/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java @@ -0,0 +1,57 @@ +package ai.vespa.models.handler; + +import ai.vespa.models.evaluation.ModelsEvaluator; +import com.yahoo.container.jdisc.HttpRequest; +import com.yahoo.container.jdisc.HttpResponse; +import com.yahoo.container.jdisc.LoggingRequestHandler; +import com.yahoo.tensor.Tensor; +import com.yahoo.tensor.serialization.JsonFormat; + +import java.io.IOException; +import java.io.OutputStream; + +public class ModelsEvaluationHandler extends LoggingRequestHandler { + + private final ModelsEvaluator modelsEvaluator; + + public ModelsEvaluationHandler(ModelsEvaluator modelsEvaluator, Context context) { + super(context); + this.modelsEvaluator = modelsEvaluator; + } + + @Override + public HttpResponse handle(HttpRequest request) { + Tensor result = modelsEvaluator.evaluatorOf(property("model", "serving_default", request), + request.getProperty("function")) + .evaluate(); + return new RawResponse(JsonFormat.encode(result)); + } + + private String property(String name, String defaultValue, HttpRequest request) { + String value = request.getProperty(name); + if (value == null) return defaultValue; + return value; + } + + private static class RawResponse extends HttpResponse { + + private final byte[] data; + + RawResponse(byte[] data) { + super(200); + this.data = data; + } + + @Override + public String getContentType() { + return "application/json"; + } + + @Override + public void render(OutputStream outputStream) throws IOException { + outputStream.write(data); + } + } + +} + |