Skip to content

Commit 87d227b

Browse files
committed
⚡ Support text-to-image generation
1 parent 46b3175 commit 87d227b

4 files changed

Lines changed: 39 additions & 5 deletions

File tree

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
meta/meta-llama-3.1-405b-instruct
22
meta/meta-llama-3-70b-instruct
33
meta/meta-llama-3-8b-instruct
4-
thomasmol/whisper-diarization
54
black-forest-labs/flux-schnell
6-
salesforce/blip
7-
stability-ai/sdxl
8-
openai/whisper
5+
black-forest-labs/flux-dev
6+
black-forest-labs/flux-pro

spring-boot-starter-replicate/src/main/java/io/graversen/replicate/configuration/ReplicateConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
@Configuration
2121
@EnableConfigurationProperties(ReplicateProperties.class)
22-
@Import({Llama3Configuration.class})
22+
@Import({Llama3Configuration.class, FluxConfiguration.class})
2323
@ComponentScan({"io.graversen.replicate.service", "io.graversen.replicate.facade"})
2424
public class ReplicateConfiguration {
2525
@Bean

spring-boot-starter-replicate/src/main/java/io/graversen/replicate/facade/ReplicateFacade.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.graversen.replicate.facade;
22

33
import io.graversen.replicate.common.ReplicateModel;
4+
import io.graversen.replicate.service.CreateImagePrediction;
45
import io.graversen.replicate.service.CreateTextPrediction;
56
import io.graversen.replicate.service.ReplicateService;
67
import lombok.NonNull;
@@ -34,11 +35,30 @@ public CompletableFuture<PredictionResponseAndModel> createPrediction(
3435
.whenCompleteAsync(emitPredictionResponseTask, executorService);
3536
}
3637

38+
public CompletableFuture<PredictionResponseAndModel> createPrediction(
39+
@NonNull ReplicateModel model,
40+
@NonNull CreateImagePrediction createPrediction
41+
) {
42+
return CompletableFuture
43+
.supplyAsync(doCreatePrediction(model, createPrediction), executorService)
44+
.thenApplyAsync(checkAndEmitPredictionCreationTask, executorService)
45+
.thenApplyAsync(pollPredictionStatusTask, executorService)
46+
.whenCompleteAsync(emitPredictionResponseTask, executorService);
47+
}
48+
3749
Supplier<Optional<PredictionResponseAndModel>> doCreatePrediction(
3850
@NonNull ReplicateModel model,
3951
@NonNull CreateTextPrediction createPrediction
4052
) {
4153
return () -> replicateService.createPrediction(model, createPrediction)
4254
.map(predictionResponse -> new PredictionResponseAndModel(predictionResponse, model));
4355
}
56+
57+
Supplier<Optional<PredictionResponseAndModel>> doCreatePrediction(
58+
@NonNull ReplicateModel model,
59+
@NonNull CreateImagePrediction createPrediction
60+
) {
61+
return () -> replicateService.createPrediction(model, createPrediction)
62+
.map(predictionResponse -> new PredictionResponseAndModel(predictionResponse, model));
63+
}
4464
}

spring-boot-starter-replicate/src/main/java/io/graversen/replicate/service/ReplicateService.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,26 @@ public Optional<PredictionResponse> createPrediction(@NonNull ReplicateModel mod
4242
return doCreatePrediction(model, mappedPrediction);
4343
}
4444

45+
@SneakyThrows
46+
public Optional<PredictionResponse> createPrediction(@NonNull ReplicateModel model, @NonNull CreateImagePrediction createPrediction) {
47+
final var predictionMapper = predictionMappers.stream()
48+
.filter(supportsImagePredictions())
49+
.filter(supportsModel(model))
50+
.findFirst()
51+
.orElseThrow(unsupportedModelError(model));
52+
53+
final var mappedPrediction = predictionMapper.apply(model, createPrediction);
54+
return doCreatePrediction(model, mappedPrediction);
55+
}
56+
4557
Predicate<PredictionMapper> supportsTextPredictions() {
4658
return predictionMapper -> predictionMapper.supportsType(PredictionTypes.TEXT);
4759
}
4860

61+
Predicate<PredictionMapper> supportsImagePredictions() {
62+
return predictionMapper -> predictionMapper.supportsType(PredictionTypes.IMAGE);
63+
}
64+
4965
Predicate<PredictionMapper> supportsModel(@NonNull ReplicateModel model) {
5066
return predictionMapper -> predictionMapper.supportsModel(model);
5167
}

0 commit comments

Comments
 (0)