@just-every/ensemble
Version:
LLM provider abstraction layer with unified streaming interface
46 lines • 2.03 kB
JavaScript
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
;