Genkit JS API reference
    Preparing search index...

    Function openAIModelRunner

    • Creates the runner used by Genkit to interact with an OpenAI compatible model.

      Parameters

      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.