@llumiverse/common
Version:
Public types, enums and options used by Llumiverse API.
52 lines • 2.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getModelCapabilities = getModelCapabilities;
exports.supportsToolUse = supportsToolUse;
exports.modelModalitiesToArray = modelModalitiesToArray;
const bedrock_js_1 = require("./capability/bedrock.js");
const openai_js_1 = require("./capability/openai.js");
const vertexai_js_1 = require("./capability/vertexai.js");
function getModelCapabilities(model, provider) {
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 "vertexai":
return (0, vertexai_js_1.getModelCapabilitiesVertexAI)(model);
case "openai":
return (0, openai_js_1.getModelCapabilitiesOpenAI)(model);
case "bedrock":
return (0, bedrock_js_1.getModelCapabilitiesBedrock)(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