UNPKG

wranglebot

Version:

open source media asset management

161 lines 6.42 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import axios from "axios"; import Jimp from "jimp-compact"; import LogBot from "logbotjs"; class MLInterfaceSingleton { constructor(options) { this.token = options.token; this.url = options.url; } checkAuth() { return __awaiter(this, void 0, void 0, function* () { try { const response = yield axios.get(`${this.url}/api/auth`, { headers: { Authorization: `Bearer ${this.token}`, }, }); return response.data; } catch (e) { return false; } }); } getBalance() { return __awaiter(this, void 0, void 0, function* () { try { const response = yield axios.get(`${this.url}/api/balance`, { headers: { Authorization: `Bearer ${this.token}`, }, }); return response.data.balance; } catch (e) { LogBot.log(400, "Error getting balance"); return -1; } }); } analyseFrames(options) { return __awaiter(this, void 0, void 0, function* () { const frames = options.frames; if (frames.length === 0) { throw new Error("No frames provided"); } const metafile = options.metafile; if (!metafile) { throw new Error("No metafile provided"); } if (metafile.thumbnails.length === 0) { throw new Error("Metafile has no thumbnails generated"); } let thumbnails = frames.map((f) => { const t = metafile.getThumbnail(f, "id"); if (!t) { throw new Error("Thumbnail not found"); } return t; }); const responses = []; let cost = 0; const renderedFrames = []; for (let thumbnail of thumbnails) { const image = Jimp.read(Buffer.from(thumbnail.data, "base64")); const waitForResizedImage = () => { return new Promise((resolve) => { image.then((image) => { image .background(0x000000) .resize(512, 512) .getBase64(Jimp.MIME_JPEG, (err, data) => { resolve(data); }); }); }); }; const resizedImage = yield waitForResizedImage(); const resizedImageWithoutHeader = resizedImage.substring(resizedImage.indexOf(",") + 1); renderedFrames.push(resizedImageWithoutHeader); } if (options.engine === "aleph-alpha") { for (let imageData of renderedFrames) { const requestData = { model: "luminous-extended", prompt: [ { type: "image", data: imageData, }, { type: "text", data: options.prompt, }, ], max_tokens: options.max_tokens || 64, stop_sequences: options.stop_sequences || ["\n"], temperature: options.temperature || 0.5, }; try { const result = yield axios.post(this.url + "/api/prompt/aleph-alpha", requestData, { headers: { Authorization: `Bearer ${this.token}`, }, }); responses.push(result.data.response.trim()); cost += result.data.usage.cost; } catch (e) { throw new Error(e.response.data.message || e.message); } } } else if (options.engine === "deepva") { const requestData = { frames: renderedFrames, }; try { const result = yield axios.post(this.url + "/api/prompt/deepva", requestData, { headers: { Authorization: `Bearer ${this.token}`, }, }); responses.push(...result.data.response); cost += result.data.usage.cost; } catch (e) { throw new Error(e.response.data.message || e.message); } } else { throw new Error("Engine not supported"); } return { response: responses.join(","), cost: cost, }; }); } } let MLInterfaceInstance; const MLInterface = function (options = undefined) { if (MLInterfaceInstance) { return MLInterfaceInstance; } if (!MLInterfaceInstance && options) { MLInterfaceInstance = new MLInterfaceSingleton(options); return MLInterfaceInstance; } throw new Error("Can not create MLInterface. No options provided"); }; export { MLInterface }; //# sourceMappingURL=MLInterface.js.map