UNPKG

sambanova

Version:

TypeScript/Javascript client for Sambanova AI API with comprehensive model support

47 lines (46 loc) 2.01 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getBase64Image = exports.validateMessage = exports.isVisionModel = exports.sleep = void 0; const types_1 = require("./types"); const fs_1 = __importDefault(require("fs")); const axios_1 = __importDefault(require("axios")); const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); exports.sleep = sleep; const isVisionModel = (model) => { return model.toLowerCase().includes('vision'); }; exports.isVisionModel = isVisionModel; const validateMessage = (message, isVision) => { if (Array.isArray(message.content)) { if (!isVision) { throw new types_1.SambanovaError('Array content is only supported for vision models', 400, 'INVALID_MESSAGE_FORMAT'); } } else if (isVision) { throw new types_1.SambanovaError('Vision models require array content format', 400, 'INVALID_MESSAGE_FORMAT'); } }; exports.validateMessage = validateMessage; const getBase64Image = async (pathOrUrl) => { try { if (pathOrUrl.startsWith('http')) { const response = await axios_1.default.get(pathOrUrl, { responseType: 'arraybuffer' }); const base64Image = Buffer.from(response.data, 'binary').toString('base64'); const mimeType = response.headers['content-type']; return `data:${mimeType};base64,${base64Image}`; } else { const image = fs_1.default.readFileSync(pathOrUrl); const base64Image = image.toString('base64'); const mimeType = 'image/jpeg'; return `data:${mimeType};base64,${base64Image}`; } } catch (error) { throw new Error(`Failed to process image: ${pathOrUrl}. Error: ${error}`); } }; exports.getBase64Image = getBase64Image;