Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion packages/inference/src/lib/getProviderHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import type {
ImageSegmentationTaskHelper,
ImageToImageTaskHelper,
ImageToTextTaskHelper,
ImageToVideoTaskHelper,
ObjectDetectionTaskHelper,
QuestionAnsweringTaskHelper,
SentenceSimilarityTaskHelper,
Expand Down Expand Up @@ -239,6 +240,10 @@ export function getProviderHelper(
provider: InferenceProviderOrPolicy,
task: "image-to-image"
): ImageToImageTaskHelper & TaskProviderHelper;
export function getProviderHelper(
provider: InferenceProviderOrPolicy,
task: "image-to-video"
): ImageToVideoTaskHelper & TaskProviderHelper;
export function getProviderHelper(
provider: InferenceProviderOrPolicy,
task: "sentence-similarity"
Expand Down Expand Up @@ -275,7 +280,6 @@ export function getProviderHelper(
provider: InferenceProviderOrPolicy,
task: InferenceTask | undefined
): TaskProviderHelper;

export function getProviderHelper(
provider: InferenceProviderOrPolicy,
task: InferenceTask | undefined
Expand Down
8 changes: 8 additions & 0 deletions packages/inference/src/providers/providerHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import type {
ImageToImageInput,
ImageToTextInput,
ImageToTextOutput,
ImageToVideoInput,
ObjectDetectionInput,
ObjectDetectionOutput,
QuestionAnsweringInput,
Expand Down Expand Up @@ -52,6 +53,7 @@ import type { BaseArgs, BodyParams, HeaderParams, InferenceProvider, RequestArgs
import { toArray } from "../utils/toArray.js";
import type { ImageToImageArgs } from "../tasks/cv/imageToImage.js";
import type { AutomaticSpeechRecognitionArgs } from "../tasks/audio/automaticSpeechRecognition.js";
import type { ImageToVideoArgs } from "../tasks/cv/imageToVideo.js";

/**
* Base class for task-specific provider helpers
Expand Down Expand Up @@ -150,6 +152,12 @@ export interface ImageToImageTaskHelper {
preparePayloadAsync(args: ImageToImageArgs): Promise<RequestArgs>;
}

export interface ImageToVideoTaskHelper {
getResponse(response: unknown, url?: string, headers?: HeadersInit): Promise<Blob>;
preparePayload(params: BodyParams<ImageToVideoInput & BaseArgs>): Record<string, unknown>;
preparePayloadAsync(args: ImageToVideoArgs): Promise<RequestArgs>;
}

export interface ImageSegmentationTaskHelper {
getResponse(response: unknown, url?: string, headers?: HeadersInit): Promise<ImageSegmentationOutput>;
preparePayload(params: BodyParams<ImageSegmentationInput & BaseArgs>): Record<string, unknown> | BodyInit;
Expand Down
24 changes: 24 additions & 0 deletions packages/inference/src/tasks/cv/imageToVideo.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import type { ImageToVideoInput } from "@huggingface/tasks";
import { resolveProvider } from "../../lib/getInferenceProviderMapping.js";
import { getProviderHelper } from "../../lib/getProviderHelper.js";
import type { BaseArgs, Options } from "../../types.js";
import { innerRequest } from "../../utils/request.js";
import { makeRequestOptions } from "../../lib/makeRequestOptions.js";

export type ImageToVideoArgs = BaseArgs & ImageToVideoInput;

/**
* This task reads some text input and outputs an image.
* Recommended model: lllyasviel/sd-controlnet-depth
*/
export async function imageToVideo(args: ImageToVideoArgs, options?: Options): Promise<Blob> {
const provider = await resolveProvider(args.provider, args.model, args.endpointUrl);
const providerHelper = getProviderHelper(provider, "image-to-video");
const payload = await providerHelper.preparePayloadAsync(args);
const { data: res } = await innerRequest<Blob>(payload, providerHelper, {
...options,
task: "image-to-video",
});
const { url, info } = await makeRequestOptions(args, providerHelper, { ...options, task: "image-to-video" });
return providerHelper.getResponse(res, url, info.headers as Record<string, string>);
}
1 change: 1 addition & 0 deletions packages/inference/src/tasks/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export * from "./cv/imageClassification.js";
export * from "./cv/imageSegmentation.js";
export * from "./cv/imageToImage.js";
export * from "./cv/imageToText.js";
export * from "./cv/imageToVideo.js";
export * from "./cv/objectDetection.js";
export * from "./cv/textToImage.js";
export * from "./cv/textToVideo.js";
Expand Down