Genkit JS API reference
    Preparing search index...

    Function model

    • Creates a ModelAction without registering it. Useful for plugin authors who need to return a model action from a resolver.

      Type Parameters

      Parameters

      • options: DefineModelOptions<CustomOptionsSchema>
      • runner: (
            request: GenerateRequest<CustomOptionsSchema>,
            options: ActionFnArg<
                {
                    aggregated?: boolean;
                    content: (
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text: string;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media: { contentType?: string; url: string };
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest: {
                                input?: unknown;
                                name: string;
                                partial?: boolean;
                                ref?: string;
                            };
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse: { name: string; output?: unknown; ref?: string } & {
                                content?: (
                                    (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                    | (...)
                                )[];
                            };
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom: Record<string, any>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning: string;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource: { uri: string };
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                    )[];
                    custom?: unknown;
                    index?: number;
                    role?: "user"
                    | "model"
                    | "tool"
                    | "system";
                },
            >,
        ) => Promise<
            {
                candidates?: {
                    custom?: unknown;
                    finishMessage?: string;
                    finishReason: | "length"
                    | "stop"
                    | "other"
                    | "unknown"
                    | "interrupted"
                    | "blocked"
                    | "aborted";
                    index: number;
                    message: {
                        content: (
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text: string;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media: { contentType?: ...; url: ... };
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest: { input?: ...; name: ...; partial?: ...; ref?: ... };
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse: (...) & (...);
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom: Record<(...), (...)>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning: string;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource: { uri: ... };
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                        )[];
                        metadata?: Record<string, unknown>;
                        role: "user" | "model" | "tool" | "system";
                    };
                    usage?: {
                        cachedContentTokens?: number;
                        custom?: Record<string, number>;
                        inputAudioFiles?: number;
                        inputCharacters?: number;
                        inputImages?: number;
                        inputTokens?: number;
                        inputVideos?: number;
                        outputAudioFiles?: number;
                        outputCharacters?: number;
                        outputImages?: number;
                        outputTokens?: number;
                        outputVideos?: number;
                        thoughtsTokens?: number;
                        totalTokens?: number;
                    };
                }[];
                custom?: unknown;
                finishMessage?: string;
                finishReason?: | "length"
                | "stop"
                | "other"
                | "unknown"
                | "interrupted"
                | "blocked"
                | "aborted";
                latencyMs?: number;
                message?: {
                    content: (
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text: string;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media: { contentType?: string; url: string };
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest: {
                                input?: unknown;
                                name: string;
                                partial?: boolean;
                                ref?: string;
                            };
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse: { name: string; output?: unknown; ref?: (...) | (...) } & {
                                content?: (...) | (...);
                            };
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom: Record<string, any>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning: string;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource: { uri: string };
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                    )[];
                    metadata?: Record<string, unknown>;
                    role: "user" | "model" | "tool" | "system";
                };
                operation?: {
                    action?: string;
                    done?: boolean;
                    error?: z.objectOutputType<
                        { message: z.ZodString },
                        z.ZodTypeAny,
                        "passthrough",
                    >;
                    id: string;
                    metadata?: Record<string, any>;
                    output?: any;
                };
                raw?: unknown;
                request?: {
                    candidates?: number;
                    config?: any;
                    docs?: {
                        content: (
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                        )[];
                        metadata?: Record<string, any>;
                    }[];
                    messages: {
                        content: (
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text: string;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media: { contentType?: ...; url: ... };
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest: { input?: ...; name: ...; partial?: ...; ref?: ... };
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse: (...) & (...);
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom: Record<(...), (...)>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning: string;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource: { uri: ... };
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                        )[];
                        metadata?: Record<string, unknown>;
                        role: "user" | "model" | "tool" | "system";
                    }[];
                    output?: {
                        constrained?: boolean;
                        contentType?: string;
                        format?: string;
                        schema?: Record<string, any>;
                    };
                    toolChoice?: "required"
                    | "auto"
                    | "none";
                    tools?: {
                        description: string;
                        inputSchema?: Record<string, any> | null;
                        metadata?: Record<string, any>;
                        name: string;
                        outputSchema?: Record<string, any> | null;
                    }[];
                };
                usage?: {
                    cachedContentTokens?: number;
                    custom?: Record<string, number>;
                    inputAudioFiles?: number;
                    inputCharacters?: number;
                    inputImages?: number;
                    inputTokens?: number;
                    inputVideos?: number;
                    outputAudioFiles?: number;
                    outputCharacters?: number;
                    outputImages?: number;
                    outputTokens?: number;
                    outputVideos?: number;
                    thoughtsTokens?: number;
                    totalTokens?: number;
                };
            },
        >

      Returns ModelAction<CustomOptionsSchema>