/** * @license * Copyright 2025 Steven Roussey * SPDX-License-Identifier: Apache-2.0 */ import type { IRunConfig, TaskConfig } from "@workglow/task-graph"; import { CreateWorkflow } from "@workglow/task-graph"; import type { ImageValue } from "@workglow/util/media"; import { DataPortSchema } from "@workglow/util/schema"; import type { ModelConfig } from "../model/ModelSchema"; import { AiVisionTask } from "./base/AiVisionTask"; export declare const ImageClassificationInputSchema: { readonly type: "object"; readonly properties: { readonly image: { readonly oneOf: readonly [{ readonly type: "string"; readonly format: "image:data-uri"; }, { readonly type: "object"; readonly format: "image"; }]; readonly title: "Image"; readonly description: "Image"; readonly format: "image"; }; readonly model: { readonly oneOf: readonly [{ readonly title: "Model"; readonly description: `The model ${string}`; } & Record & { readonly format: import(".").TypeModelSemantic; readonly type: "string"; }, { readonly type: "object"; readonly properties: { readonly model_id: { readonly type: "string"; }; readonly capabilities: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly "x-ui-editor": "multiselect"; }; readonly title: { readonly type: "string"; }; readonly description: { readonly type: "string"; readonly "x-ui-editor": "textarea"; }; readonly provider: { readonly type: "string"; }; readonly provider_config: { readonly type: "object"; readonly properties: { readonly credential_key: { readonly type: "string"; readonly format: "credential"; readonly "x-ui-hidden": true; }; readonly native_dimensions: { readonly type: "integer"; readonly description: "Native output vector dimensions for embedding models"; }; readonly mrl: { readonly type: "boolean"; readonly description: "Whether the model supports Matryoshka Representation Learning"; }; }; readonly additionalProperties: true; readonly default: {}; }; readonly metadata: { readonly type: "object"; readonly default: {}; readonly "x-ui-hidden": true; }; }; readonly required: readonly ["provider", "provider_config"]; readonly format: "model"; readonly additionalProperties: true; } & Record & { readonly format: import(".").TypeModelSemantic; }]; } & Record & { readonly format: import(".").TypeModelSemantic; }; readonly categories: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly title: "Categories"; readonly description: "List of candidate categories (optional, if provided uses zero-shot classification)"; readonly "x-ui-group": "Configuration"; }; readonly maxCategories: { readonly type: "number"; readonly minimum: 1; readonly maximum: 1000; readonly default: 5; readonly title: "Max Categories"; readonly description: "The maximum number of categories to return"; readonly "x-ui-group": "Configuration"; }; }; readonly required: readonly ["image", "model"]; readonly additionalProperties: false; }; export declare const ImageClassificationOutputSchema: { readonly type: "object"; readonly properties: { readonly categories: { readonly oneOf: readonly [{ readonly type: "array"; readonly items: { readonly type: "object"; readonly properties: { readonly label: { readonly type: "string"; readonly title: "Label"; readonly description: "Category label"; }; readonly score: { readonly type: "number"; readonly title: "Confidence Score"; readonly description: "Confidence score between 0 and 1"; readonly minimum: 0; readonly maximum: 1; }; }; readonly required: readonly ["label", "score"]; readonly additionalProperties: false; readonly title: "Category"; readonly description: "Classification category with label and score"; }; }, { readonly type: "array"; readonly items: { readonly type: "array"; readonly items: { readonly type: "object"; readonly properties: { readonly label: { readonly type: "string"; readonly title: "Label"; readonly description: "Category label"; }; readonly score: { readonly type: "number"; readonly title: "Confidence Score"; readonly description: "Confidence score between 0 and 1"; readonly minimum: 0; readonly maximum: 1; }; }; readonly required: readonly ["label", "score"]; readonly additionalProperties: false; readonly title: "Category"; readonly description: "Classification category with label and score"; }; }; }]; readonly title: "Categories"; readonly description: "The classification categories with their scores"; }; }; readonly required: readonly ["categories"]; readonly additionalProperties: false; }; export type ImageClassificationTaskInput = Omit<{ categories?: string[] | undefined; maxCategories?: number | undefined; model: string | ModelConfig; image: string | { [x: string]: unknown; }; }, "image"> & { image: ImageValue; }; export type ImageClassificationTaskOutput = { categories: { score: number; label: string; }[] | { score: number; label: string; }[][]; }; export type ImageClassificationTaskConfig = TaskConfig; /** * Classifies images into categories using vision models. * Automatically selects between regular and zero-shot classification based on whether categories are provided. */ export declare class ImageClassificationTask extends AiVisionTask { static type: string; /** Capabilities required of the model; gated in {@link AiTask.execute}. */ static readonly requires: ["image.classification"]; static category: string; static title: string; static description: string; static inputSchema(): DataPortSchema; static outputSchema(): DataPortSchema; } export declare const imageClassification: (input: ImageClassificationTaskInput, config?: ImageClassificationTaskConfig, runConfig?: Partial) => Promise; declare module "@workglow/task-graph" { interface Workflow { imageClassification: CreateWorkflow; } } //# sourceMappingURL=ImageClassificationTask.d.ts.map