UNPKG

@genkit-ai/compat-oai

Version:

Genkit AI framework plugin for OpenAI APIs.

91 lines 2.6 kB
import { modelRef, z } from "genkit"; import { model } from "genkit/plugin"; import { TranscriptionConfigSchema, toSttRequest, transcriptionToGenerateResponse } from "../audio.mjs"; import { toTranslationRequest, translationToGenerateResponse } from "../translate.mjs"; import { maybeCreateRequestScopedOpenAIClient, toModelName } from "../utils.mjs"; const WHISPER_MODEL_INFO = { supports: { media: true, output: ["text", "json"], multiturn: false, systemRole: false, tools: false } }; const WhisperConfigSchema = TranscriptionConfigSchema.extend({ /** When true, uses Translation API instead of Transcription. Default: false */ translate: z.boolean().optional().default(false) }); function defineOpenAIWhisperModel(params) { const { name, client: defaultClient, pluginOptions, modelRef: modelRef2 } = params; const modelName = toModelName(name, pluginOptions?.name); const actionName = modelRef2?.name ?? `${pluginOptions?.name ?? "openai"}/${modelName}`; return model( { name: actionName, ...modelRef2?.info, configSchema: modelRef2?.configSchema }, async (request, { abortSignal }) => { const { translate, ...cleanConfig } = request.config ?? {}; const cleanRequest = { ...request, config: cleanConfig }; const client = maybeCreateRequestScopedOpenAIClient( pluginOptions, request, defaultClient ); if (translate === true) { const params2 = toTranslationRequest(modelName, cleanRequest); const result = await client.audio.translations.create(params2, { signal: abortSignal }); return translationToGenerateResponse(result); } else { const params2 = toSttRequest(modelName, cleanRequest); const result = await client.audio.transcriptions.create( { ...params2, stream: false }, { signal: abortSignal } ); return transcriptionToGenerateResponse(result); } } ); } function openAIWhisperModelRef(params) { const { name, info = WHISPER_MODEL_INFO, configSchema, config = void 0 } = params; return modelRef({ name, configSchema: configSchema || WhisperConfigSchema, info, config, namespace: "openai" }); } const SUPPORTED_WHISPER_MODELS = { "whisper-1": openAIWhisperModelRef({ name: "whisper-1" }) }; export { SUPPORTED_WHISPER_MODELS, WHISPER_MODEL_INFO, WhisperConfigSchema, defineOpenAIWhisperModel, openAIWhisperModelRef }; //# sourceMappingURL=whisper.mjs.map