private HttpResponse evaluateModel(HttpRequest request, Model model, String[] function)  {
        FunctionEvaluator evaluator = model.evaluatorOf(function);

        property(request, missingValueKey).ifPresent(missingValue -> evaluator.setMissingValue(Tensor.from(missingValue)));

        for (Map.Entry<String, TensorType> argument : evaluator.function().argumentTypes().entrySet()) {
            Optional<String> value = property(request, argument.getKey());
            if (value.isPresent()) {
                try {
                    evaluator.bind(argument.getKey(), Tensor.from(argument.getValue(), value.get()));
                } catch (IllegalArgumentException e) {
                    evaluator.bind(argument.getKey(), value.get());  // since we don't yet support tensors with string values
                }
            }
        }
        Tensor result = evaluator.evaluate();
        return switch (property(request, "format.tensors").orElse("short").toLowerCase()) {
            case "short"        -> new Response(200, JsonFormat.encode(result, true,  false));
            case "long"         -> new Response(200, JsonFormat.encode(result, false, false));
            case "short-value"  -> new Response(200, JsonFormat.encode(result, true,  true));
            case "long-value"   -> new Response(200, JsonFormat.encode(result, false, true));
            case "string"       -> new Response(200, result.toString(true, true).getBytes(StandardCharsets.UTF_8));
            case "string-long " -> new Response(200, result.toString(true, false ).getBytes(StandardCharsets.UTF_8));
            default             -> new ErrorResponse(400, "Unknown tensor format '" + property(request, "format.tensors") + "'");
        };
    }
A dash in this key ensures it does not collide with feature names
model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java