UNPKG

vantedge-ai-sdk

Version:
1 lines 8.22 kB
{"version":3,"sources":["../src/provider.ts"],"names":["options"],"mappings":"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","file":"index.mjs","sourcesContent":["import type {\n LanguageModelV1,\n EmbeddingModelV1,\n ImageModelV1,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel,\n OpenAICompatibleImageModel,\n} from '@ai-sdk/openai-compatible';\nimport {\n type FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport type {\n VantEdgeAIChatSettings,\n VantEdgeAIChatModelId,\n} from './chat-settings';\nimport type {\n VantEdgeAICompletionModelId,\n VantEdgeAICompletionSettings,\n} from './completion-settings';\nimport type {\n VantEdgeAIEmbeddingModelId,\n VantEdgeAIEmbeddingSettings,\n} from './embedding-settings';\nimport type {\n VantEdgeAIImageSettings,\n VantEdgeAIImageModelId,\n} from './image-settings';\n\n// Import your model id and settings here.\n\nexport interface VantEdgeAIProviderSettings {\n /**\nVantEdgeAI API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nOptional custom url query parameters to include in request urls.\n*/\n queryParams?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface VantEdgeAIProvider {\n /**\nCreates a model for text generation.\n*/\n (\n modelId: VantEdgeAIChatModelId,\n settings?: VantEdgeAIChatSettings,\n ): LanguageModelV1;\n\n /**\nCreates a chat model for text generation.\n*/\n chatModel(\n modelId: VantEdgeAIChatModelId,\n settings?: VantEdgeAIChatSettings,\n ): LanguageModelV1;\n\n /**\nCreates a completion model for text generation.\n*/\n completionModel(\n modelId: VantEdgeAICompletionModelId,\n settings?: VantEdgeAICompletionSettings,\n ): LanguageModelV1;\n\n /**\nCreates a text embedding model for text generation.\n*/\n textEmbeddingModel(\n modelId: VantEdgeAIEmbeddingModelId,\n settings?: VantEdgeAIEmbeddingSettings,\n ): EmbeddingModelV1<string>;\n\n /**\nCreates an image model for image generation.\n*/\n imageModel(\n modelId: VantEdgeAIImageModelId,\n settings?: VantEdgeAIImageSettings,\n ): ImageModelV1;\n}\n\n// Global threadId context\nlet globalThreadId: string | null = null;\n\nexport function setGlobalThreadId(threadId: string) {\n globalThreadId = threadId;\n}\n\nexport function createVantEdgeAI(\n options: VantEdgeAIProviderSettings = {},\n): VantEdgeAIProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? `${process.env.NEXT_PUBLIC_API_URL}`,\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey ?? '1234567890',\n environmentVariableName: 'VANTEDGEAI_API_KEY',\n description: 'VantEdgeAI API key',\n })}`,\n ...options.headers,\n });\n\n interface CommonModelConfig {\n provider: string;\n url: ({ path }: { path: string }) => string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n }\n\n const getCommonModelConfig = (modelType: string): CommonModelConfig => ({\n provider: `vantedgeai.${modelType}`,\n url: ({ path }) => {\n const url = new URL(`${baseURL}${path}`);\n if (options.queryParams) {\n url.search = new URLSearchParams(options.queryParams).toString();\n }\n return url.toString();\n },\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (\n modelId: VantEdgeAIChatModelId,\n settings: VantEdgeAIChatSettings = {},\n ) => {\n // Create a custom fetch function that adds threadId to the request body\n const customFetch: FetchFunction = async (url, options) => {\n if (options?.body && (settings.threadId || globalThreadId)) {\n try {\n const body = JSON.parse(options.body as string);\n body.threadId = settings.threadId || globalThreadId;\n options.body = JSON.stringify(body);\n } catch (error) {\n console.warn(\n 'Failed to parse request body for threadId injection:',\n error,\n );\n }\n }\n\n // Use the original fetch function\n return globalThis.fetch(url, options);\n };\n\n return new OpenAICompatibleChatLanguageModel(modelId, settings, {\n ...getCommonModelConfig('chat'),\n defaultObjectGenerationMode: 'tool',\n fetch: customFetch,\n });\n };\n\n const createCompletionModel = (\n modelId: VantEdgeAICompletionModelId,\n settings: VantEdgeAICompletionSettings = {},\n ) =>\n new OpenAICompatibleCompletionLanguageModel(\n modelId,\n settings,\n getCommonModelConfig('completion'),\n );\n\n const createTextEmbeddingModel = (\n modelId: VantEdgeAIEmbeddingModelId,\n settings: VantEdgeAIEmbeddingSettings = {},\n ) =>\n new OpenAICompatibleEmbeddingModel(\n modelId,\n settings,\n getCommonModelConfig('embedding'),\n );\n\n const createImageModel = (\n modelId: VantEdgeAIImageModelId,\n settings: VantEdgeAIImageSettings = {},\n ) =>\n new OpenAICompatibleImageModel(\n modelId,\n settings,\n getCommonModelConfig('image'),\n );\n\n const provider = (\n modelId: VantEdgeAIChatModelId,\n settings?: VantEdgeAIChatSettings,\n ) => createChatModel(modelId, settings);\n\n provider.completionModel = createCompletionModel;\n provider.chatModel = createChatModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n provider.imageModel = createImageModel;\n\n return provider;\n}\n\n// Export default instance\nexport const vantedgeai = createVantEdgeAI();\n"]}