UNPKG

@genkit-ai/compat-oai

Version:

Genkit AI framework plugin for OpenAI APIs.

90 lines 2.43 kB
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