001package org.nasdanika.ai;
002
003import java.awt.image.BufferedImage;
004import java.util.List;
005
006public interface ImageFloatVectorEmbeddingModel extends EmbeddingModel<BufferedImage, List<List<Float>>>, ImageEmbeddingGenerator<List<List<Float>>>, FloatVectorEmbeddingGenerator<BufferedImage> {
007        
008        /**
009         * Creates ImageFloatVectorEmbeddingModel requirement.
010         * String attributes match any value if null.
011         */
012        static Requirement createRequirement(
013                        String provider,
014                        String model,
015                        String version) {
016                
017                return new Requirement(
018                                String.class, 
019                                List.class,
020                                ImageFloatVectorEmbeddingModel.class::isAssignableFrom,
021                                em -> {
022                                        ImageFloatVectorEmbeddingModel tfvem = (ImageFloatVectorEmbeddingModel) em;
023                                        if (model != null && !model.equals(tfvem.getName())) {
024                                                return false;
025                                        }
026                                        if (provider != null && !provider.equals(tfvem.getProvider())) {
027                                                return false;
028                                        }
029                                        return version == null || version.equals(tfvem.getVersion());
030                                });             
031        }
032
033}