diff options
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); + } + } + +} + |