UNPKG

@wavequery/conductor

Version:
92 lines 3.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EvalRunner = void 0; const logger_1 = require("@/utils/logger"); const server_1 = require("@/visualization/server"); const evaluators_1 = require("./evaluators"); class EvalRunner { constructor(config) { this.config = config; this.logger = new logger_1.Logger({ level: logger_1.LogLevel.DEBUG, prefix: "EvalRunner", }); this.evaluators = [ new evaluators_1.AutomatedEvaluator(config), new evaluators_1.HumanEvaluator(config), new evaluators_1.CustomEvaluator(config), ]; if (config.visualization) { this.initializeVizServer(); } } initializeVizServer() { this.vizServer = new server_1.VizServer(undefined, { theme: "light", }); } async runEvaluation(input, expected) { const startTime = Date.now(); const allResults = []; try { for (const evaluator of this.evaluators) { try { const results = await evaluator.evaluate(input, expected); allResults.push(...results); if (this.config.visualization) { await this.visualizeResults(results); } } catch (error) { this.logger.error(`Evaluator failed:`, error); } } const aggregatedResults = this.aggregateResults(allResults); this.logger.info("Evaluation completed", { duration: Date.now() - startTime, totalMetrics: aggregatedResults.length, }); return aggregatedResults; } catch (error) { this.logger.error("Evaluation failed:", error); throw error; } } async visualizeResults(results) { if (!this.vizServer) return; const nodes = results.map((result) => ({ id: `metric-${result.metricName}`, type: 'metric', label: result.metricName, data: { score: result.score, metadata: result.metadata, }, status: result.score >= (this.config.threshold || 0.7) ? "completed" : "warning", })); this.vizServer.updateGraph({ nodes, edges: [] }); } aggregateResults(results) { const { aggregation = "mean" } = this.config; if (aggregation === "weighted") { return results.map((result) => { const weight = this.config.metrics.find((m) => m.name === result.metricName) ?.weight || 1; return { ...result, score: result.score * weight, }; }); } return results; } async cleanup() { if (this.vizServer) { await this.vizServer.close(); } } } exports.EvalRunner = EvalRunner; //# sourceMappingURL=eval-runner.js.map