Rewrite frontend as single self-contained HTML file — all CSS/JS inline, no external files to fail loading
This commit is contained in:
72
dist/config/stats.js
vendored
Normal file
72
dist/config/stats.js
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.createStats = void 0;
|
||||
exports.printStats = printStats;
|
||||
// Initialize stats object
|
||||
const createStats = () => ({
|
||||
totalFrames: 0,
|
||||
totalBatches: 0,
|
||||
totalVisionInputCost: 0,
|
||||
totalVisionOutputCost: 0,
|
||||
totalTTSCost: 0,
|
||||
totalCost: 0
|
||||
});
|
||||
exports.createStats = createStats;
|
||||
// Pricing constants (as of March 2025)
|
||||
const pricing = {
|
||||
vision: {
|
||||
openai: {
|
||||
'gpt-4o': {
|
||||
input: 0.0025,
|
||||
output: 0.01
|
||||
}
|
||||
},
|
||||
gemini: {
|
||||
'gemini-pro-vision': {
|
||||
input: 0.0025,
|
||||
output: 0.0025
|
||||
}
|
||||
}
|
||||
},
|
||||
tts: {
|
||||
openai: {
|
||||
'tts-1': 0.015,
|
||||
'tts-1-hd': 0.030
|
||||
}
|
||||
}
|
||||
};
|
||||
/**
|
||||
* Print out statistics
|
||||
* @param stats - Statistics object
|
||||
* @param settings - Configuration settings
|
||||
*/
|
||||
function printStats(stats, settings) {
|
||||
// Get the pricing for the selected providers
|
||||
const visionProvider = settings.visionProvider;
|
||||
const visionModel = settings.visionProviders[visionProvider].model;
|
||||
const ttsProvider = settings.ttsProvider;
|
||||
const ttsModel = settings.ttsProviders[ttsProvider].model;
|
||||
// Check if the pricing data exists
|
||||
const visionPricing = pricing.vision[visionProvider]?.[visionModel];
|
||||
const ttsPricing = pricing.tts[ttsProvider]?.[ttsModel];
|
||||
if (!visionPricing) {
|
||||
console.warn(`Warning: No pricing data for vision provider "${visionProvider}" and model "${visionModel}".`);
|
||||
}
|
||||
if (!ttsPricing) {
|
||||
console.warn(`Warning: No pricing data for TTS provider "${ttsProvider}" and model "${ttsModel}".`);
|
||||
}
|
||||
// Calculate prices using available pricing data
|
||||
const visionInputCost = visionPricing ? (stats.totalVisionInputCost * visionPricing.input / 1000) : 0;
|
||||
const visionOutputCost = visionPricing ? (stats.totalVisionOutputCost * visionPricing.output / 1000) : 0;
|
||||
const ttsCost = ttsPricing ? (stats.totalTTSCost * ttsPricing / 1000) : 0;
|
||||
const totalCost = visionInputCost + visionOutputCost + ttsCost;
|
||||
// Print out the stats
|
||||
console.log('\n=== STATISTICS ===');
|
||||
console.log(`Vision provider: ${visionProvider}, Model: ${visionModel}`);
|
||||
console.log(`TTS provider: ${ttsProvider}, Model: ${ttsModel}`);
|
||||
console.log(`Total vision input cost: ${visionInputCost.toFixed(4)}`);
|
||||
console.log(`Total vision output cost: ${visionOutputCost.toFixed(4)}`);
|
||||
console.log(`Total TTS cost: ${ttsCost.toFixed(4)}`);
|
||||
console.log(`Total cost: ${totalCost.toFixed(4)}`);
|
||||
}
|
||||
//# sourceMappingURL=stats.js.map
|
||||
Reference in New Issue
Block a user