UNPKG

@genkit-ai/compat-oai

Version:

Genkit AI framework plugin for OpenAI APIs.

203 lines 7.48 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_tts = require("./tts.js"); var import_whisper = require("./whisper.js"); const UNSUPPORTED_MODEL_MATCHERS = ["babbage", "davinci", "codex"]; const resolver = async (ai, client, actionType, actionName) => { if (actionType === "embedder") { (0, import_embedder.defineCompatOpenAIEmbedder)({ ai, name: `openai/${actionName}`, client }); } else if (actionName.includes("gpt-image-1") || actionName.includes("dall-e")) { const modelRef = (0, import_dalle.openAIImageModelRef)({ name: `openai/${actionName}` }); (0, import_image.defineCompatOpenAIImageModel)({ ai, name: modelRef.name, client, modelRef }); } else if (actionName.includes("tts")) { const modelRef = (0, import_tts.openAISpeechModelRef)({ name: `openai/${actionName}` }); (0, import_audio.defineCompatOpenAISpeechModel)({ ai, name: modelRef.name, client, modelRef }); } else if (actionName.includes("whisper") || actionName.includes("transcribe")) { const modelRef = (0, import_whisper.openAITranscriptionModelRef)({ name: `openai/${actionName}` }); (0, import_audio.defineCompatOpenAITranscriptionModel)({ ai, name: modelRef.name, client, modelRef }); } else { const modelRef = (0, import_gpt.openAIModelRef)({ name: `openai/${actionName}` }); (0, import_model.defineCompatOpenAIModel)({ ai, name: modelRef.name, client, 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: `openai/${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: `openai/${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: `openai/${model2.id}` }); return (0, import_genkit.modelActionMetadata)({ name: modelRef.name, info: modelRef.info, configSchema: modelRef.configSchema }); } else if (model2.id.includes("whisper") || model2.id.includes("transcribe")) { const modelRef = import_whisper.SUPPORTED_STT_MODELS[model2.id] ?? (0, import_whisper.openAITranscriptionModelRef)({ name: `openai/${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: `openai/${model2.id}` }); return (0, import_genkit.modelActionMetadata)({ name: modelRef.name, info: modelRef.info, configSchema: modelRef.configSchema }); } }) ); }; function openAIPlugin(options) { return (0, import__.openAICompatible)({ name: "openai", ...options, initializer: async (ai, client) => { Object.values(import_gpt.SUPPORTED_GPT_MODELS).forEach( (modelRef) => (0, import_model.defineCompatOpenAIModel)({ ai, name: modelRef.name, client, modelRef }) ); Object.values(import_embedder2.SUPPORTED_EMBEDDING_MODELS).forEach( (embedderRef2) => (0, import_embedder.defineCompatOpenAIEmbedder)({ ai, name: embedderRef2.name, client, embedderRef: embedderRef2 }) ); Object.values(import_tts.SUPPORTED_TTS_MODELS).forEach( (modelRef) => (0, import_audio.defineCompatOpenAISpeechModel)({ ai, name: modelRef.name, client, modelRef }) ); Object.values(import_whisper.SUPPORTED_STT_MODELS).forEach( (modelRef) => (0, import_audio.defineCompatOpenAITranscriptionModel)({ ai, name: modelRef.name, client, modelRef }) ); Object.values(import_dalle.SUPPORTED_IMAGE_MODELS).forEach( (modelRef) => (0, import_image.defineCompatOpenAIImageModel)({ ai, name: modelRef.name, client, modelRef, requestBuilder: modelRef.name.includes("gpt-image-1") ? import_dalle.gptImage1RequestBuilder : void 0 }) ); }, resolver, listActions }); } const model = (name, config) => { if (name.includes("gpt-image-1") || name.includes("dall-e")) { return (0, import_dalle.openAIImageModelRef)({ name: `openai/${name}`, config }); } if (name.includes("tts")) { return (0, import_tts.openAISpeechModelRef)({ name: `openai/${name}`, config }); } if (name.includes("whisper") || name.includes("transcribe")) { return (0, import_whisper.openAITranscriptionModelRef)({ name: `openai/${name}`, config }); } return (0, import_gpt.openAIModelRef)({ name: `openai/${name}`, config }); }; const embedder = (name, config) => { return (0, import_genkit.embedderRef)({ name: `openai/${name}`, config, configSchema: import_embedder2.TextEmbeddingConfigSchema }); }; 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