@genkit-ai/compat-oai
Version:
Genkit AI framework plugin for OpenAI APIs.
86 lines • 2.27 kB
JavaScript
import {
GenkitError,
modelActionMetadata
} from "genkit";
import { logger } from "genkit/logging";
import { openAICompatible } from "../index.js";
import { defineCompatOpenAIModel } from "../model.js";
import {
deepSeekModelRef,
deepSeekRequestBuilder,
SUPPORTED_DEEPSEEK_MODELS
} from "./deepseek.js";
const resolver = async (ai, client, actionType, actionName) => {
if (actionType === "model") {
const modelRef = deepSeekModelRef({
name: `deepseek/${actionName}`
});
defineCompatOpenAIModel({
ai,
name: modelRef.name,
client,
modelRef,
requestBuilder: deepSeekRequestBuilder
});
} else {
logger.warn("Only model actions are supported by the DeepSeek plugin");
}
};
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: `deepseek/${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."
});
}
return openAICompatible({
name: "deepseek",
baseURL: "https://api.deepseek.com",
apiKey,
...options,
initializer: async (ai, client) => {
Object.values(SUPPORTED_DEEPSEEK_MODELS).forEach(
(modelRef) => defineCompatOpenAIModel({
ai,
name: modelRef.name,
client,
modelRef,
requestBuilder: deepSeekRequestBuilder
})
);
},
resolver,
listActions
});
}
const model = (name, config) => {
return deepSeekModelRef({
name: `deepseek/${name}`,
config
});
};
const deepSeek = Object.assign(deepSeekPlugin, {
model
});
var deepseek_default = deepSeek;
export {
deepSeek,
deepSeekPlugin,
deepseek_default as default
};
//# sourceMappingURL=index.mjs.map