UNPKG

@just-every/ensemble

Version:

LLM provider abstraction layer with unified streaming interface

46 lines 2.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseModelProvider = void 0; const image_validation_js_1 = require("../utils/image_validation.cjs"); const retry_handler_js_1 = require("../utils/retry_handler.cjs"); class BaseModelProvider { providerId; provider_id; constructor(providerId) { this.providerId = providerId; this.provider_id = providerId; } async *createResponseStreamWithRetry(messages, model, agent) { const retryOptions = { maxRetries: agent.retryOptions?.maxRetries ?? 3, initialDelay: agent.retryOptions?.initialDelay ?? 1000, maxDelay: agent.retryOptions?.maxDelay ?? 30000, backoffMultiplier: agent.retryOptions?.backoffMultiplier ?? 2, onRetry: (error, attempt) => { console.error(`${this.providerId} error ${model}: Retry attempt ${attempt} after error:`, error.message || error); agent.retryOptions?.onRetry?.(error, attempt); }, }; if (agent.retryOptions?.additionalRetryableErrors) { retryOptions.retryableErrors = new Set([ ...(retryOptions.retryableErrors || []), ...agent.retryOptions.additionalRetryableErrors, ]); } if (agent.retryOptions?.additionalRetryableStatusCodes) { retryOptions.retryableStatusCodes = new Set([ ...(retryOptions.retryableStatusCodes || []), ...agent.retryOptions.additionalRetryableStatusCodes, ]); } yield* (0, retry_handler_js_1.retryStreamWithBackoff)(() => this.createResponseStream(messages, model, agent), retryOptions); } isValidBase64(str) { return (0, image_validation_js_1.isValidBase64)(str); } detectImageType(base64Data) { return (0, image_validation_js_1.detectImageType)(base64Data); } } exports.BaseModelProvider = BaseModelProvider; //# sourceMappingURL=base_provider.js.map