UNPKG

@aihubmix/ai-sdk-provider

Version:

> **🎉 10% discount!** Added app-code; this way, requesting all models through ai-sdk offers a 10% discount.

236 lines (232 loc) • 8.15 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { aihubmix: () => aihubmix, createAihubmix: () => createAihubmix }); module.exports = __toCommonJS(index_exports); // src/aihubmix-provider.ts var import_internal = require("@ai-sdk/openai/internal"); var import_internal2 = require("@ai-sdk/anthropic/internal"); var import_internal3 = require("@ai-sdk/google/internal"); var import_provider_utils = require("@ai-sdk/provider-utils"); // src/aihubmix-tools.ts var import_zod = require("zod"); var WebSearchPreviewParameters = import_zod.z.object({}); function webSearchPreviewTool({ searchContextSize, userLocation } = {}) { return { type: "provider-defined", id: "aihubmix.web_search_preview", args: { searchContextSize, userLocation }, parameters: WebSearchPreviewParameters }; } var aihubmixTools = { webSearchPreview: webSearchPreviewTool }; // src/aihubmix-provider.ts var AihubmixTranscriptionModel = class extends import_internal.OpenAITranscriptionModel { async doGenerate(options) { if (options.mediaType) { const mimeTypeMap = { "audio/mpeg": "mp3", "audio/mp3": "mp3", "audio/wav": "wav", "audio/flac": "flac", "audio/m4a": "m4a", "audio/mp4": "mp4", "audio/ogg": "ogg", "audio/webm": "webm", "audio/oga": "oga", "audio/mpga": "mpga" }; const extension = mimeTypeMap[options.mediaType]; if (extension) { const originalGetArgs = this.getArgs; this.getArgs = async function(args) { const result = await originalGetArgs.call(this, args); if (result.formData) { const fileEntry = result.formData.get("file"); if (fileEntry && typeof fileEntry === "object" && "name" in fileEntry) { try { const newFile = new File([fileEntry], `audio.${extension}`, { type: options.mediaType }); result.formData.set("file", newFile); } catch (error) { console.log("Failed to create new File object:", error); if (fileEntry && typeof fileEntry === "object" && "arrayBuffer" in fileEntry) { try { const arrayBuffer = await fileEntry.arrayBuffer(); const newFile = new File([arrayBuffer], `audio.${extension}`, { type: options.mediaType }); result.formData.set("file", newFile); console.log("Created new file from arrayBuffer with name:", `audio.${extension}`); } catch (bufferError) { console.log("Failed to create file from arrayBuffer:", bufferError); } } } } } return result; }; } } return super.doGenerate(options); } }; function createAihubmix(options = {}) { const getHeaders = () => ({ Authorization: `Bearer ${(0, import_provider_utils.loadApiKey)({ apiKey: options.apiKey, environmentVariableName: "AIHUBMIX_API_KEY", description: "Aihubmix" })}`, "APP-Code": "WHVL9885", "Content-Type": "application/json" }); const getTranscriptionHeaders = () => ({ Authorization: `Bearer ${(0, import_provider_utils.loadApiKey)({ apiKey: options.apiKey, environmentVariableName: "AIHUBMIX_API_KEY", description: "Aihubmix" })}`, "APP-Code": "WHVL9885" }); const url = ({ path, modelId }) => { const baseURL = "https://aihubmix.com/v1"; return `${baseURL}${path}`; }; const createChatModel = (deploymentName, settings = {}) => { const headers = getHeaders(); if (deploymentName.startsWith("claude-")) { return new import_internal2.AnthropicMessagesLanguageModel(deploymentName, { provider: "aihubmix.chat", baseURL: url({ path: "", modelId: deploymentName }), headers: { ...headers, "x-api-key": headers["Authorization"].split(" ")[1] }, supportedUrls: () => ({ "image/*": [/^https?:\/\/.*$/] }) }); } if ((deploymentName.startsWith("gemini") || deploymentName.startsWith("imagen")) && !deploymentName.endsWith("-nothink") && !deploymentName.endsWith("-search")) { return new import_internal3.GoogleGenerativeAILanguageModel( deploymentName, { provider: "aihubmix.chat", baseURL: "https://aihubmix.com/gemini/v1beta", headers: { ...headers, "x-goog-api-key": headers["Authorization"].split(" ")[1] }, generateId: () => `aihubmix-${Date.now()}`, supportedUrls: () => ({}) } ); } return new import_internal.OpenAIChatLanguageModel(deploymentName, { provider: "aihubmix.chat", url, headers: getHeaders, fetch: options.fetch }); }; const createCompletionModel = (modelId, settings = {}) => new import_internal.OpenAICompletionLanguageModel(modelId, { provider: "aihubmix.completion", url, headers: getHeaders, fetch: options.fetch }); const createEmbeddingModel = (modelId, settings = {}) => { return new import_internal.OpenAIEmbeddingModel(modelId, { provider: "aihubmix.embeddings", headers: getHeaders, url, fetch: options.fetch }); }; const createResponsesModel = (modelId) => new import_internal.OpenAIResponsesLanguageModel(modelId, { provider: "aihubmix.responses", url, headers: getHeaders }); const createImageModel = (modelId, settings = {}) => { return new import_internal.OpenAIImageModel(modelId, { provider: "aihubmix.image", url, headers: getHeaders, fetch: options.fetch }); }; const createTranscriptionModel = (modelId) => new AihubmixTranscriptionModel(modelId, { provider: "aihubmix.transcription", url, headers: getTranscriptionHeaders, fetch: options.fetch }); const createSpeechModel = (modelId) => new import_internal.OpenAISpeechModel(modelId, { provider: "aihubmix.speech", url, headers: getHeaders, fetch: options.fetch }); const provider = function(deploymentId, settings) { if (new.target) { throw new Error( "The Aihubmix model function cannot be called with the new keyword." ); } return createChatModel(deploymentId, settings); }; provider.languageModel = createChatModel; provider.chat = createChatModel; provider.completion = createCompletionModel; provider.responses = createResponsesModel; provider.embedding = createEmbeddingModel; provider.textEmbedding = createEmbeddingModel; provider.textEmbeddingModel = createEmbeddingModel; provider.image = createImageModel; provider.imageModel = createImageModel; provider.transcription = createTranscriptionModel; provider.transcriptionModel = createTranscriptionModel; provider.speech = createSpeechModel; provider.speechModel = createSpeechModel; provider.tools = aihubmixTools; return provider; } var aihubmix = createAihubmix(); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { aihubmix, createAihubmix }); //# sourceMappingURL=index.js.map