@genkit-ai/compat-oai
Version:
Genkit AI framework plugin for OpenAI APIs.
265 lines • 9 kB
JavaScript
;
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