@genkit-ai/compat-oai
Version:
Genkit AI framework plugin for OpenAI APIs.
100 lines • 3.02 kB
JavaScript
import { genkitPluginV2 } from "genkit/plugin";
import OpenAI from "openai";
import { compatOaiModelRef, defineCompatOpenAIModel } from "./model.mjs";
import { toModelName } from "./utils.mjs";
import {
SpeechConfigSchema,
TranscriptionConfigSchema,
compatOaiSpeechModelRef,
compatOaiTranscriptionModelRef,
defineCompatOpenAISpeechModel,
defineCompatOpenAITranscriptionModel
} from "./audio.mjs";
import { defineCompatOpenAIEmbedder } from "./embedder.mjs";
import {
ImageGenerationCommonConfigSchema,
compatOaiImageModelRef,
defineCompatOpenAIImageModel
} from "./image.mjs";
import {
ChatCompletionCommonConfigSchema,
compatOaiModelRef as compatOaiModelRef2,
defineCompatOpenAIModel as defineCompatOpenAIModel2,
openAIModelRunner
} from "./model.mjs";
import {
TranslationConfigSchema,
compatOaiTranslationModelRef,
defineCompatOpenAITranslationModel
} from "./translate.mjs";
const openAICompatible = (options) => {
let listActionsCache;
var client;
function createClient() {
if (client) return client;
const { apiKey, ...restofOptions } = options;
client = new OpenAI({
...restofOptions,
apiKey: apiKey === false ? "placeholder" : apiKey
});
return client;
}
return genkitPluginV2({
name: options.name,
async init() {
if (!options.initializer) {
return [];
}
return await options.initializer(createClient());
},
async resolve(actionType, actionName) {
if (options.resolver) {
return await options.resolver(createClient(), actionType, actionName);
} else {
if (actionType === "model") {
return defineCompatOpenAIModel({
name: toModelName(actionName, options.name),
client: createClient(),
pluginOptions: options,
modelRef: compatOaiModelRef({
name: actionName,
namespace: options.name
})
});
}
return void 0;
}
},
list: (
// Don't attempt to list models if apiKey set to false
options.listActions && options.apiKey !== false ? async () => {
if (listActionsCache) return listActionsCache;
listActionsCache = await options.listActions(createClient());
return listActionsCache;
} : void 0
)
});
};
var index_default = openAICompatible;
export {
ChatCompletionCommonConfigSchema,
ImageGenerationCommonConfigSchema,
SpeechConfigSchema,
TranscriptionConfigSchema,
TranslationConfigSchema,
compatOaiImageModelRef,
compatOaiModelRef2 as compatOaiModelRef,
compatOaiSpeechModelRef,
compatOaiTranscriptionModelRef,
compatOaiTranslationModelRef,
index_default as default,
defineCompatOpenAIEmbedder,
defineCompatOpenAIImageModel,
defineCompatOpenAIModel2 as defineCompatOpenAIModel,
defineCompatOpenAISpeechModel,
defineCompatOpenAITranscriptionModel,
defineCompatOpenAITranslationModel,
openAICompatible,
openAIModelRunner
};
//# sourceMappingURL=index.mjs.map