@genkit-ai/compat-oai
Version:
Genkit AI framework plugin for OpenAI APIs.
90 lines • 2.43 kB
JavaScript
import {
GenkitError,
modelActionMetadata
} from "genkit";
import { logger } from "genkit/logging";
import { openAICompatible } from "../index.mjs";
import { defineCompatOpenAIModel } from "../model.mjs";
import {
deepSeekModelRef,
deepSeekRequestBuilder,
SUPPORTED_DEEPSEEK_MODELS
} from "./deepseek.mjs";
function createResolver(pluginOptions) {
return async (client, actionType, actionName) => {
if (actionType === "model") {
const modelRef = deepSeekModelRef({
name: actionName
});
return defineCompatOpenAIModel({
name: modelRef.name,
client,
pluginOptions,
modelRef,
requestBuilder: deepSeekRequestBuilder
});
} else {
logger.warn("Only model actions are supported by the DeepSeek plugin");
return void 0;
}
};
}
const listActions = async (client) => {
return await client.models.list().then(
(response) => response.data.filter((model2) => model2.object === "model").map((model2) => {
const modelRef = SUPPORTED_DEEPSEEK_MODELS[model2.id] ?? deepSeekModelRef({
name: model2.id
});
return modelActionMetadata({
name: modelRef.name,
info: modelRef.info,
configSchema: modelRef.configSchema
});
})
);
};
function deepSeekPlugin(options) {
const apiKey = options?.apiKey ?? process.env.DEEPSEEK_API_KEY;
if (!apiKey) {
throw new GenkitError({
status: "FAILED_PRECONDITION",
message: "Please pass in the API key or set the DEEPSEEK_API_KEY environment variable."
});
}
const pluginOptions = { name: "deepseek", ...options };
return openAICompatible({
name: "deepseek",
baseURL: "https://api.deepseek.com",
apiKey,
...options,
initializer: async (client) => {
return Object.values(SUPPORTED_DEEPSEEK_MODELS).map(
(modelRef) => defineCompatOpenAIModel({
name: modelRef.name,
client,
pluginOptions,
modelRef,
requestBuilder: deepSeekRequestBuilder
})
);
},
resolver: createResolver(pluginOptions),
listActions
});
}
const model = ((name, config) => {
return deepSeekModelRef({
name,
config
});
});
const deepSeek = Object.assign(deepSeekPlugin, {
model
});
var deepseek_default = deepSeek;
export {
deepSeek,
deepSeekPlugin,
deepseek_default as default
};
//# sourceMappingURL=index.mjs.map