Returns (
request: GenerateRequest,
options?: {
abortSignal?: AbortSignal;
sendChunk?: StreamingCallback<
{
aggregated?: boolean;
content: (
| {
custom?: Record<(...), (...)>;
data?: unknown;
media?: undefined;
metadata?: Record<(...), (...)>;
reasoning?: undefined;
resource?: undefined;
text: string;
toolRequest?: undefined;
toolResponse?: undefined;
}
| {
custom?: Record<(...), (...)>;
data?: unknown;
media: { contentType?: (...) | (...); url: string };
metadata?: Record<(...), (...)>;
reasoning?: undefined;
resource?: undefined;
text?: undefined;
toolRequest?: undefined;
toolResponse?: undefined;
}
| {
custom?: Record<(...), (...)>;
data?: unknown;
media?: undefined;
metadata?: Record<(...), (...)>;
reasoning?: undefined;
resource?: undefined;
text?: undefined;
toolRequest: {
input?: unknown;
name: string;
partial?: (...) | (...) | (...);
ref?: (...) | (...);
};
toolResponse?: undefined;
}
| {
custom?: Record<(...), (...)>;
data?: unknown;
media?: undefined;
metadata?: Record<(...), (...)>;
reasoning?: undefined;
resource?: undefined;
text?: undefined;
toolRequest?: undefined;
toolResponse: { name: ...; output?: ...; ref?: ... } & {
content?: ...;
};
}
| {
custom?: Record<(...), (...)>;
data?: unknown;
media?: undefined;
metadata?: Record<(...), (...)>;
reasoning?: undefined;
resource?: undefined;
text?: undefined;
toolRequest?: undefined;
toolResponse?: undefined;
}
| {
custom: Record<string, any>;
data?: unknown;
media?: undefined;
metadata?: Record<(...), (...)>;
reasoning?: undefined;
resource?: undefined;
text?: undefined;
toolRequest?: undefined;
toolResponse?: undefined;
}
| {
custom?: Record<(...), (...)>;
data?: unknown;
media?: undefined;
metadata?: Record<(...), (...)>;
reasoning: string;
resource?: undefined;
text?: undefined;
toolRequest?: undefined;
toolResponse?: undefined;
}
| {
custom?: Record<(...), (...)>;
data?: unknown;
media?: undefined;
metadata?: Record<(...), (...)>;
reasoning?: undefined;
resource: { uri: string };
text?: undefined;
toolRequest?: undefined;
toolResponse?: undefined;
}
)[];
custom?: unknown;
index?: number;
role?: "user"
| "model"
| "tool"
| "system";
},
>;
streamingRequested?: boolean;
},
) => 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;
};
},
>
The runner that Genkit will call when the model is invoked.
Creates the runner used by Genkit to interact with an OpenAI compatible model.