UNPKG

@llumiverse/common

Version:

Public types, enums and options used by Llumiverse API.

64 lines 2.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getModelCapabilities = getModelCapabilities; exports.supportsToolUse = supportsToolUse; exports.modelModalitiesToArray = modelModalitiesToArray; const azure_foundry_js_1 = require("./capability/azure_foundry.js"); const bedrock_js_1 = require("./capability/bedrock.js"); const openai_js_1 = require("./capability/openai.js"); const vertexai_js_1 = require("./capability/vertexai.js"); const types_js_1 = require("./types.js"); function getModelCapabilities(model, provider) { //Check for locations/<location>/ prefix and remove it if (model.startsWith("locations/")) { const parts = model.split("/"); if (parts.length >= 3) { model = parts.slice(2).join("/"); } } const capabilities = _getModelCapabilities(model, provider); // Globally disable audio and video for all models, as we don't support them yet // We also do not support tool use while streaming // TODO: Remove this when we add support. capabilities.input.audio = false; capabilities.output.audio = false; capabilities.output.video = false; capabilities.tool_support_streaming = false; return capabilities; } function _getModelCapabilities(model, provider) { switch (provider?.toLowerCase()) { case types_js_1.Providers.vertexai: return (0, vertexai_js_1.getModelCapabilitiesVertexAI)(model); case types_js_1.Providers.openai: return (0, openai_js_1.getModelCapabilitiesOpenAI)(model); case types_js_1.Providers.bedrock: return (0, bedrock_js_1.getModelCapabilitiesBedrock)(model); case types_js_1.Providers.azure_foundry: // Azure Foundry uses OpenAI capabilities return (0, azure_foundry_js_1.getModelCapabilitiesAzureFoundry)(model); default: // Guess the provider based on the model name if (model.startsWith("gpt")) { return (0, openai_js_1.getModelCapabilitiesOpenAI)(model); } else if (model.startsWith("publishers/")) { return (0, vertexai_js_1.getModelCapabilitiesVertexAI)(model); } else if (model.startsWith("arn:aws")) { return (0, bedrock_js_1.getModelCapabilitiesBedrock)(model); } // Fallback to a generic model with no capabilities return { input: {}, output: {} }; } } function supportsToolUse(model, provider, streaming = false) { const capabilities = getModelCapabilities(model, provider); return streaming ? !!capabilities.tool_support_streaming : !!capabilities.tool_support; } function modelModalitiesToArray(modalities) { return Object.entries(modalities) .filter(([_, isSupported]) => isSupported) .map(([modality]) => modality); } //# sourceMappingURL=capability.js.map