@genkit-ai/compat-oai
Version:
Genkit AI framework plugin for OpenAI APIs.
203 lines • 7.48 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_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