From 7657995dcd2f7369d3aca10c552e44fb30bef5f3 Mon Sep 17 00:00:00 2001 From: Zeke Sikelianos Date: Mon, 5 May 2025 15:25:34 -0700 Subject: [PATCH 1/3] add support for image-to-image models on Replicate --- packages/inference/src/providers/replicate.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/inference/src/providers/replicate.ts b/packages/inference/src/providers/replicate.ts index 7785039346..d7f7f45685 100644 --- a/packages/inference/src/providers/replicate.ts +++ b/packages/inference/src/providers/replicate.ts @@ -18,7 +18,7 @@ import { InferenceOutputError } from "../lib/InferenceOutputError"; import { isUrl } from "../lib/isUrl"; import type { BodyParams, HeaderParams, UrlParams } from "../types"; import { omit } from "../utils/omit"; -import { TaskProviderHelper, type TextToImageTaskHelper, type TextToVideoTaskHelper } from "./providerHelper"; +import { TaskProviderHelper, type TextToImageTaskHelper, type TextToVideoTaskHelper, type ImageToImageTaskHelper } from "./providerHelper"; export interface ReplicateOutput { output?: string | string[]; } @@ -152,3 +152,20 @@ export class ReplicateTextToVideoTask extends ReplicateTask implements TextToVid throw new InferenceOutputError("Expected { output: string }"); } } + +export class ReplicateImageToImageTask extends ReplicateTask implements ImageToImageTaskHelper { + override async getResponse(response: ReplicateOutput): Promise { + if ( + typeof response === "object" && + !!response && + "output" in response && + typeof response.output === "string" && + isUrl(response.output) + ) { + const urlResponse = await fetch(response.output); + return await urlResponse.blob(); + } + + throw new InferenceOutputError("Expected { output: string }"); + } +} From f449c0f6c9d1b02f2e354df295f15a43492e4b16 Mon Sep 17 00:00:00 2001 From: Zeke Sikelianos Date: Tue, 6 May 2025 12:32:08 -0700 Subject: [PATCH 2/3] add task mapping --- packages/inference/src/lib/getProviderHelper.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/inference/src/lib/getProviderHelper.ts b/packages/inference/src/lib/getProviderHelper.ts index 2a1ce00fe1..b6727cdb39 100644 --- a/packages/inference/src/lib/getProviderHelper.ts +++ b/packages/inference/src/lib/getProviderHelper.ts @@ -132,6 +132,7 @@ export const PROVIDERS: Record Date: Wed, 7 May 2025 15:48:50 +0200 Subject: [PATCH 3/3] lint --- packages/inference/src/providers/replicate.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/inference/src/providers/replicate.ts b/packages/inference/src/providers/replicate.ts index d7f7f45685..1db937d3a8 100644 --- a/packages/inference/src/providers/replicate.ts +++ b/packages/inference/src/providers/replicate.ts @@ -18,7 +18,12 @@ import { InferenceOutputError } from "../lib/InferenceOutputError"; import { isUrl } from "../lib/isUrl"; import type { BodyParams, HeaderParams, UrlParams } from "../types"; import { omit } from "../utils/omit"; -import { TaskProviderHelper, type TextToImageTaskHelper, type TextToVideoTaskHelper, type ImageToImageTaskHelper } from "./providerHelper"; +import { + TaskProviderHelper, + type TextToImageTaskHelper, + type TextToVideoTaskHelper, + type ImageToImageTaskHelper, +} from "./providerHelper"; export interface ReplicateOutput { output?: string | string[]; }