UNPKG

@genkit-ai/compat-oai

Version:

Genkit AI framework plugin for OpenAI APIs.

265 lines 9 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var openai_exports = {}; __export(openai_exports, { default: () => openai_default, openAI: () => openAI, openAIPlugin: () => openAIPlugin }); module.exports = __toCommonJS(openai_exports); var import_genkit = require("genkit"); var import_audio = require("../audio.js"); var import_embedder = require("../embedder.js"); var import_image = require("../image.js"); var import__ = require("../index.js"); var import_model = require("../model.js"); var import_dalle = require("./dalle.js"); var import_embedder2 = require("./embedder.js"); var import_gpt = require("./gpt.js"); var import_stt = require("./stt.js"); var import_tts = require("./tts.js"); var import_whisper = require("./whisper.js"); const UNSUPPORTED_MODEL_MATCHERS = ["babbage", "davinci", "codex"]; function createResolver(pluginOptions) { return async (client, actionType, actionName) => { if (actionType === "embedder") { return (0, import_embedder.defineCompatOpenAIEmbedder)({ name: actionName, client, pluginOptions }); } else if (actionName.includes("gpt-image-1") || actionName.includes("dall-e")) { const modelRef = (0, import_dalle.openAIImageModelRef)({ name: actionName }); return (0, import_image.defineCompatOpenAIImageModel)({ name: modelRef.name, client, pluginOptions, modelRef }); } else if (actionName.includes("tts")) { const modelRef = (0, import_tts.openAISpeechModelRef)({ name: actionName }); return (0, import_audio.defineCompatOpenAISpeechModel)({ name: modelRef.name, client, pluginOptions, modelRef }); } else if (actionName.includes("whisper")) { const modelRef = (0, import_whisper.openAIWhisperModelRef)({ name: actionName }); return (0, import_whisper.defineOpenAIWhisperModel)({ name: modelRef.name, client, pluginOptions, modelRef }); } else if (actionName.includes("transcribe")) { const modelRef = (0, import_stt.openAITranscriptionModelRef)({ name: actionName }); return (0, import_audio.defineCompatOpenAITranscriptionModel)({ name: modelRef.name, client, pluginOptions, modelRef }); } else { const modelRef = (0, import_gpt.openAIModelRef)({ name: actionName }); return (0, import_model.defineCompatOpenAIModel)({ name: modelRef.name, client, pluginOptions, modelRef }); } }; } function filterOpenAiModels(model2) { return !UNSUPPORTED_MODEL_MATCHERS.some((m) => model2.id.includes(m)); } const listActions = async (client) => { return await client.models.list().then( (response) => response.data.filter(filterOpenAiModels).map((model2) => { if (model2.id.includes("embedding")) { return (0, import_genkit.embedderActionMetadata)({ name: model2.id, configSchema: import_embedder2.TextEmbeddingConfigSchema, info: import_embedder2.SUPPORTED_EMBEDDING_MODELS[model2.id]?.info }); } else if (model2.id.includes("gpt-image-1") || model2.id.includes("dall-e")) { const modelRef = import_dalle.SUPPORTED_IMAGE_MODELS[model2.id] ?? (0, import_dalle.openAIImageModelRef)({ name: model2.id }); return (0, import_genkit.modelActionMetadata)({ name: modelRef.name, info: modelRef.info, configSchema: modelRef.configSchema }); } else if (model2.id.includes("tts")) { const modelRef = import_tts.SUPPORTED_TTS_MODELS[model2.id] ?? (0, import_tts.openAISpeechModelRef)({ name: model2.id }); return (0, import_genkit.modelActionMetadata)({ name: modelRef.name, info: modelRef.info, configSchema: modelRef.configSchema }); } else if (model2.id.includes("whisper")) { const modelRef = import_whisper.SUPPORTED_WHISPER_MODELS[model2.id] ?? (0, import_whisper.openAIWhisperModelRef)({ name: model2.id }); return (0, import_genkit.modelActionMetadata)({ name: modelRef.name, info: modelRef.info, configSchema: modelRef.configSchema }); } else if (model2.id.includes("transcribe")) { const modelRef = import_stt.SUPPORTED_STT_MODELS[model2.id] ?? (0, import_stt.openAITranscriptionModelRef)({ name: model2.id }); return (0, import_genkit.modelActionMetadata)({ name: modelRef.name, info: modelRef.info, configSchema: modelRef.configSchema }); } else { const modelRef = import_gpt.SUPPORTED_GPT_MODELS[model2.id] ?? (0, import_gpt.openAIModelRef)({ name: model2.id }); return (0, import_genkit.modelActionMetadata)({ name: modelRef.name, info: modelRef.info, configSchema: modelRef.configSchema }); } }) ); }; function openAIPlugin(options) { const pluginOptions = { name: "openai", ...options }; return (0, import__.openAICompatible)({ name: "openai", ...options, initializer: async (client) => { const models = []; models.push( ...Object.values(import_gpt.SUPPORTED_GPT_MODELS).map( (modelRef) => (0, import_model.defineCompatOpenAIModel)({ name: modelRef.name, client, pluginOptions, modelRef }) ) ); models.push( ...Object.values(import_embedder2.SUPPORTED_EMBEDDING_MODELS).map( (embedderRef2) => (0, import_embedder.defineCompatOpenAIEmbedder)({ name: embedderRef2.name, client, pluginOptions, embedderRef: embedderRef2 }) ) ); models.push( ...Object.values(import_tts.SUPPORTED_TTS_MODELS).map( (modelRef) => (0, import_audio.defineCompatOpenAISpeechModel)({ name: modelRef.name, client, pluginOptions, modelRef }) ) ); models.push( ...Object.values(import_whisper.SUPPORTED_WHISPER_MODELS).map( (modelRef) => (0, import_whisper.defineOpenAIWhisperModel)({ name: modelRef.name, client, pluginOptions, modelRef }) ) ); models.push( ...Object.values(import_stt.SUPPORTED_STT_MODELS).map( (modelRef) => (0, import_audio.defineCompatOpenAITranscriptionModel)({ name: modelRef.name, client, pluginOptions, modelRef }) ) ); models.push( ...Object.values(import_dalle.SUPPORTED_IMAGE_MODELS).map( (modelRef) => (0, import_image.defineCompatOpenAIImageModel)({ name: modelRef.name, client, pluginOptions, modelRef, requestBuilder: modelRef.name.includes("gpt-image-1") ? import_dalle.gptImage1RequestBuilder : void 0 }) ) ); return models; }, resolver: createResolver(pluginOptions), listActions }); } const model = ((name, config) => { if (name.includes("gpt-image-1") || name.includes("dall-e")) { return (0, import_dalle.openAIImageModelRef)({ name, config }); } if (name.includes("tts")) { return (0, import_tts.openAISpeechModelRef)({ name, config }); } if (name.includes("whisper")) { return (0, import_whisper.openAIWhisperModelRef)({ name, config }); } if (name.includes("transcribe")) { return (0, import_stt.openAITranscriptionModelRef)({ name, config }); } return (0, import_gpt.openAIModelRef)({ name, config }); }); const embedder = ((name, config) => { return (0, import_genkit.embedderRef)({ name, config, configSchema: import_embedder2.TextEmbeddingConfigSchema, namespace: "openai" }); }); const openAI = Object.assign(openAIPlugin, { model, embedder }); var openai_default = openAI; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { openAI, openAIPlugin }); //# sourceMappingURL=index.js.map