UNPKG

vantedge-ai-sdk

Version:
81 lines (79 loc) 2.86 kB
import { OpenAICompatibleChatLanguageModel, OpenAICompatibleCompletionLanguageModel, OpenAICompatibleEmbeddingModel, OpenAICompatibleImageModel } from '@ai-sdk/openai-compatible'; import { withoutTrailingSlash, loadApiKey } from '@ai-sdk/provider-utils'; // src/provider.ts var globalThreadId = null; function setGlobalThreadId(threadId) { globalThreadId = threadId; } function createVantEdgeAI(options = {}) { const baseURL = withoutTrailingSlash( options.baseURL ?? `${process.env.NEXT_PUBLIC_API_URL}` ); const getHeaders = () => ({ Authorization: `Bearer ${loadApiKey({ apiKey: options.apiKey ?? "1234567890", environmentVariableName: "VANTEDGEAI_API_KEY", description: "VantEdgeAI API key" })}`, ...options.headers }); const getCommonModelConfig = (modelType) => ({ provider: `vantedgeai.${modelType}`, url: ({ path }) => { const url = new URL(`${baseURL}${path}`); if (options.queryParams) { url.search = new URLSearchParams(options.queryParams).toString(); } return url.toString(); }, headers: getHeaders, fetch: options.fetch }); const createChatModel = (modelId, settings = {}) => { const customFetch = async (url, options2) => { if (options2?.body && (settings.threadId || globalThreadId)) { try { const body = JSON.parse(options2.body); body.threadId = settings.threadId || globalThreadId; options2.body = JSON.stringify(body); } catch (error) { console.warn( "Failed to parse request body for threadId injection:", error ); } } return globalThis.fetch(url, options2); }; return new OpenAICompatibleChatLanguageModel(modelId, settings, { ...getCommonModelConfig("chat"), defaultObjectGenerationMode: "tool", fetch: customFetch }); }; const createCompletionModel = (modelId, settings = {}) => new OpenAICompatibleCompletionLanguageModel( modelId, settings, getCommonModelConfig("completion") ); const createTextEmbeddingModel = (modelId, settings = {}) => new OpenAICompatibleEmbeddingModel( modelId, settings, getCommonModelConfig("embedding") ); const createImageModel = (modelId, settings = {}) => new OpenAICompatibleImageModel( modelId, settings, getCommonModelConfig("image") ); const provider = (modelId, settings) => createChatModel(modelId, settings); provider.completionModel = createCompletionModel; provider.chatModel = createChatModel; provider.textEmbeddingModel = createTextEmbeddingModel; provider.imageModel = createImageModel; return provider; } var vantedgeai = createVantEdgeAI(); export { createVantEdgeAI, setGlobalThreadId, vantedgeai }; //# sourceMappingURL=index.mjs.map //# sourceMappingURL=index.mjs.map