private static TensorType toVespaTensorType(String tritonType, List<Long> shapes) {
        var dataType = switch (tritonType) {
            case "INT8" -> TensorType.Value.INT8;
            case "BF16" -> TensorType.Value.BFLOAT16;
            case "FP16", "FP32" -> TensorType.Value.FLOAT;
            default -> TensorType.Value.DOUBLE;
        };
        var builder = new TensorType.Builder(dataType);
        for (int i = 0; i < shapes.size(); i++) {
            long shape = shapes.get(i);
            String dimName = "d" + i;  // Using index instead of shape value as in TensorConverter
            if (shape >= 0) {
                builder.indexed(dimName, shape);
            } else {
                builder.indexed(dimName);
            }
        }
        return builder.build();
    }
Converts {@link TensorType} using mapping rule similar to TensorConverter
model-integration/src/main/java/ai/vespa/triton/TritonOnnxClient.java